AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
25.10.2023, 21:24
|
|
Прописка
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 109
Сказал спасибо: 250
Сказали Спасибо 85 раз(а) в 35 сообщении(ях)
|
Проблема отработки цикла в железе
Прошу помощи у спецов. Проблема в следующем:
По определенному условию (отсчет времени "t++" в прерываниях по переполнению таймера) выполнение попадает в тело цикла до перезагрузки, это правильно отрабатывается в AVR Studio 4 и PROTEUS, но в железе (Tiny13A) проскакивает мимо цикла и работает не останавливаясь.
Вот кусок проги:
Код:
|
while (p1==0)//запуск измерения и перемещения
{
while (t›=20)
{
PORTB.3=0;PORTB.4=0;//стоп-авария
TCCR0B=0x00;//стоп таймер
ADCSRA&=0x7F;//стоп ADC
}; |
Подскажите пожалуйста в чем косяк?
Последний раз редактировалось mike-y-k; 26.10.2023 в 01:04.
Причина: Тег code
|
|
|
|
26.10.2023, 00:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,069
Сказал спасибо: 3,054
Сказали Спасибо 3,222 раз(а) в 2,187 сообщении(ях)
|
Re: Проблема отработки цикла в железе
1. Обрамить код соответствующими тегами.
2. t - объявлена как volatile?
__________________
Экзорцист 40-го уровня.
|
|
|
Сказали "Спасибо" ForcePoint
|
|
|
26.10.2023, 01:08
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
|
Re: Проблема отработки цикла в железе
PUUUK, таки стоит привести побольше кода и обязательно использованные define для всех переменных…
Приведённый кусок (при условии правильного объявления переменных) не вызывает особых вопросов и должен работать…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
26.10.2023, 07:47
|
|
Прописка
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 109
Сказал спасибо: 250
Сказали Спасибо 85 раз(а) в 35 сообщении(ях)
|
Re: Проблема отработки цикла в железе
Сообщение от ForcePoint
|
t - объявлена как volatile?
|
нет, объявлена "unsigned int", сегодня попробую исправить
|
|
|
|
26.10.2023, 12:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,368
Сказал спасибо: 85
Сказали Спасибо 626 раз(а) в 378 сообщении(ях)
|
Re: Проблема отработки цикла в железе
Оптимизация, наверняка, еще присутствует?
Вот и выбрасывает кусок кода.
volatile должно помочь.
|
|
|
Сказали "Спасибо" pambaru
|
|
|
26.10.2023, 13:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,069
Сказал спасибо: 3,054
Сказали Спасибо 3,222 раз(а) в 2,187 сообщении(ях)
|
Re: Проблема отработки цикла в железе
P.S. В соседней теме - обращают внимание на то, что к int - может потребоваться не только volatile, но и атомарный доступ (отсутствие прерываний между сравнением младшего и старшего байтов).
__________________
Экзорцист 40-го уровня.
|
|
|
Сказали "Спасибо" ForcePoint
|
|
|
26.10.2023, 19:58
|
|
Прописка
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 109
Сказал спасибо: 250
Сказали Спасибо 85 раз(а) в 35 сообщении(ях)
|
Re: Проблема отработки цикла в железе
volatile не помогло, попробую переменную char, изначально так и было, но при установке фьюзов на такт 128кГц мои тиньки не хотели прошиваться. USB_ASP с avrdude позволяют снизить частоту-скорость программирования, но не видят моих глючных тинек, а Pony Prog по COMпорту не меняет скорость, но смогла изменить фьюзы на 4.8МГц и после этого нормально прошивает(оказалось многие сталкивались с таким косяком у Tiny13), пришлось ставить 4.8МГц и изменить тип с char на int. В общем проблему обошел:
Код:
|
if (t›=20)
{
PORTB.3=0;PORTB.4=0;//стоп-авария
sleep_enable();
powerdown();
}; |
Требовалось при подсчете определенного времени прекратить дальнейшее выполнение программы. Раньше не приходилось использовать sleep_enable.
Ну а с циклом еще поковыряюсь. Спасибо.
Последний раз редактировалось mike-y-k; 01.11.2023 в 22:36.
Причина: таки тег code ну совсем не зря придуман…
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:42.
|
|