Forum: Mikrocontroller und Digitale Elektronik USI-UART--- Wait for incomming data


von Stefan (Gast)


Lesenswert?

Hallo,

ich versuche gerade die USI eines ATTINY25 softwaremäßig in eine UART 
umzubauen.
Dazu habe ich mehrere Foren durchwühlt und habe letztendlich den 
Quellcode der AVR307 gewählt. Mein Problem hierbei ist, dass sich mein 
Code in folgender Zeile aufhängt:


   while ( UART_RxHead == UART_RxTail );         // Wait for incomming 
data


Daten werden aber ständig an den Pin 0 geliefert (habe dieses mit einem 
Oszi überprüft) Der Pin ist als Input geschalten und mit einem Pull-Up 
versehen.

Hoffe, dass mit jemand weiterhelfen kann.

Danke, Stefan

von Peter II (Gast)


Lesenswert?

wo werden denn die variabeln UART_RxHead, UART_RxTail geändert? volatile 
vergessen?

von Stefan (Gast)


Lesenswert?

Nein, habe ich nicht vergessen


werden hier geändert:
---------------------------------------------
unsigned char USI_UART_Receive_Byte( void )
{
    unsigned char temp;

    while ( UART_RxHead == UART_RxTail );
    temp = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;


    UART_RxTail = temp;



    return Bit_Reverse(UART_RxBuf[temp]);
}


---------------------------------------------
bzw.
---------------------------------------------


ISR(USI_OVF_vect)
{
...

    else
    {
        UART_RxHead = temphead;
...

---------------------------------------------

von Peter II (Gast)


Lesenswert?

und wo sind UART_RxHead und UART_RxTail deklariert?

von Stefan (Gast)


Lesenswert?

kopiert von Atmel


//********** Static Variables **********//


static unsigned char          UART_RxBuf[UART_RX_BUFFER_SIZE];
static volatile unsigned char UART_RxHead;
static volatile unsigned char UART_RxTail;

von Stefan (Gast)


Lesenswert?

also als globale Variablen, falls du das wissen wolltest.


Aber da es nie zu einem Usi-overflow kommt, kann der rx_head ja auch nie 
beschrieben werden

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.