www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Framing Error Frage


Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

woran könnte es liegen dass währen meines Transfers ein Framing Error 
auftritt.

ich verschicke 11 Datenbytes asynchron (UART) über die RS232
an meinem Mikrocontroller AT90S8515

--> heisst das mein Start und Stoppbit nicht richtig erkannt werden??
--> oder liegt es daran, dass zuviele Daten gesendet werden??

darf in einem Programm sowohl das UART als auch die SPI verwendet 
werden??


dankeschön

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Der 8515 kann eigentlich nur 8 oder 9 Datenbits.Wie verschickst du 11 
Datenbytes?

MfG Spess

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ manuete (Gast)

>woran könnte es liegen dass währen meines Transfers ein Framing Error
>auftritt.

Framing Error bedeutet, dass das Stopbit nicht 1 ist. Richtige Baudrate 
und Format eingestellt? Läuft dein uC mit Quarz?

http://www.mikrocontroller.net/articles/AVR-Tutori...

>darf in einem Programm sowohl das UART als auch die SPI verwendet
>werden??

Ja, warum nicht?

MFG
Falk

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi Spess

Über Docklight oder LabView steuere ich das ganze an...also mit beiden 
funkts net...

In meinem Programm, speichere ich die Empfangenen Bytes einzeln auf dem 
Speicher die ich dann weiterverarbeite und über die SPI an 
Schieberegister weitersende

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spess53 wrote:
> Der 8515 kann eigentlich nur 8 oder 9 Datenbits.Wie verschickst du 11
> Datenbytes?
Bit != Byte...

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk,


ja mit einem Quarz von 4MH
Baudrate 9600 8N1
soweit richtig;)

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

@Johannes: Richtig! Hoffe das der Sinn der Frage trotzdem verstanden 
wurde.

Mfg Spess

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann mein Mikrocontroller nicht 11Bytes empfangen?? nacheinander

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Das UART-Datenregister ist 8 Bit breit. Zusätzlich steht in einem 
anderen Register noch ein Bit zur Verfügung. Es können in einem Frame 
maximal 9 Datenbit gesendet oder empfangen werden. Wie hast du dein UART 
eigentlich initialisiert?

MfG Spess

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Framing Error heißt zunächst nur, dass mit dem Frame-Format etwas nicht 
stimmt, also dass z.B. kein Stopbit an der richtigen Stelle erkannt 
wird. Das hat aller Wahrscheinlichkeit nach damit zu tun, dass entweder 
die Takte von Sender und Empfänger nicht ausreichend gut übereinstimmen, 
oder dass der Sender ein anderes Frame-Format verwendet als der 
Empfänger. Hast Du vielleicht beim Sender die Parity aktiviert und beim 
Empfänger nicht? Oder erwartet der Empfänger 2 Stopbits, der Sender 
schickt aber nur eins? Check noch mal alle Einstellungen...

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Baudrate 9600 8N1
Auch im Terminalprogramm?

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.EQU fbd = 9600              ; Baudrate des UART
.EQU bddv = (fqu/(16*fbd))-1 ; Baudraten-Teiler
.EQU fqu = 4000000  ; Quarzfrequenz des AVR

ldi   temp1,bddv          ; Baudrate des UART einstellen
out   UBRR,temp1

sbi   UCR,RXEN
sbi   UCR,TXEN

Empfangen:  ;Empfangsroutine (11Bytes)
sbis   USR,RXC
rjmp   Empfangen

FrameError:
sbic   USR,FE
rjmp  Empfangen

in temp1,UDR
st  X+,temp1

inc  SchlZaY
cpi   SchlZaY,11
brne   Empfangen

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja auch im Terminal alle Einstellungen vorgenommen

also wenn ich mein Programm aufm STK500 teste dann tritt der Framming 
Error net auf...;)

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich verschicke: über Docklight z.B. dies

02 FF FF FF FF FF FF FF FF 00 03 (11Bytes)

über meine Empfangsroutine müssten doch diese 11Bytes (1Byte = 10Bit 
inklusive 1Start-und 1Stoppbit)
die für die Weiterverarbeitung dann bereitstehen

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.EQU bddv = (fqu/(16*fbd))-1 ; Baudraten-Teiler
.EQU fqu = 4000000  ; Quarzfrequenz des AVR
Ich würde einen Bezeichner definieren, bevor ich ihn in einer weiteren 
Definition verwende...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ manuete (Gast)

>ja mit einem Quarz von 4MH
>Baudrate 9600 8N1

Sind die Fuses richtig gesetzt, dass der auch verwendt wird? Sonst läuft 
dein Controller vielleicht mit dem interen RC-OSzillator mit 4 MHz. 
Sende mal viele Daten vom uC zum PC. Wenn da Aussetzer drin sind stimmt 
deine Baudrate nicht.

MFG
Falk

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
manuete wrote:
> über meine Empfangsroutine müssten doch diese 11Bytes (1Byte = 10Bit
> inklusive 1Start-und 1Stoppbit)
> die für die Weiterverarbeitung dann bereitstehen
Wenn sie richtig empfangen und weiterverarbeitet werden, dann ja.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:
> Sind die Fuses richtig gesetzt, dass der auch verwendt wird? Sonst läuft
> dein Controller vielleicht mit dem interen RC-OSzillator mit 4 MHz.
> Sende mal viele Daten vom uC zum PC. Wenn da Aussetzer drin sind stimmt
> deine Baudrate nicht.
Der AT90S8515 hat so was tolles wie einen internen Oszi und die 
dazugehörigen Fuses noch nicht. Das ist ein Steinzeit-µC...

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Fuse-Bits muss/kann ich nicht einstellen:)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du sagst, im STK500 klappts, in Deiner Schaltung aber nicht: Wie 
sieht die Treiberschaltung der selbstgebauten Schnittstelle aus? Ich 
würde einen Hardware-Fehler jedenfalls mal nicht ausschließen...

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das müsste soweit ok sein da ich es nicht selbst gemacht habe;)

die einzigste Abweichung von dem vorgegebenem Schaltplan ist, dass statt
100µF --> 1000µF für den MAX232 gelötet sind (5insgesamt)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der MAX232 bekommt Kondensatoren von ~1 µF, und nicht 100 oder 1000 µF! 
Da braucht die Ladungspumpe viel zu lange, um die vollzukriegen.

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ooohh sorry

ich meinte 1µF gelötet
statt die vorgegebenen 100nF auf meinem Schaltplan

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johannes M. (johnny-m)

>Der MAX232 bekommt Kondensatoren von ~1 µF, und nicht 100 oder 1000 µF!
>Da braucht die Ladungspumpe viel zu lange, um die vollzukriegen.

Grössere Cs gehen bei Ladungspumpen fast immer. Das einzige was länger 
dauert ist das erstmalige Hochlaufen. Aber ob das nur 10 oder 1000ms 
dauert ist egal. Im laufenden Betrieb ist das auch egal. Mit 100 oder 
1000uF würde der MAX auch super laufen, die sind nur ein wenig gross ;-)

MFg
Falk

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk,

sprich diesen Fall kann ich dann aussliessen, die 1000nF sind okay

müsste dann nur noch nachmessen  TX und RX richtig

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ manuete (Gast)

>sprich diesen Fall kann ich dann aussliessen, die 1000nF sind okay

Ja, so ziemlich alle heute verfügbaren MAX232 und Konsorten kommen mit 
1uF aus. Nur ältere Typen bauchen 10uF.

MFg
Falk

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein UDR Register kann ja wie vorher erwähnt nur 8Bit empfangen (10 bit 
mit Stopp-und Startbit)

und ich versuch ja 11Bytes zu empfangen...aber ja in einzelne Schritte.. 
senden tue ich aber auf einmal, aber muss doch trotzdem klappen, dafür 
gibts das Schieberegister des UARTs

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könnte es vielleicht sein, das ich beim MAX232 TX und RX vertauscht habe 
oder so beim Löten auf die Platine

und deswegen Framing Error, oder ein unendlicher Error als Antwort 
erhalte

Wie kriege ich das raus, obs vertauscht ist

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ manuete (Gast)

>könnte es vielleicht sein, das ich beim MAX232 TX und RX vertauscht habe
>oder so beim Löten auf die Platine

>Wie kriege ich das raus, obs vertauscht ist

Mach ein Loop-back. Sprich, einfach jedes Zeichen was reinkommt gleich 
wieder ausgeben. Dann must du im Hypererminal deine eingegebenen Zeichen 
sehen.

MFG
Falk

Autor: manuete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke werd es morgen dann probieren, da ich gerade meinen STK500 
abgeschossen habe :)

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.