USART Problem mit Framing Error und Folgebyte

OP #820932
Lesenswert?
• ▲
▼
Hallo!

Ich versuche die ganze Zeit schon wenn nach einem framing error das 
nächste byte die Zahl 1 ist ein bit zu setzten irgendwie will es aber 
nicht ganze.

Hier der Code:

if ((1<<FE)&UCSRA)
{
    if (UDR==1)
    {
        prgm=1;
    }
}

Ich arbeite mit Codevision.

Danke
Gruß
#820965
Lesenswert?
• ▲
▼
Philip Graf wrote:
> Hier der Code:

Ne, das ist vielleicht alles mögliche, aber auf keinen Fall Code!


Code ist ein File, das ein Compiler ohne Warnungen und Error übersetzen 
kann.

Also alle benötigten Header, Funktionen, Variablendeklarationen und das 
Main enthaltend.
Erfahrene Programmierer packen auch noch das Makefile hinzu.


Peter
OP #820968
Lesenswert?
• ▲
▼
#include <mega32.h>
#include <delay.h>

eeprom int adresse_fix;

int adresse,adresse_start;
char dmx[512],mac1,mac2,mac3;
int prgm;
unsigned int count0,pwm0,count1,pwm1,count2,pwm2;
char e[9];

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)

interrupt [USART_RXC] void usart_rx_isr(void)
{
if ((UCSRA & (1<<OVR))|(adresse>512))
{
    adresse=515;
}
if ((1<<FE)&UCSRA)
{
    //if (dmx[1]==1) {  } else { PORTB.4=0; }
    if (UDR==0)
    {
      adresse=0;
    }
    else if (UDR==1)
    {
      prgm=1;
    }
    else if (UDR==2)
    {
      prgm=2;
      PORTB.4=1;
    }
    else
    {
      adresse=515;
    }
}
else
{
    dmx[adresse++]=UDR;
}

}

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