Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Проблема отработки цикла в железе

Непрочитано 25.10.2023, 21:24  
PUUUK
Прописка
 
Аватар для PUUUK
 
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 120
Сказал спасибо: 249
Сказали Спасибо 113 раз(а) в 43 сообщении(ях)
PUUUK на пути к лучшему
По умолчанию Проблема отработки цикла в железе

Прошу помощи у спецов. Проблема в следующем:
По определенному условию (отсчет времени "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
PUUUK вне форума  
Непрочитано 26.10.2023, 00:11  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Проблема отработки цикла в железе

1. Обрамить код соответствующими тегами.
2. t - объявлена как volatile?
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
mike-y-k (26.10.2023)
Непрочитано 26.10.2023, 01:08  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,292
Сказал спасибо: 11,863
Сказали Спасибо 4,162 раз(а) в 3,180 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Проблема отработки цикла в железе

PUUUK, таки стоит привести побольше кода и обязательно использованные define для всех переменных…
Приведённый кусок (при условии правильного объявления переменных) не вызывает особых вопросов и должен работать…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 26.10.2023, 07:47  
PUUUK
Прописка
 
Аватар для PUUUK
 
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 120
Сказал спасибо: 249
Сказали Спасибо 113 раз(а) в 43 сообщении(ях)
PUUUK на пути к лучшему
По умолчанию Re: Проблема отработки цикла в железе

Сообщение от ForcePoint Посмотреть сообщение
t - объявлена как volatile?
нет, объявлена "unsigned int", сегодня попробую исправить
PUUUK вне форума  
Непрочитано 26.10.2023, 12:18  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,395
Сказал спасибо: 85
Сказали Спасибо 674 раз(а) в 393 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Проблема отработки цикла в железе

Оптимизация, наверняка, еще присутствует?
Вот и выбрасывает кусок кода.
volatile должно помочь.
pambaru вне форума  
Сказали "Спасибо" pambaru
akegor (26.10.2023)
Непрочитано 26.10.2023, 13:18  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Проблема отработки цикла в железе

P.S. В соседней теме - обращают внимание на то, что к int - может потребоваться не только volatile, но и атомарный доступ (отсутствие прерываний между сравнением младшего и старшего байтов).
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
mtit (27.10.2023)
Непрочитано 26.10.2023, 19:58  
PUUUK
Прописка
 
Аватар для PUUUK
 
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 120
Сказал спасибо: 249
Сказали Спасибо 113 раз(а) в 43 сообщении(ях)
PUUUK на пути к лучшему
По умолчанию 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 ну совсем не зря придуман…
PUUUK вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с записью в EEPROM 24С16А по адресам свыше 255 Zemlyanov Микроконтроллеры, АЦП, память и т.д 15 10.09.2007 18:20
Проблема с ЛСД Zemlyanov Делимся опытом 4 12.01.2007 20:53
AVR IAR v4.20 проблема с отработкой условия graham Proteus, KiCAD и другие ECAD 12 05.01.2007 16:19
Проблема деления целых чисел с заданной точностью на AVR KiberBOSS Микроконтроллеры, АЦП, память и т.д 8 16.02.2006 16:35
Проблема при запуске uc3855 Marlboro Источники питания и свет 0 19.07.2005 13:52


Часовой пояс GMT +4, время: 13:52.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.