2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
|
1 | |
Реализовать 3 обработчика прерывания ATmega8(0X00E, 0X00F, 0X010)21.11.2022, 12:24. Показов 773. Ответов 13
Само задание звучит следующим образом: "Разобраться с поддерживаемыми прерываниями. Реализовать 3 обработчика прерывания". У меня микроконтроллер Atmega8. В интернете искал информацию, но столкнулся с некоторой проблемой, нет толком объяснений для нужных мне прерываний, даже в datasheet atmega8 - https://static.chipdip.ru/lib/059/DOC000059782.pdf (46 страница). Мои прерывания - №15, №16, №17. Но находил я информацию по реализации лишь на прерывание по сигналу на INT0. Мне нужно создать программу в ATML studio, забилдить её и запустить в proteus'е с нужной схемой. Вот только даже на этапе поиска какого-то кода по прерываниям, захожу в тупик некоторый. Можете подсказать какие-нибудь книжки, где есть данная инфа? Или подсказать, как работать с данными прерываниями. Скриншоты прерываний на русском сегменте(№1):
и в datasheet atmega8(№2):
0
|
21.11.2022, 12:24 | |
Ответы с готовыми решениями:
13
Выход из обработчика прерывания Возврат из обработчика прерывания. Выход из обработчика прерывания Прерывания по таймеру Т1 в Atmega8 Выгрузка резидента из обработчика прерывания |
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,013
|
|
21.11.2022, 13:42 | 2 |
Обычно "учителя" описывают именно работу прерывания INTх.
По сути все остальные обрабатываются так же. Только условия возникновения другие. Читать даташит и разбираться.
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
|
21.11.2022, 16:46 [ТС] | 3 |
0
|
22 / 26 / 4
Регистрация: 26.03.2017
Сообщений: 193
|
|
22.11.2022, 08:34 | 4 |
pashamem7894, Есть хорошая книга, называется - микроконтроллеры AVR семейства Mega. Автор А.В. Евстифеев. В ней все найдешь.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
||||||
22.11.2022, 09:14 | 5 | |||||
15 это ADC, вызывается после просчета АЦП
16 EE_RDY, вызывается при считывании энергетической памяти 17 ANA_COMP, вызывается при аналоговом компараторе Добавлено через 1 минуту вот кусок кода цветомузыки на ардуино
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
|
22.11.2022, 11:43 [ТС] | 6 |
Понял. Почекаю обязательно её, спасибо.
Добавлено через 21 секунду Спасибо, а откуда этот код вообще? может тоже из книжки какой
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
||||||
22.11.2022, 20:21 | 7 | |||||
вот отсюда https://duino.ru/blog/all/cvet... mi-rukami/
ардуино изначальна собрана на atmega8 а сейчас atmega328(и еще куча других) можно посмотреть их потроха(программ, или как они называют скейтчи) и позаимствовать что то нужное. Но огульно их копировать код не нужно, Ардуино научит плохому например
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
|
24.11.2022, 22:37 [ТС] | 8 |
Спасибо ещё раз, на днях посмотрю обязательно и буду пробовать реализовывать. Сюда отпишу если что с вопросами опять)
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
||||||
30.11.2022, 21:20 [ТС] | 9 | |||||
Что ж, я попробовал реализовать просто обработчик прерывания ADC, но по итогу при прерывании, у меня не срабатывает функция преревания. Что должно произойти по задумке: программа запускается, загораются лампочки с портов 0 и 2, затем, через какое-то время, adc_counter должен "набрать" в себя сумм ADC и должны погаснуть все лампочки, кроме той, что от порта b1. Но почему-то он вооообще не заходит в функцию обработки прерывания ISR(ADC_vect). Код ниже:
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
||||||||||||||||
30.11.2022, 23:50 [ТС] | 11 | |||||||||||||||
Ну там уже немного исправленный код, редачил, пока писал ответ сюда. Там он должен по-идее работать даже при малейшей изменении adc_counter, ну условие стоит на != 0
Сейчас это выглядит следующим образом:
Добавлено через 31 минуту Добавил снизу схемку с катушкой и конденсатором, т.к сказано в datasheet , что оно вроде шумы устраняет или что-то такое, но по-прежнему не обрабатывается прерывание...
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
|||||||||||||||||||||
01.12.2022, 17:55 [ТС] | 12 | ||||||||||||||||||||
UPD: прога вообще не заходит в цикл while(1), но почему.. попробовал исправить int main(void) на void main(void), не помогло:
UPD: Добавил
Добавлено через 5 часов 49 минут Проблема решена, обработчик прерываний ADC работает, проблему была в битах самого ADC(определение битов):
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
||||||
02.12.2022, 14:24 [ТС] | 13 | |||||
Дошёл до EEPROM ( или EE_RDY прерывание). По сути же оно срабатывает каждый раз после записи в EEPROM, поэтому мне бы просто реализовать запись, но почему-то он не видит EEMEM ( Error 1 'EEMEM' undeclared here (not in a function) C:\Users\110ak\Documents\Atmel Studio\6.2\lab4EE\lab4EE\src\main.c 9 13 lab4EE ) .
Пробовал в datasheet'е искать, не нашёл толком ничего именно по такой комбинации символов. Добавлено через 4 часа 27 минут Теперь что-то работает, я оставил разрешение прерываний от EECR( EECR = (1<<EERIE) и запись в файл. По заданию мне необходимо реализовать обработчики прерываний, т.е ISR функции, а прерывание EE_RDY от EEPROM, как я прочитал, вызывается после записи в EEPROM, так я и сделал. Т.е он записывает в EEPROM, после чего вызывается прерывание, меняющие флаг, который обрабатывается уже в основном цикле, но почему-то после загорания лампочки, она не гаснет через 1,5(в коде изменено на 150 мс) с. может delay работает плохо при EEPROM , или же я ломаю EEPROM тем, что не считываю с него данные... Но код выглядит на данный момент следующим образом:
0
|
2 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 99
|
|
04.12.2022, 15:39 [ТС] | 14 |
Что ж, всё получилось, задание сделано и сдано, всем спасибо
0
|
04.12.2022, 15:39 | |
04.12.2022, 15:39 | |
Помогаю со студенческими работами здесь
14
Подмена обработчика прерывания клавиатуры Прерывания в ОСи: прототип функции-обработчика Выход из цикла в функции обработчика прерывания Вызов обработчика прерывания в резидентной COM-программе Программа вылетает при замене обработчика прерывания Не работает эмуляция обработчика прерывания Print Screne Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |