int0
Пример кода для работы с внешними прерываниями int0 int1
Для программ основа которы является обработка сигналов подаваемых на выводы внешнего прерывания необходимо код, вот хороший пример структуры кода для обработки внешних прерываний int0 и int1 для микроконтроллера ATmega8
#include <avr/io.h> #include <avr/interrupt.h> SIGNAL(SIG_INTERRUPT0)//обработка прерываний {
Шаблон обработки прерывания от int0 для AtTiny2313
Вот простой и наглядный пример обработки прерывания int0 для микроконтроллера ATtiny2313, на прерывание int0 можно установить кнопку или например датчик с выходным напряжением до 5Вольт. Я в основном использую внешние прерывания int0 и int1 для установки на них кнопок, в основном "вешаю" на них выполнение уникальных и требующих немедленного исполнения программ.
#include <avr/io.h> //библиотека ввода/вывода #include <avr/interrupt.h> //библиотека прерываний #define nop() {asm("nop");} unsigned int ms,x; //декларирование переменных // функция задержки void delay_ms(int ms) { for (x=ms; x>0; x--) nop (); //задержка на один такт } //обработка прерываний SIGNAL(SIG_INTERRUPT0) { //Тут размещается текст программы //которую надо выполнить //при срабатывании прерывания INT0 } int main( void ) //главная программа { GIMSK=0b01000000; //разрешаем прерывание int0 - кнопка MCUCR=0x03; // срабатывание по нарастанию фронта - для кнопки sei(); //глобальное разрешение прерываний for(;;) //бесконечный цикл { //Тут размещают программу //которая выполняется/ //в свободное от выполнения //обработчика прерывания } }
Скачать пример обработки прерывания int0 в txt файле
Подключение N-кодера(энкодер) к микроконтроллеру AVR
При конструировании всяких подвижных агрегатов, будь то робот или станок на производстве, встает вопрос о контроле положения движущихся частей. Для таких целей используют валкодеры (их еще называют энкодеры, датчики положения). Валкодеры бывают механические и оптические. Типичный механический валкодер представляет собой диск с прорезями и две группы контактов: