mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USART Problem mit Framing Error und Folgebyte


Autor: Philip Graf (silverstar)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philip Graf (silverstar)
Datum:

Bewertung
0 lesenswert
nicht 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;
}

}

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit deiner Routine liest du auch nicht das 1. nächste Byte nach dem FE 
sondern den Wert des Bytes mit FE und der ist eh ungültig.

Sascha

Autor: Philip Graf (silverstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke.

wie kann ich dass nun am einfachsten realisieren dass er das erste Byte 
ausliest?

Autor: Philip Graf (silverstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem ist gelöst.

danke für die Hilfe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.