Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



CooCox CooIDE

Сообщений 1 страница 30 из 42

1

Есть ещё и такая штука для STM32 с кучей примочек.  Пока потихоньку осваиваю.

0

2

-NMi- написал(а):

Есть ещё и такая штука для STM32 с кучей примочек.

Читал про него тоже...
Например:
https://myklad.org/3/7/4/coocox-coide-1 … v-arm.html

Судя по описаниям - проект умер...
Стоит ли углубляться в прошлое ? ;)
Поддержка будет вряд ли, а "железо" на месте не стоит...

0

3

А тогда что взять за основу?  Еклипс?

0

4

-NMi- написал(а):

А тогда что взять за основу?  Еклипс?

Тут я невеликий советчик... ;)
Пока отложил это направление...

0

5

Я общался с программистами на STM. Они говорят, что нет очень большой разницы между платформами и с небольшими переделками всё успешно мигрируется с платформы на платформу.

0

6

-NMi- написал(а):

Я общался с программистами на STM. Они говорят, что нет очень большой разницы между платформами и с небольшими переделками всё успешно мигрируется с платформы на платформу.

Ну, если так, то - удачи в работе !
Я просто высказал свое мнение... ;)

PS. Хотя "на сейчас" с радостью бы откатился с Win7 на WinXP, но материнка с ее "проверкой легетимности" (AsusP5B) на дает... Выбрасывает на первых шагах установки...

0

7

-NMi- написал(а):

Есть ещё и такая штука для STM32 с кучей примочек.

Кокос не тормозит при запуске и работе?

Nord написал(а):

материнка с ее "проверкой легетимности" (AsusP5B) на дает

На нее WinXP не ставится?
На официальном сайте для нее есть драйвера даже для Win98 и DOS не говоря уже про WinXP.
WinXP должна устанавливаться. Возможно дело в драйвере диска.

0

8

Тормозит при запуске, в инете поди что ищет.
Компилирует раз а 10 медленнее баскома.
Ооочень там всё не просто, сначала нужно точно и конкретно знать то, что ты хочешь и как это будет хотя-бы примерно выглядеть - и только потом уже кодить.
Например с операционкой или без подходы вААще разные.
В общем примерно всё одно и то-же, только вот там синтаксис пипец нИпанятный, сижу и тихо офигеваю.
Ну а куда деваться... 16 мГц уже маловасто! )))

0

9

Чего это он "умер"? Слухи? )))
Последнее обновление - 05.10.2017
http://www.coocox.org/software.html
Он бесплатный для М1 М0 М3 М4 семейств ARM...но до М7 еще есть простор )))

Отредактировано access777 (2018-01-06 18:53:31)

0

10

-NMi- написал(а):

Тормозит при запуске, в инете поди что ищет.
Компилирует раз а 10 медленнее баскома.

Это одна из причин почему отказался от кокоса.
EmBitz запускается быстрее и компилирует также быстрее, за счет использования всех ядер процессора.

0

11

Пётр написал(а):

На нее WinXP не ставится?На официальном сайте для нее есть драйвера даже для Win98 и DOS не говоря уже про WinXP.WinXP должна устанавливаться. Возможно дело в драйвере диска.

Ставилась на нее хрюша до какого-то времени, но только из одной сборки, которую мне таки дали в магазине, где ее и брал когда-то.
Хорошо, что там работали знакомые ребята.
Они же и рассказали про "уникальнось" этой материнки...
В 2016-м при попытке переустановить систему вывалилось сообщение (уже не помню дословно), что "данная ОС не поддерживается".
Можно перепрошить биос, но уже попадал на неудачные попытки с другими материнками и экспериментировать не хочется...
А 7-ка меня не устраивает в первую очередь своим желанием занять все свободное место на разделе... ;)
Из 60 гигов она оставила на сегодняшний день менее 6...
При этом устанавливаемые программы в основной массе на других разделах...

