| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
Attiny 26L глючит прерывание INT0
26.02.2016, 15:05
|
|
|
Временная регистрация
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Attiny 26L глючит прерывание INT0
Всем Привет !
Бьюсь головой об стену уже неделю, и ничего не могу понять.
На вход контроллера Attiny 26L (внутренний генератор используется на 1 мГц ) подаются импульсы синхронизации частотой 100 Гц(на фото они нижние синие). В прерывании простой код , который должен менять значение пина PA0 на противоположное каждый раз как только входит в прерывание. Прерывание настроено по падающему фронту. Но этот гад (контроллер) иногда почему-то и по возрастающему фронту срабатывает.На фото это видно.Время межу синхроимпульсами 800 мкс.
Вот собственно и вопрос. Это глюки контроллера. Или еще какой бит в какомнибудь регистре настроить надо ?Код на ассемблере ведет себя также.
|
|
|
|
26.02.2016, 15:41
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Сообщение от ARTEM277
|
|
иногда почему-то и по возрастающему фронту срабатывает
|
Криминала никакого в программе не увидел. Я бы 1) проверил наличие развязывающих конденсаторов по питанию, особое внимание уделив керамике "прям между ног". 2) питание вообще, нет ли иголок... 3) при старте программы сделал бы мигание, например другим пином - сразу видно что сброс произошел.
Еще полезно после старта программы анализировать MCUSR - там есть 4 бита - причина сброса.
Так, если при старте обнаружится бит BORF - был провал по питанию, WDRF - сброс сторожевого таймера.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
Последний раз редактировалось nml; 26.02.2016 в 15:45.
|
|
|
|
26.02.2016, 16:00
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Сообщение от ARTEM277
|
|
подаются импульсы синхронизации частотой 100 Гц
|
Сообщение от ARTEM277
|
|
Время межу синхроимпульсами 800 мкс.
|
А тебя не смущает, что 800 мкс это далеко не 100 Гц?
|
|
|
|
26.02.2016, 23:19
|
|
|
Частый гость
Регистрация: 28.09.2015
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
1 - поставь разрешение ослика побольше, скорее всего увидишь помеху на синхроимпульсе, МК делает все правильно, просто импульс двойной. Как ее давить - дело техники, можно программно, а можно и нужно по п 2.
2 - борьба с нанопомехами. керамика 103 прямо между ножкой входа и землей обязательно.
|
|
|
|
27.02.2016, 08:52
|
|
|
Временная регистрация
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Сообщение от Someone
|
|
А тебя не смущает, что 800 мкс это далеко не 100 Гц?
|
После диодного моста(без конденсатора) ,и через два транзистора.800 мкс это есть время когда транзистр еще не включился. Можно в эмитер поставить диод и увеличить еще это время. Да и осцилографф пишет 100 Гц. Я ему верю
|
|
|
|
27.02.2016, 09:02
|
|
|
Временная регистрация
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Сообщение от Vovan_G5
|
1 - поставь разрешение ослика побольше, скорее всего увидишь помеху на синхроимпульсе, МК делает все правильно, просто импульс двойной. Как ее давить - дело техники, можно программно, а можно и нужно по п 2.
2 - борьба с нанопомехами. керамика 103 прямо между ножкой входа и землей обязательно.
|
Все это было проделанно. Не помогает. Попробую конечно же еще больше разрешение осцилографа поставить.... но я думаю ни чего не увижу. Но почему то этот МК нормально начинает работать когда ему ставиш не по спаду а по нижнему уровню прерывание т.е MCUCR=0. И он торчит в преывании по честному до момента пока не появится высокий уровень. И импульс четкий. Но это как бы не правильно.
И опять же ... я долго наблюдал ... в том числе и на большом разрешение . И не разу не увидел что например переключения пина идет где-то между импульсами или чуть раньше нарастающего фронта.Всегда переключается по спаду и иногда по нарастанию....
|
|
|
|
27.02.2016, 09:08
|
|
|
Временная регистрация
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Сообщение от nml
|
1) проверил наличие развязывающих конденсаторов по питанию, особое внимание уделив керамике "прям между ног". 2) питание вообще, нет ли иголок... 3) при старте программы сделал бы мигание, например другим пином - сразу видно что сброс произошел.
Еще полезно после старта программы анализировать MCUSR - там есть 4 бита - причина сброса.
Так, если при старте обнаружится бит BORF - был провал по питанию, WDRF - сброс сторожевог
|
Иголок по питанию точно нет.Пульсации 20 mV. И я не совсем понял термин "наличие развязывающих конденсаторов по питанию " поясните пожалуйста ? Просто для меня слово развязывающий говорить о том ,что надо например отсечь постоянную состовляющую с помощью конденсатора ..
Пином помыргать попробую.... и регистр тоже проверю .
|
|
|
|
27.02.2016, 09:12
|
|
|
Временная регистрация
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Да кстати частоту подымал до 4 Мгц . Ничего недало. смысл тот же.
В понедельник попробую загнать эту же прогу в ATMEGA 16,8535, и ATtiny2313 и в PIC16F628... если на производстве проблем не будет.
Результаты выложу.
|
|
|
|
27.02.2016, 09:22
|
|
|
Временная регистрация
Регистрация: 24.03.2015
Адрес: Россия. г.Новосибирск
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Как выяснилось есть еще одна прога на асме. Писал не я. Дак вот почему то в ней человек отказался от INT0 и написал просто на основе опроса PB6. Ну типа как только пин равен 0 то переключить PA0 и ждать пока не станет высокий уровень и потом опять пин PB6 = 0 ....ну и тд. Дак работает ведь. И четко причем....чудеса блин.
|
|
|
|
27.02.2016, 16:39
|
|
|
Гражданин KAZUS.RUN
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 862
Сказал спасибо: 98
Сказали Спасибо 216 раз(а) в 139 сообщении(ях)
|
Re: Attiny 26L глючит прерывание INT0
Программное подавления дребезга.
Ну хотя бы так
|
Код:
|
ISR(INT0_vect)
{
if(!(PINB&(1‹‹6))
{
_delay_us(60);
if(!(PINB&(1‹‹6))
{
if(PORTA&(1‹‹0)){PORTA&=~(1‹‹0);}
else {PORTA|=(1‹‹0);}
}
}
} |
__________________
Не ошибается лишь тот, кто ни чего не делает!
Последний раз редактировалось woroba; 27.02.2016 в 16:53.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:10.
|
|