Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

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

Ответ
Опции темы
Непрочитано 25.10.2023, 21:24   #1
PUUUK
Прописка
 
Аватар для PUUUK
 
Регистрация: 30.10.2006
Адрес: Калуга
Сообщений: 109
Сказал спасибо: 248
Сказали Спасибо 85 раз(а) в 35 сообщении(ях)
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   #2
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,047
Сказал спасибо: 3,039
Сказали Спасибо 3,209 раз(а) в 2,179 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Проблема отработки цикла в железе

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

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

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

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

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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot