Исправления файлов конфигурации микроконтроллеров AVR

AVR версия программы

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение Yushik (Андрей) » 01 окт 2020, 20:18

Здравствуйте коллеги решил я добавить в файле Atmega8.fcd прерывание ADC_Conversion_Complete для в этого МК, по аналогии как я делал для Attiny24. Выкурил даташит вроде всё нормально сделал, но при попытке выбора Atmega8 в ФК-5.5.2.1 АВР программа вылетает с ошибкой на рабочий стол. Подскажите где я сделал неправильно или что-то не учёл?
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение pav13 (pav13) » 01 окт 2020, 20:48

по аналогии как я делал для Attiny24

вот что в файле ATTINY24.fcd
Код: выделить все
[ADC_INT]
Name="ADC Conversion Complete"
HandlerCode="#ifndef MX_ADC_INT_HANDLER\n#define MX_ADC_HANDLER\nISR(ADC_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <ADC_INT> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n"
EnableCode="ADCSRA |= (1 << ADIE);\n"
DisableCode="ADCSRA &= ~(1 << ADIE);\n"
OptCnt=0
TmrOpt=0
PrescaleOpt=0
RolloverOpt=0

Вот что в файле ATMEGA8_changed.fcd,
Код: выделить все
[ADC_INT]
Name="ADC Conversion Complete"
HandlerCode="#ifndef MX_ADC_INT_HANDLER\n#define MX_ADC_HANDLER\nISR(ADC_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <ADC_INT> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n"
EnableCode="ADCSRA |=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|(1<<ADIE);\nADMUX|=ADMUXVAL;\n"
DisableCode="ADCSRA &= ~(1 << ADIE);\nADMUX=0;\n"
OptCnt=3
TmrOpt=0
PrescaleOpt=0
RolloverOpt=0

Opt1="ADC chanel Select"
Opt1Cnt=6
Opt1_1="ADC 0"
Opt1_1Val="volatile MX_UINT8 ADMUXVAL = 0x00;\n"
Opt1_2="ADC 1"
Opt1_2Val="volatile MX_UINT8 ADMUXVAL = 0x01;\n"
Opt1_3="ADC 2"
Opt1_3Val="volatile MX_UINT8 ADMUXVAL = 0x02;\n"
Opt1_4="ADC 3"
Opt1_4Val="volatile MX_UINT8 ADMUXVAL = 0x03;\n"
Opt1_5="ADC 4"
Opt1_5Val="volatile MX_UINT8 ADMUXVAL = 0x04;\n"
Opt1_6="ADC 5"
Opt1_6Val="volatile MX_UINT8 ADMUXVAL = 0x05;\n"


Opt2="Vref select"
Opt2Cnt=3
Opt2_1="Vcc"
Opt2_1Val="ADMUXVAL |= 0b01000000;\n"
Opt2_2="Vref"
Opt2_2Val=""
Opt2_3="Internal 2.56v"
Opt2_3Val="ADMUXVAL |= 0b11000000;\n"


Opt3="Prescaler select"
Opt3Cnt=7
Opt3_1="Fosc/2"
Opt3_1Val="ADCSRA = 0x01;\n"
Opt3_1="Fosc/4"
Opt3_1Val="ADCSRA = 0x02;\n"
Opt3_2="Fosc/8"
Opt3_2Val="ADCSRA = 0x03;\n"
Opt3_3="Fosc/16"
Opt3_3Val="ADCSRA = 0x04;\n"
Opt3_4="Fosc/32"
Opt3_4Val="ADCSRA = 0x05;\n"
Opt3_5="Fosc/64"
Opt3_5Val="ADCSRA = 0x06;\n"
Opt3_5="Fosc/128"
Opt3_5Val="ADCSRA = 0x07;\n"

в четыре раза больше строк. С чего это вдруг? Для включения этого прерывания надо лишь один бит изменить и указать вектор прерывания, что и сделано в файле ATTINY24.fcd.
Изображение
FC AVR 5.5.2.1 + исправления / Proteus 8.8 / AtmelStudio 7
drive.google.com/open?id=1zOOA1dH952RegF1N4-jipYkr13iuToSY
Аватар пользователя
Ник: pav13
Имя: pav13
(Тёмовск)
Практикант
Практикант
Информация о пользователе

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение Yushik (Андрей) » 01 окт 2020, 21:13

Приветствую pav13 спасибо за выделенное время, за что отвечают эти биты в регистре ADCSRA я уже разобрался я под себя их настраиваю. Попробовал я сделать секцию ADC_INT как в файле Attiny24.fcd не помогло ФК также вылетает, проблема которая появилась сидит где-то в другом месте. Если сможешь и захочешь рискнуть попробуй подменить мой файл (переименовав его правильно и сохранив резервную копию старого ATmega8.fcd) в своём ФК чтоб увидеть в чём проблема.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение pav13 (pav13) » 01 окт 2020, 22:11

Ошибка была в Opt3="Prescaler select", надо Opt3Cnt=5, а было Opt3Cnt=7. Опций то пять, а не семь, вот программа и вылетала.
И кстати ничего переименовывать или подменять не надо, файлы FCD просто кидаешь рядом с родными и они появляются в списке доступных микроконтроллеров.
У вас нет доступа для просмотра вложений в этом сообщении.
Изображение
FC AVR 5.5.2.1 + исправления / Proteus 8.8 / AtmelStudio 7
drive.google.com/open?id=1zOOA1dH952RegF1N4-jipYkr13iuToSY
Аватар пользователя
Ник: pav13
Имя: pav13
(Тёмовск)
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение Yushik (Андрей) » 01 окт 2020, 22:44

Спасибо PAV13 да у меня в подсекции Prescaler select были не соответствия, бывает невнимательность. Если внимательнее разобраться то в твоём варианте не все прескаллеры будут, у себя я сделал так:

Opt3="Prescaler select"
Opt3Cnt=7
Opt3_1="Fosc/2"
Opt3_1Val="ADCSRA = 0x01;\n"
Opt3_2="Fosc/4"
Opt3_2Val="ADCSRA = 0x02;\n"
Opt3_3="Fosc/8"
Opt3_3Val="ADCSRA = 0x03;\n"
Opt3_4="Fosc/16"
Opt3_4Val="ADCSRA = 0x04;\n"
Opt3_5="Fosc/32"
Opt3_5Val="ADCSRA = 0x05;\n"
Opt3_6="Fosc/64"
Opt3_6Val="ADCSRA = 0x06;\n"
Opt3_7="Fosc/128"
Opt3_7Val="ADCSRA = 0x07;\n"

Пока вылетов нет, ещё раз спасибо за напутствия завтра проверю в протеусе работают ли мои настройки регистра ADCSRA и отпешусь. Ещё немножко и с 5 версией мы матриксам в трусы залезем.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение Yushik (Андрей) » 02 окт 2020, 06:50

Доброе утро проверил файл Atmega8.fcd в протеусе, он лежит в архиве. Протестировал на разных настройках прерывания вроде всё работает, для тех кто не знает состояние переменных проверяется в протеусе через паузу если вместо hex файла подставить elf. Единственное протеус ругается (если Vref выставить на VCC) типа напряжение Vref равно 0, хотя судя по даташиту регистр ADMUX конфигурируется правильно и данные из АЦП считываются коректно. Может у кого есть какие мысли.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение andrewproffi (Андрей) » 02 окт 2020, 11:14

у меня после компиляции и без включения прерывания ошибок нет.
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение Yushik (Андрей) » 02 окт 2020, 11:28

Приветствую тёска что самое интересное если сделать считывание АЦП стандартными макросами ФК то эта ошибка не появляется, настройки ацп с прерыванием ADC_Conversion_Complete и считыванием стандартными макросами одинаковые. Значение старших двух битов регистра ADMUX тоже одинаковое, а протеус ругается, если ты говоришь что у тебя всё ОК. тогда можно списать на глюк протеуса.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение andrewproffi (Андрей) » 02 окт 2020, 11:43

сильно сомневаюсь. ошибки не было именно ПОСЛЕ КОМПИЛЯЦИИ. я файл контроллера не заменял...
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Исправления файлов конфигурации микроконтроллеров AVR

Сообщение Yushik (Андрей) » 02 окт 2020, 11:47

andrewproffi писал(а):сильно сомневаюсь. ошибки не было именно ПОСЛЕ КОМПИЛЯЦИИ. я файл контроллера не заменял...


А мой файл у себя проверить сможешь?
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей