Перейти к содержанию
    

RS-232(проблема)

:unsure: Идея: по прерыванию, запись в буфер и чисто для себя(для проверки) обратно посылается буква U, естествнно не работает.... перерыл документацию по AT90S2313 , вроде все регистры отвечающие за прерывания включены, и все равно не работает :huh:

 

можете сами у себя проверить, кроме как мистикой я это описать не могу

 

void main()

{

init_devices();

while(1);

}

 

// getting byte from COM PORT

#pragma interrupt_handler get_result:8

void get_result()

{//x.z no ne rabotaet

 

x[cou]=UDR;cou++;

if (cou==4) {cou=0;}//sort();}

putchar('U'); //vivod obratno !!!

 

}

void port_init(void)

{

DDRB =0xFF; //init port B na vixod

PORTB = 0x00; //vkl all

PORTD = 0x00; //port vkl

DDRD = 0x00; //vse na vxod

}

//call this routine to initialise all peripherals

 

void init_devices(void)

{

CLI();

 

port_init();

uart0_init();

 

SetBit (SREG,7); //bit maski prerivanii

MCUCR = 0x00;

GIMSK = 0xF0; //obshii registr maski prerivanii

GIFR = 0xF0;

TIMSK = 0x00; //0x00

 

SEI();

 

}

 

//UART0 initialisation

// desired baud rate: 9600

// actual: baud rate:9600 (0,0%)

//

void uart0_init(void)

{

UCR = 0x00; //disable while setting baud rate

UBRR = 0x17; //set baud rate

// UBRR = 0x23; //set baud rate

UCR = 0x09; //enable

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ты ждешь когда тебе придет буква "U"? А ты почему при инициализации не включил трансмитер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня на меге 8515:

;инициализация

UART_INIT:

ldi R16,0 ;режим U2x=0 MPCM=0

out UCSRA,R16

ldi R16,0x98 ;режим RXCIE=1 RXEN=1 TXEN=1

out UCSRB,R16

ldi R16,0x8f ;режим UCZ=011 USBS=1

out UCSRC,R16

ldi R16,low(UART_BAUD) ;скорость

out UBRRL,R16

ldi R16,high(UART_BAUD)

out UBRRH,R16

<порезано>

 

//передача байта

UART_SB:

out UDR,R16 ;передать

UART_SB1:

in R16,USR ;проверить USR.6=1?

andi R16,0x40

breq UART_SB1 ;нет, передача не закончена

in R16,USR ;сброс бита

ori R16,0x40

out USR,R16

ret

 

;прерывание по приему

UART_RINT:

<порезано>

in R16,UDR ;сохранить байт

st Z,R16

<порезано>

reti

 

чего-то у тебя с инициализацией не то...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ты ждешь когда тебе придет буква "U"? А ты почему при инициализации не включил трансмитер?

 

какой трансмиттер :( , в документации по AT90S2313 про "трансмиттер" ничего не нашел

 

void port_init(void)

{

DDRB =0xFF; //init port B na vixod

PORTB = 0x00; //vkl all

PORTD = 0x00; //port vkl

DDRD = 0x00; //vse na vxod

}

 

//call this routine to initialise all peripherals

 

void init_devices(void)

{

CLI();

 

port_init();

uart0_init();

 

SetBit (SREG,7); //bit maski prerivanii

MCUCR = 0x00;

GIMSK = 0xF0; //obshii registr maski prerivanii

GIFR = 0xF0;

TIMSK = 0xFF; //0x00

TIFR=0xFF

 

SEI();

 

}

 

//UART0 initialisation

// desired baud rate: 9600

// actual: baud rate:9600 (0,0%)

//

void uart0_init(void)

{

UCR = 0x00; //disable while setting baud rate

UBRR = 0x17; //set baud rate

// UBRR = 0x23; //set baud rate

UCR = 0x09; //enable

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.......

void uart0_init(void)

{

UCR  = 0x00; //disable while setting baud rate

UBRR = 0x17; //set baud rate

// UBRR = 0x23; //set baud rate

UCR  = 0x09; //enable                                                <-----!!!!!!

}

 

Передатчик как раз включен, выключен приемник. RXEN установить надо. И прерывания от UART (RXCIE,TXCIE) почему-то выключены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...