Atmega88 RX IT
Fuzesi Arnold
arno at externet.hu
Wed May 11 12:58:34 CEST 2005
Framing error-ban ragad benn, mostmar tuti.
A while ciklusban.
Megneztem a proci RX, TX laban stabil 1 van. (amugy egy 75176B rs485 driver
megy ra.)
Hümmm...
Viszont ha magara hagyom a 75176B-t, akkor a data kimenete 0 !!!!!!!!!!!!
(még semmi nincs a 75176 driver reszen, sem lezaras, sem szethuzas. De ennek
ellenere nem szabadna 0-t adnia...)
Az adatlap az irja, hogy:
DIFFERENTIAL INPUTS ENABLE OUTPUT
A - B RE R
Open L H
Asszem cserelek egyet...
Viszton ha be van dugva az rs485, akkor 1-ben van szépen ahogy kell.
De ennek ellenere a proci a while ciklusban marad...
Arnold
----- Original Message -----
From: "Fuzesi Arnold" <arno at externet.hu>
To: <elektro at tesla.hu>; <retro at lists.tmp.hu>
Sent: Wednesday, May 11, 2005 12:05 PM
Subject: Atmega88 RX IT
> Sziasztok!
>
> Van tippetek arra miert "fagy" egy atmega 88 néha, ha az RXC interrupt
> engedelyezve van?
> Tipikusan ha glitch megy a rx vonalra, akkor teszi ezt.
>
> Nem ertem miert... :(
>
> Igy nez ki az IT:
>
> #pragma vector=USART_RX_vect
> __interrupt void USART_RX_handler(void)
> {
> uchar temp;
> /* if(gbi(UCSR0A,FE0)){ //framing error
> while(gbi(UCSR0A,RXC0)) temp=UDR0;
> return;
> }
> if(gbi(UCSR0A,DOR0)){ //overrun error
> while(gbi(UCSR0A,RXC0)) temp=UDR0;
> return;
> }
> */
> temp=UDR0;
> comm_ibyte0=temp;
> comm_newbyte0=1;
>
> }
>
> A fenti kikommentezett reszben van a bibi.
> Ha ki van kommentezve akkor minden rendben. Csak neha hibazik.
> Ha nincs, akkor fagyas van.
>
> (gbi() makro teszteli az adott bitet, annyit csinal)
>
> Adatlap szerint:
>
> Flushing the Receive Buffer The receiver buffer FIFO will be flushed when
> the Receiver is disabled, i.e., the buffer
> will be emptied of its contents. Unread data will be lost. If the buffer
has
> to be flushed
> during normal operation, due to for instance an error condition, read the
> UDRn I/O loca-tion
> until the RXCn Flag is cleared. The following code example shows how to
> flush the
> receive buffer.
>
> azaz:
>
> "read the UDRn I/O loca-tion
> until the RXCn Flag is cleared."
>
> Ez hivatott erre a fentiből:
>
> while(gbi(UCSR0A,RXC0)) temp=UDR0;
>
> Annyit még, hogy a proci ICP, INT0, RX laba ossze van kotve. (tobbfele
> program lehet a kutyuben, es mindegyik mast hasznal)
> De mindegyik bemenet, es csak az RX-en van felhuzo bekapcsolva.
> Tobbi megszakitas tiltva.
>
> A bufferelt clockout a portb.0-n (ICP) elvileg tiltva, 1-ben all a neki
> megfelelo fuse.
> (0x62 a ra vonatkozo fusebyte)
>
> Total nem ertem.....
>
>
> Arnold
>
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/
More information about the Elektro
mailing list