реклама на сайте
подробности

 
 
> проблемы с AVR, глюк AVR или ?
impuls-v
сообщение May 8 2006, 07:03
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 15-01-06
Пользователь №: 13 190



Кто может помогите с одной проблемой.
Написал небольшую программу, и сталкнулся с такой проблемой нужно по прерыванию от внешего входа INT1 отправить пакет по rs232 в комп. Однако вместо одного пакета программа зацикливается на прерывании INT1 и шлет заданный пакет постоянно. Хотя даже прерывание по входу и небыло.

Если кто может зашейте данную программу в контроллер и проверьте, может быть контроллер с глюком, потому что прерывание по внешнему входу использовал много раз и все было нормально.
Ниже приведена часть моей программы из нее удалено все лишнее.

Код
#include <mega8535.h>
// частота кристалла [Гц]
#define xtal 16000000
// глобальные переменные
unsigned char dd1, mm, tm, hh, date, transmit, F1;
                                              
void main(void)
{
DDRB=0x00; //порт B как вход
PORTB=0xff;
MCUCR|=0x3C; // прерывание INT1 по переднему фронту
// инициализация UART  
UBRRL=0x67; //скорость 9600 бит/с
UCSRB|=0x98;  //разреш прерыв по приему и прием и передачу.
UCSRC|=0x86; // 8-ми битовый кадр          
#asm("sei");  // разрешение глобальных прерываний (установка бита 07 SREG)
GIFR=0x00;
GICR=0x80;  //прерывание по внешнему входу INT0        
dd1=0xCF;
mm=0xD1;
tm=0xD2;
hh=0xD3;
while (1);      
}    

interrupt [EXT_INT1] void INT1(void)
{
UCSRB|=0x20;  //разреш прерыв по опустош UDR
transmit=-1;
  date=PINB;  //читаю данне с порта
  UDR=0xCC;     //  отпровляю синхрослово - начало пакета
}
    
interrupt [USART_DRE] void DRE(void)
{
transmit++;
if (transmit==0) UDR=dd1;
if (transmit==1) UDR=mm;
if (transmit==2) UDR=tm;
if (transmit==3) UDR=hh;
if (transmit==4) { UDR=date; // отпровляю байт данных
transmit=-1; // сбрасываю счетчик байт
UCSRB&=0xdf;} // запрещаю прерывание по опустошению UDR
}


Вот такой пакет должен получится :"CC CF D1 D2 D3 FC"
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 02:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016