Атмега64 . Поможите!!! Не могу понять где грабли?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено DimaS 29 июля 2005 г. 14:01

Написал прогр. чтения кнопочек по прерыванию.
ICCAVR
В AVRStudio все работает как надо.

А на деле после нажатия кнопочки все биты порта В в единице.


// На порт A подключены кнопки, общий вы вывод кнопок продключен к INT 7.
// При нажатии обрабатываем прерывание по спаду
// и выводим в порт В значение кода
// из key
#include
#include
char key;

#pragma interrupt_handler int7_isr:9
void int7_isr(void)
{
DDRA=0x00; // Порт А на ВВОД
PORTA=0xFF;// Включены подтяг.резисторы

DDRE=0xFF;
PORTE=0X80;// Бит E7 на ВЫВОД 0

key=PINA; // Читаем А
key=PINA; // Еще раз на всякий случай

// Восстанавливаем значения портов до прерыван.
DDRE=0x00; // Порт Е на ввод.
PORTE=0xFF;// Подключили к порту Е подтягив рез.
PORTA=0x00; // Порт А на вывод 0.
DDRA=0xFF;
}



void main(void)

{
DDRE=0x00; // Порт Е на ввод.
PORTE=0xFF;// Подключили к порту Е подтягив рез.
PORTA=0x00; // Порт А на вывод 0.
DDRA=0xFF;
DDRB=0XFF;
PORTB=00;
key=0;

CLI(); //disable all interrupts
EICRA = 0x00; //extended ext ints
EICRB = 0x80; //extended ext ints
EIMSK = 0x80;
SEI(); //re-enable interrupts

while(1)
{DDRB=0XFF;
PORTB=0xFF;
PORTB=key; }// Если кнопка нажата то соотв. бит =1
//иначе импульсы.
};

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru