USI-UART--- Wait for incomming data

Gast #2767629
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
Gast #2767662
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;
...

---------------------------------------------
Gast #2767672
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren