ин69
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 82
|
|
1 | |
Виснет atmega 8535 через несколько секунд работы.19.11.2014, 13:32. Просмотров 4880. Ответов 11
Метки нет Все метки)
(
Здравствуйте! Подскажите пожалуйста,может ли теряться адрес возврата из прерывания по переполнению счетчика Т0 в программе с большим количеством меток? У меня одноврем работают таймеры Т0 иТ1,последний работает без прерываний.Убрал прерывание Т0 по вектору,сделал программное прерывание,работает в железе.Какие могут быть предположения? Программа с одним Т0 с прерыванием норм.работает.
0
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
19.11.2014, 13:32 |
Ответы с готовыми решениями:
11
AVR Atmega 8535 AVR atmega 8535
Сформировать импульс заданной длительности на ATmega 8535 Задержка без таймера на выходе atmega 8535 на 0,5 сек |
stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
|
|
19.11.2014, 17:17 | 2 |
Срыв стека?
0
|
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
|
|
19.11.2014, 17:47 | 3 |
Можно в симуляторе AVR-Студии последить, как изменяется со временем положение вершины стека (значение регистра SP).
0
|
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
|
|
19.11.2014, 17:58 | 4 |
Если программа написана на асме, то причины:
Нет сохранения\восстановления регистров и SREG при входе в прерывание\выходе из прерывания. Некорректное сохранение\восстановление SREG, если это происходит в регистрах, а не push/pop. Некорректное использование команд rjmp и rcall. Переполнение стека. Все это можно и нужно проверить прогоном программы в симуляторе AVR-Studyo.
0
|
ин69
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 82
|
|
20.11.2014, 12:18 | 5 |
Спасибо! Выдавливание нижних адресов возврата? Как симулятор запустить на автомате,с пом F11 несколько циклов норм проходят.
0
|
ZIvS
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 157
|
|
20.11.2014, 21:04 | 6 |
а с watchdog`ом все в порядке?
0
|
ин69
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 82
|
|
22.11.2014, 20:07 | 7 |
Думаю,в порядке.но не уверен.Проблемы начались,когда подключил второй таймер-счетчик и удлинил одну из подпрограмм.Вышел из положения,убрав прерывания таймера Т0.Еще замечал,что после обработки прерывания и возврата в подпрограмму при большом количестве меток и ее длине не происходит выхода из нее по ret.
0
|
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
|
|
22.11.2014, 21:23 | 8 |
А попробовать увеличить стек?
0
|
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
|
|
22.11.2014, 21:31 | 9 |
Так долго можно гадать, выкладывайте код. Опишите задачу, что вы делаете. Будем разбираться.
0
|
ин69
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 82
|
|
24.11.2014, 12:03 | 10 |
Пока вышел из положения.убрав прерывания Т0.Вроде работает. Еще вечером почищу на предмет лишних вызовов подпрограмм.
0
|
ин69
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 82
|
|
26.11.2014, 10:43 | 11 |
Выкладываю код, работает плохо.
[4.31 Кб]
0
|
ин69
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 82
|
|
26.11.2014, 10:55 | 12 |
Пока не начал регулировать частоту,все работало нормально. С потенц. подал напр на АЦП.По этим значениям изменяется интервал между подстановками табличных значений длительности импульса.Таймер Т0 задает период ШИМ,а Т1 отвечает как раз за задержку времени подстановки нового значения времени сброса ноги контроллера.Определил,что проблема-нет гарантированных выходов из циклов.
0
|
26.11.2014, 10:55 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
26.11.2014, 10:55 |
AVR Studio. Не видит директиву '.egu' (Atmega 8535) Нет передачи по UART с одного микроконтроллера на другой ATmega 8535 Проблема прошивки atmega 8515 через LPT Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |