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

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

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

Сообщение pav13 (pav13) » 11 апр 2018, 19:58

На youtube-канале "RADIOSOFT" с урока 79 начался разбор прерываний по различным событиям и от таймеров в мк atmega328p.
Общими усилиями удалось запихнуть отсутствующие прерывания в программу, чтобы с ними было удобно работать используя стандартный интерфейс Flowcode.
Также попутно решил допилить прерывания(и не только) в других популярныx микроконтроллерах.

Список изменений:
ATMega328p + ATMega328P_TQFP
  • добавлен вариант контроллера в корпусе TQFP(+ 2 канала АЦП)
  • добавлено по два условия для INT0 и INT1(любое изменение, по низкому уровню)
  • правлено прерывание PortB Change
    Pin Change Interrupt Request 0
  • добавлено прерывания PortC Change (убран пин C6/reset)
    Pin Change Interrupt Request 1
  • добавлено прерывания PortD Change
    Pin Change Interrupt Request 2
  • добавлено прерывание по совпадению с регистром А таймера 2
    Timer/Counter2 Compare Match A
  • добавлено прерывание по совпадению с регистром А таймера 1
    Timer/Counter1 Compare Match A
  • добавлено прерывание по совпадению с регистром А таймера 0
    Timer/Counter0 Compare Match A
  • добавлено прерывание по событию таймера 1 на пине B0
    Timer/Counter1 Capture Event
  • добавлено прерывание (прерывание и сброс) по переполнению таймера WatchDog
    Watchdog Time-out Interrupt
  • правлено прерывание по завершению приема данных по UART
    UART Rx Complete
  • добавлено прерывание по завершению передачи данных по UART
    UART Tx Complete
ATMega8 + ATMega8_TQFP
  • добавлен вариант контроллера в корпусе TQFP(+ 2 канала АЦП)
  • добавлено по два условия для INT0 и INT1(любое изменение, по низкому уровню)
  • добавлено прерывание по совпадению с регистром А таймера 1
    Timer/Counter1 Compare Match A
  • добавлено прерывание по событию таймера 1 на пине B0
    Timer/Counter1 Capture Event
  • добавлено прерывание по совпадению с регистром А таймера 2
    Timer/Counter2 Compare Match A
  • правлено прерывание по завершению приема данных по UART
    UART Rx Complete
  • добавлено прерывание по завершению передачи данных по UART
    UART Tx Complete
ATTiny2313
  • добавлено по два условия для INT0 и INT1(любое изменение, по низкому уровню)
  • правлено прерывание по завершению приема данных по UART
    UART Rx Complete
  • добавлено прерывание по завершению передачи данных по UART
    UART Tx Complete
  • добавлено прерывание по совпадению с регистром А таймера 1
    Timer/Counter1 Compare Match A
  • добавлено прерывание по совпадению с регистром А таймера 0
    Timer/Counter0 Compare Match A
  • добавлено прерывание по событию таймера 1 на пине D6
    Timer/Counter1 Capture Event
  • добавлено прерывание по переполнению таймера WatchDog
    Watchdog Time-out Interrupt
ATTiny24
  • добавлено два условия для INT0 (любое изменение, по низкому уровню)
  • правлено прерывание для PortB (убран пин B3/reset)
    Pin Change Interrupt Request 1
  • добавлено прерывание по совпадению с регистром А таймера 1
    Timer/Counter1 Compare Match A
  • добавлено прерывание по совпадению с регистром А таймера 0
    Timer/Counter0 Compare Match A
  • добавлено прерывание по событию таймера 1 на пине A7
    Timer/Counter1 Capture Event
ATTiny13
  • добавлено два условия для INT0 (любое изменение, по низкому уровню)
  • правлено прерывание для PortB (убран пин B5/reset)
    Pin Change Interrupt Request 0
  • добавлено прерывание по совпадению с регистром А таймера 0
    Timer/Counter0 Compare Match A
  • добавлено прерывание (прерывание и сброс) по переполнению таймера WatchDog
    Watchdog Time-out Interrupt

P.S. Если где-то заметите "косяки" - просьба сообщить.

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

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

Сообщение pav13 (pav13) » 20 янв 2020, 10:15

Чтобы не создавать тему, напишу здесь.

Патч для Khazama AVR Programmer добавляющий возможность редактировать fuse биты для микроконтроллера ATMega328P
Распаковать, запустить в папке с программой, пропатчить (backup создается автоматически).

Патч -> https://drive.google.com/file/d/1HY2VKf8WhpfYv4VSMPxOVc-GlTFuaDZE

Тут немного пояснений -> https://www.youtube.com/watch?v=MdQOmLIcL5I&lc=UgzVTM_gEcgY_fwaOot4AaABAg
сделано просто так, по фану, наверно от избытка свободного времени.
Изображение
FC AVR 5.5.2.1 + исправления / Proteus 8.8 / AtmelStudio 7
drive.google.com/open?id=1zOOA1dH952RegF1N4-jipYkr13iuToSY
Аватар пользователя
Ник: pav13
Имя: pav13
(Тёмовск)
Ученик
Ученик
Информация о пользователе

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

Сообщение Rbb5 (Руслан) » 10 фев 2020, 16:47

а для pic сможеш? Я попробовал окошки появляются а не работает
Аватар пользователя
Ник: Rbb5
Имя: Руслан
(Красноярск)
Новичок
Новичок
Информация о пользователе
Вернуться наверх

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

Сообщение pav13 (pav13) » 10 фев 2020, 19:43

дело не в том, смогу или нет. курить тонны даташитов нет никакого желания. да и железа нет pic`овского и ни разу не использовал, не было необходимости.
Изображение
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, 15:11

Здравствуйте у меня есть вопрос к автору PAV13. Спасибо вам за те прерывания которые вы добавили в FCD файлы контроллеров AVR пока всё работает исправно нареканий ещё не было. Недавно мне понадобилось прерывание ADC_Conversion_Complete в микроконтроллере Attiny24 его там не оказалось, хотя вектор этого прерывания в Attiny24 присутствует. Я сравнил даташиты на Attiny13 и Attiny24 3 регистра из 4 отвечающие за АЦП в этих микроконтроллерах идентичны, регистры прерываний также практически похожи. Я решил скопировать секцию [ADC_INT] из FCD файла Attiny13 в FCD файл Attiny24. Тут меня ждал облом прерывание не появилось, при попытке подправить секцию [Interrupts], добавить строчку ADC_INT и при попытке изменения значения в строчке Count фловкоде вообще начал вылетать. Подскажите пожалуйста в какую мне сторону копать и что ещё мне нужно там или у меня в мозгах поменять.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

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

Сообщение pav13 (pav13) » 01 мар 2020, 17:24

Прерывания ADC_Int, ANA_COMP и SLEEP в файле tiny13 не мои. Это к andrewproffi.
В ADC_Int как-то вообще много всего для просто прерывания. Там по ходу сразу и настройка АЦП и прерывание.
Сделано видать от того, что компонент ADC в Flowcode немного глючный (выбор частоты и ИОНа).
Как всё это работает, и работает ли, сказать не могу.

Могу помочь так: работаешь с ADC стандартным инструментом в Flowcode и включаешь прерывание по завершению преобразования АЦП как обычно, указывая путь к макросу(оно уже есть в приложенном файле). Сам не проверял, но работать должно.
ATTINY24.rar

Если всё будет нормально, тогда обновлю файл в шапке темы.
У вас нет доступа для просмотра вложений в этом сообщении.
Изображение
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, 17:54

Извините если что не по адресу, спасибо за подсказку попробую ваш пример на днях. Я тоже зря не сидел, попытался поиграться с этим прерыванием на Attiny13, что-то получилось но есть нюансы. Мне пришлось в файле Attiny13.fcd в секции [ADC_INT] изменить строчку инициализации регистра ADCSRA на ADCSRA |=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADATE);.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Андрей 01 мар 2020, 21:00, всего редактировалось 3 раз(а).
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

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

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

Извените сделал опечатку с битом ADIF правильно ADCSRA |=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADATE);. Переделал сообщение
Последний раз редактировалось Андрей 01 мар 2020, 21:01, всего редактировалось 2 раз(а).
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

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

Сообщение pav13 (pav13) » 01 мар 2020, 18:09

Не Flowcode, но Atmel Studio
Код: выделить все
unsigned int adc=0;

int main(void)
{......
     //вкл, настройка АЦП + прерывание
     ADCSRA|=(1<<ADEN); //вкл АЦП
     ADCSRA|=(1<<ADFR); //бесконечное измерение
     ADCSRA|=(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);//частота преобразования
     ADCSRA|=(1<<ADIE);//разрешение прерывания АЦП
     ADMUX=0b11000100; //ион, результат, канал
     ADCSRA|=(1<<ADSC); // старт измерений
     .......
     sei();//глобальное разрешение перываний
     while (1)
         {...........}
}


Код: выделить все
//Прерывание с чтением значения ацп по завершению преобразования
ISR(ADC_vect)
{adc=ADC;}
// ADC это регистр с результатом преобразования(не нужен ни ADCH, ни ADCL)
// adc это переменная, объявленная в начале


Без чтения из регистра ADC не будут обновляться результаты измерения.
Изображение
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, 20:50

pav13 писал(а):Могу помочь так: работаешь с ADC стандартным инструментом в Flowcode и включаешь прерывание по завершению преобразования АЦП как обычно, указывая путь к макросу(оно уже есть в приложенном файле). Сам не проверял, но работать должно.


Спасибо PAV13 но именно твоим способом не получилось, ацп не правильно конфигурировался. Но я хотя-бы разобрался как устроены FCD файлы, доделал я твой файл Attiny24.fcd добавил свойства в прерывание "ADC conversion complete". Вобщем сделал я по анологии как с Attiny13 что давал выше. Также я разобрался с непрерывным преобразованием оказывается надо взводить бит ADATE регистра ADCSRA эти изменения есть в файлах ниже.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх


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

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

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