Отредактировано Nord (2018-01-06 19:20:17)

0

12

Значит ставь 10-ку  :D

0

13

-NMi- написал(а):

Значит ставь 10-ку

Ага... ;) Та сожрет, что осталось и другие разделы ? ;)

0

14

Не знаю что у тебя за беда... и 7-ка и 10-ка ничего не "жрут". Может что в настройках или "гриппер" какой зацепил???
Да и BIOS перепрошить дело плёвое... неужели нет программатора???

0

15

-NMi- написал(а):

Не знаю что у тебя за беда... и 7-ка и 10-ка ничего не "жрут". Может что в настройках или "гриппер" какой зацепил???Да и BIOS перепрошить дело плёвое... неужели нет программатора???

Оставим этот вопрос... ;)
А то проснутся рожденственские модераторы - они злее июньских комаров ! ;)

0

16

Как настроить АЦП,вход PA1,надо 8 бит на максимально быстрой скоростью с записью в DMA?
Пытаюсь переделать LORI на STM32F303,хочу на его примере освоить COOCOX
Мигание светодиодом,опрос кнопок опробовал,программатор ST-LINK,плата по этой схеме (плюс светодиод на PORTC.13 и кнопка на PORTB.0 ссылка
http://s3.uploads.ru/t/256uK.jpg

Управление дисплеем работает (инит,рисование точек,вывод символов)

0

17

Mavkid написал(а):

Пытаюсь переделать LORI на STM32F303

Изначально проект для 103, который отличается от 303. Если нет времени изучать документацию, ищите в сети примеры работы с АЦП и DMA для 303 и переделывайте код по аналогии.

0

18

Ну так и делаю,я не могу найти пример где АЦП в режиме 8 бит...

0

19

Mavkid написал(а):

я не могу найти пример где АЦП в режиме 8 бит

АЦП настраивается используя SPL? Тогда в поле ADC_Resolution экземпляра структуры ADC_InitTypeDef нужно указать параметр ADC_Resolution_8b.
Если настройка через регистры, смотрите описание регистра CFGR. Разрешение задается в 3 и 4 бите.

0

20

Не доходит как...
Ладно-проехали,думаю ставить внешний АЦП-мне проще снять данные с него
Спасибо за помощь!
("АЦП настраивается используя SPL?"-а что это?)

0

21

Mavkid написал(а):

Не доходит как...

В коде нашли место где настраивается АЦП?
Это функция adc_and_dma_init из файла ADC.c. Там есть строка

Код:
// настройки ADC
ADC_InitTypeDef ADC_InitStructure;

Так вот, после нее пишите

Код:
ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;

Кроме этого, вообще код нужно адаптировать под 303.

Mavkid написал(а):

думаю ставить внешний АЦП-мне проще снять данные с него

Если важно снимать данные с максимальной скоростью, вероятно со встроенным будет быстрее за счет DMA (если все правильно настроить).

Mavkid написал(а):

SPL?"-а что это?

SPL это Standard Peripheral Libraries - библиотека функций упрощающая настройку периферии чтобы не приходилось от и до изучать все регистры МК.

0

22

Спасибо!
АЦП сразу хотел ставить,AD9280,буду переделывать плату
"ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;" нашел,было ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;

0

23

Используя встроенный АЦП в 8-ми битном и в сдвоенном режиме, теоретически можно получить скорость оцифровки около 14 Msps. Не думаю что читать из внешнего АЦП получится быстрее. Ведь тактовая частота МК 72 МГц и при 14 миллионах выборок, число тактов между ними около 5. При внешнем АЦП за это время нужно прочитать данные и поместить в массив. На это 5 тактов не хватит.

0

24

как 5 тактов не хватит? BASCOM Avr атмега328 надо всего 3 такта,а тут больше?
$asm
IN R16, PIND
STS {osc(1)}, R16
IN R16, PIND
STS {osc(2)}, R16
IN R16, PIND
STS {osc(3)}, R16
IN R16, PIND
STS {osc(4)}, R16
IN R16, PIND
STS {osc(5)}, R16
IN R16, PIND
STS {osc(6)}, R16
IN R16, PIND
STS {osc(7)}, R16
IN R16, PIND
STS {osc(8)}, R16
IN R16, PIND
STS {osc(9)}, R16
IN R16, PIND
STS {osc(10)}, R16
......
$end Asm

0

25

К тому же с внешним ацп меньше шумов...
ОК,буду рыть с внутренним ацп-опыта набираться

(хана гуглу- сейчас я его замучаю  :angry: )

0

26

Mavkid написал(а):

BASCOM Avr атмега328 надо всего 3 такта,а тут больше?

Код на ассемблере. Для ARM он (ассемблер) совсем другой.
Нужно учитывать что возможны циклы ожидания при обмене через матрицу шин и то что асм код будет выполнятся скажем 8 тактов совсем не значит что в реальности будет именно так. Нужно еще учесть работу конвейера.
Чтобы узнать за сколько тактов будут скопированы данные, нужно запустить код под отладчиком и замерить время выполнения с помощью DWT или таймера.

0

27

Не получается

Код:
void initialization()
{
	Delay_Init();
Config_SPI_Pins_n_Display();
ls020_init();
    // Включаем тактирование DMA1, ADC12 и GPIOA
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

    // Настраиваем пин на работу в режиме аналогового входа
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // Настройки DMA          http://www.avislab.com/blog/stm32-dma_ru/
    DMA_DeInit(DMA1_Channel1);
    // Данные будем брать из регистра данных ADC1
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(ADC1->DR);//адрес периферийного устройства
    // Переправлять данные будем в переменную ADC_Results_Buffer;
    DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t)ADC_Results_Buffer[0];//(uint32_t)&ADC_Result;
    // Передача данных из периферии в память
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
    // Размер буфера
    DMA_InitStructure.DMA_BufferSize = DMA_BUFF_SIZE;
    // Адрес источника данных не инкрементируем - он всегда один и
    // тот же
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    // Аналогично, и с памятью
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
    // Настройки размера данных
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
    DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;//Приоритет (VeryHigh наивысший, High высокий, Medium средний, Low низкий)
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;// Отключить режим передачи от памяти к памяти
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);

    // Включаем первый канал DMA1
    DMA_Cmd(DMA1_Channel1, ENABLE);

    // Настраиваем тактирование АЦП
    RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div2);

    ADC_StructInit(&ADC_InitStructure);

    // Калибровка АЦП
    ADC_VoltageRegulatorCmd(ADC1, ENABLE);
    ADC_SelectCalibrationMode(ADC1, ADC_CalibrationMode_Single);
    ADC_StartCalibration(ADC1);

    // Настраиваем непрерывные преобразования
    ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_CommonInitStructure.ADC_Clock = ADC_Clock_AsynClkMode;
    ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
    ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_OneShot;
    ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0;
    ADC_CommonInit(ADC1, &ADC_CommonInitStructure);

    // Включаем работу ДМА через АЦП
    ADC_DMACmd(ADC1, ENABLE);
    ADC_DMAConfig(ADC1, ADC_DMAMode_Circular);

    while(ADC_GetCalibrationStatus(ADC1) != RESET );

    // Продолжается настройка АЦП
    ADC_InitStructure.ADC_ContinuousConvMode =ENABLE; // измерение ADC_ContinuousConvMode_Enable;
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ExternalTrigConvEvent = ADC_ExternalTrigConvEvent_0;
    ADC_InitStructure.ADC_ExternalTrigEventEdge = ADC_ExternalTrigEventEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//выравнивание битов результат - прижать вправо
    ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable;
    ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable;
    ADC_InitStructure.ADC_NbrOfRegChannel = 1; //количество каналов
    ADC_Init(ADC1, &ADC_InitStructure);

    //Ну и тут мы все включаем и поехали
         ADC_DMAConfig(ADC1, ADC_DMAMode_Circular);
         ADC_DMACmd(ADC1, ENABLE);
         DMA_Cmd(DMA1_Channel1, ENABLE);
         ADC_Cmd(ADC1, ENABLE);
         while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY));
    //ls020_setka();



}

/*******************************************************************/

int main(void)
{
    initialization();
    //while(1){ADC_StartConversion(ADC1); }
    ADC_StartConversion(ADC1);
    while(1)
    {


    	// Замер - начало
    	ls020_fillrect(0, 0, maxX, maxY, Red);delay_ms(100);
    	DMA_Cmd(DMA1_Channel1, DISABLE);// Отключаем DMA канал
    	DMA1_Channel1->CNDTR  =  DMA_BUFF_SIZE;// Количество пересылаемых значений
    	DMA1->IFCR           |=  DMA_IFCR_CTCIF1;	// Сбрасываем флаг окончания обмена
    	ADC_DMAConfig(ADC1, ADC_DMAMode_Circular);
    	         ADC_DMACmd(ADC1, ENABLE);
    	         DMA_Cmd(DMA1_Channel1, ENABLE);
    	         ADC_Cmd(ADC1, ENABLE);
    	         while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY));//Включаем DMA
    	//ADC_DMACmd(ADC1, ENABLE);
    	//ADC_Cmd(ADC1, ENABLE);
    	ls020_fillrect(0, 0, maxX, maxY, Green);delay_ms(100);---[b]вот здесь программа стоит на месте[/b]
    	while(!(DMA1->ISR & DMA_ISR_TCIF1));//Ждем заполнения DMA
    	ls020_fillrect(0, 0, maxX, maxY, 0x00);//delay_ms(100);
    	ls020_setka();
    	delay_ms(100);

    }
}

0

28

bulat943 написал(а):

DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t)ADC_Results_Buffer[0];

Адрес находится в первом элементе массива? Скорее всего имелось в виду

Код:
DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t) &ADC_Results_Buffer[0];
bulat943 написал(а):

ls020_fillrect(0, 0, maxX, maxY, Green);delay_ms(100);---вот здесь программа стоит на месте

Если в строке выше, в первом элементе массива не адрес буфера, а данные, скорее всего программа уходит в прерывание HardFault или аналогичное, вызываемое при ошибке. Я о нем писал (правда МК другой). Отладка программы
Попробуйте в момент зависания остановить отладчик и посмотрите на какую строку он укажет.

0

29

Скорее всего нет флага заполнения DMA,частично победил,но работает минута две и виснет
Еще снятие семплов ровно в 2 раза ниже чем указано в таблице

http://img.radiokot.ru/files/47902/medium/c49ekbv9x.png
Как запустить отладчик я не знаю-мой STLINK V2 кокос не видит,прошиваю через STM32 ST-LINK Utiliti
Исходник сейчас немного изменил,позже выложу

Черт меня дернул изучать эти стм,но теперь дороги назад нет-интересно узнать что и как...

Отредактировано bulat943 (2019-10-29 17:29:54)

0

30

bulat943 написал(а):

Еще снятие семплов ровно в 2 раза ниже чем указано в таблице

Т. е. 2.5 миллиона в секунду?
Каким образом это было измерено? Попробуйте переводить ядро в спящий режим (Sleep) чтобы программа не выполнялась и не мешала DMA копировать данные.

bulat943 написал(а):

Как запустить отладчик я не знаю-мой STLINK V2 кокос не видит,прошиваю через STM32 ST-LINK Utiliti

В настройках проекта выбран ST-Link в качестве отладчика?
Разобраться с отладчиком лучше как можно скорее, потому что без него будет сложно, особенно поначалу...

0