Пример кода для работы с внешними прерываниями int0 int1

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1789117758 AND uid = 0 in /var/www/fendercustomsh/data/www/avrlab.com/includes/session.inc on line 119.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT DISTINCT u.uid, u.name, s.timestamp FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.timestamp >= 1789117758 AND s.uid > 0 ORDER BY s.timestamp DESC in /var/www/fendercustomsh/data/www/avrlab.com/modules/user/user.module on line 764.

Для программ основа которы является обработка сигналов подаваемых на выводы внешнего прерывания необходимо код, вот хороший пример структуры кода для обработки внешних прерываний int0 и int1 для микроконтроллера ATmega8

  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3.  
  4. SIGNAL(SIG_INTERRUPT0)//обработка прерываний
  5. {
  6. //программа, которая должна выполнятся при срабатывании прерывания 1
  7. }
  8.  
  9. SIGNAL(SIG_INTERRUPT1)//обработка прерываний
  10. {
  11. //программа, которая должна выполнятся при срабатывании прерывания 2
  12. }
  13.  
  14. int main(void)
  15. {
  16. GIMSK=0b11000000; //разрешаем прерывание int0 и int1
  17. MCUCR=0b00001111;// int by rising front - для кнопки 1 и 2
  18.  
  19. sei(); //Разрешение прерываний глобально по всей программе
  20.  
  21. while(1) //Вечный цикл, все что в нем будет выполнятся постоянно
  22. {
  23. //Тут располагается код программы, которая будет выполнятся в основном цикле
  24. }
  25.  
  26. }

В принципе все просто, единственное что хочется сказать, это то что при подключении кнопок или переключателей на входы INT0 и INT1 при переключении будет появляться так называемый дребезг контактов. Для его подавления необходимо поставить параллельно кнопке конденсатор на 0,1 мкФ, после этого эффект должен уменьшиться.
Все вопросы просьба оставлять в комментариях.