www.mikrocontroller.net

Forum: Compiler & IDEs UART PROBLEM MEGA 128 4800BAUD


Autor: SvenP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe ein komisches Phänomen mit meinen MEGA 128.

Habe an UART0 eine GPS Empfänger und an UART 1 EINEN AUSGANG zum PC.

Über die UART0 hohle ich die GPS DATEN und Verarbeite diese und über
UART1 gebe ich sie wieder aus mit 4800 Baud.

wenn ich Hyperterminal aufmache mit 4800,8n1 dann kommt nichts.
Wenn ich den HTERM öffne kommt erst das

þþÿÿþþþþóüþþž¾þþ~þþÿþþÿÿ¾þÿþþÿøüüþžþ~þþ~þþþ~þþþþþþþ~þþÿìþžþþ~þ~þþþ¾ÿþÿ~þ 
þþ~þüüÇsÿÿþþÿ~Ê~~ÿÿÿÿùùþ~~~þ~þþnþüü~þÿΎžþ~óþ~,Ïþþ~þþâ~~ÿþþþ~þþóÿÿ~þþò 
þ~þ~þþþ‚¾~~þ~þüüüüþþþÿþþþÎ~þþžþŽùþŽþþÿþÎ~îù~žþþrþ~þ~~þÿ¾~ê~~ì~þþ‚þ~ÿüü 
ÿܯøÿÿ~þ‚bþþ~þ~~bbb~~ÿÿ¯þr‚þì‚ 
b’‚~þ~þ~¤DéÕÔ\<ÿʊ¢Šr¾’Â~ªŠŠÊr¢Âʾ~r±ÃŠŠ‚’~þ’šªb*Ŋbþžbª‚r‚b’òÂr²bj±óºr 
êbj±Ãr‚b‚‚‚þR¢²j¤|’®Ôª(KP–™,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GðRMC,093141.628,A,5119.<8NɊ 
ŠŠ‚žr‚’š¾b*±ƒrʲb’’‚~ªÂb’¢‚þ‚¾bbr‚šj¼|éÕÔT8 
SšŠ¢’r²’ÂbªŠŠÊr¢Ê‚Šbr±ƒŠŠ‚’r‚’¢Žb*,Lߘ3,50.0ì228.6,M,47.5,M,0.0,0000*48
üüüÿìÿ~þ~þ~òÊb~~ÿÿÿ‰ùÿù‚~~þr~æ~þþŠjþü~þÿþžþâš~¾žþ~þ¹SS¦ç‰S‚â~rùþþ‚’rþžþ 
þ~qßL   s~þþ~‚¢bò¢‚þ‚¾bbR‚:
$ÇpÇ\ü  SšŠ¢¢r²þÂbªŠŽÊrþÊþâbrÅþŠŠ‚þr‚ò¾þb*±ÏbþžbMÌ 
b’’þrº~nÿ¢ºrªbjÅþr‚bþ‚‚‚R¢25>>pGSA,A,2,1b’þbžÊbbbbb~bbbbª‚r‚b®‚r‚b’‚r‚R 
‚ŠjüüÇPRMC,0ΦnOš—628,A,5119.4904,N,011’r‚’â¢b*Ŋrò¾b’’‚rª’b’â‚‚²bbR‚Êj 
¤DéÕÔT( 
SšŠâ®r²’ÂbªŠŠÊr¢Ê‚¾br±ÃŠŠ‚’r‚’¢šb*±b‚šbª‚r‚b’’Ârºbn±óºrªbj±ƒr‚b‚‚‚‚R¢Êj 
¤|’ªÔª(KP–™,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
üüÇþð9yóùþ~28,æbbb~~b~~~~ª‚r‚~®‚r‚b’‚~þ~þþj¼Dé×Ü+Ib’b‚þbþ29,3&IÂÂbš²b’ 
¾b’’b’²bš‚bŠšbŠ’bŠ‚‚b‚‚b’Šb‚ºbšš¢b‚‚Rººj¤Dé•Uj 
SšŠ¢ºr²’Âb±ªŠŠÊr¢Ê‚Âbr±ÃŠŠ‚’r‚’¢ºb*Ŋr‚‚b’’Šrªºb’¢‚‚²bbR‚ºj¤DéÕÔT( 
SšŠ¢Âr²’ÂbªŠŠÊr¢ÊŠŠbrłŠŠ‚’r‚’ªŠb*Ŋb‚šbª‚r‚b’’ÂrÂbj±¢ºrªbj±‚r‚b‚‚‚‚R¢Õ 
¤ø’GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
üªÜT< 
SšŠ¢Êr²’ÂbªŠŠÊr¢ÊŠªbr±‚ŠŠ‚’r‚’ªªb*±b‚šbª‚r‚b’’ÂrÂbj±¢ºrªbj±ƒr‚b‚‚‚‚R¢"5 
R>IªÔª(KP–™,10,28,29,,,,,,,,,,50.0,50.0,&n   “  Šj¤DéÕÔT( 
ʚŠª‚r²’ÂbªŠŠÊr¢Ê’‚brłŠŠ‚’r‚’²Šb*±‹b‚šbª‚r‚b’’ÂrÂbj±óºrªbjłr‚b‚‚‚‚R¢¢j 
¤|’ªÔª(KP–™,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GPGGA,093151.628,5119.4923,N,01102.0265,E,1,03,50.0,228.9,M,47.5,M,0.0, 
0000*43
$GPGGA,093152.628,5119.4925,N,01102.0266,E,1,03,50.0,228.9,M,47.5,M,r‚b‚ 
‚‚‚R¢ªj¤|›ªÔª(KPߙ,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GPGSV,2,1,08,08,81,093,36,10,65,245,47,27,51,063,33,28,33,151,36*70
$GPGSV,2,2,08,29,32,288,36,26,22,286,29,13,12,100,00,21,07,334,00*7F
$GPRMC,093152.628,A,5119.4925,N,01102.0266,E,1.19,221.12,240806,,*06
$GPGGA,093153.628,5119.4926,N,01102.0267,E,1,03,50.0,228.9,M,47.5,M,0.0, 
0000*46
$GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
<GPGGA,093155.628,5119.4933,N,01102.0274,E,1,03,50.0,229.0,M,47.5,M,0.0, 
0000*4E
$GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GPGGA,093156.628,5119.4940,N,01102.0282,E,1,03,50.0,229.0,M,47.5,M,0.0, 
0000*40
$GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
<GPGGA,093157.628,5119.4948,N,01102.0292,E,1,03,50.0,229.1,M,47.5,M,0.0, 
0000*49
$GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GPGSV,2,2,08,29,32,288,36,26,22,286,29,13,12,100,00,21,07,334,00*7F
$GPRMC,093157.628,A,5119.4948,N,01102.0292,E,0.89,221.08,240806,,*00
$GPGGA,093158.627,5119.4955,N,01102.0300,E,1,03,50.0,229.1,M,47.5,M,0.0, 
0000*4F
$GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
<GPÇSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GPGGA,093200.627,5119.4976,N,01102.0326,E,1,03,50.0,229.3,M,47.5,M,0.0, 
0000*46
$GPGSA,A,2,10,28,29,,,,,,,,,,50.0,50.0,20.0*01
$GPGGA,093201.627,5119.4987,N,01102.0342,E,1,03,50.0,229.4,M,47.5,M,0.0, 
0000*4C


die Baud berechne ich wie folgt

baudrate=4800
cpuclock 16000000
baud=cpuclock/((baudrate*16L)-1);


Meine UARTS initilaieser ich wie folgt

baud0=cpuclock/((baudrate*16L)-1);
bgaud1=cpuclock/((baudrate*16L)-1);

void init_rs232(unsigned int baud0,unsigned int baud1)
{

UBRR0H= (unsigned char)(baud0>>8);
UBRR0L = (unsigned char) baud0;

UCSR0A = 0x00;      /* USART operates at normal speed */
UCSR0B = (  (1<<RXCIE) | (1<<RXEN));    /* Enable receiver */
UCSR0C = (  (0<<UMSEL) |  /* Configure for asynchronous operation */
        (0<<UPM1)  |  /* No parity */
        (0<<UPM0)  |
        (0<<USBS)  |  /* 1 stopbit */
        (1<<UCSZ1) |  /* 8 data bits */
        (1<<UCSZ0));
  UBRR1H= (unsigned char)(baud1>>8);
  UBRR1L = (unsigned char) baud1;
 UCSR1A = (1 << RXC1) | (1<<TXC1);
  UCSR1B=(1<<RXEN) | (1<<TXEN);
  UCSR1C = (1 << UCSZ10) | (1 << UCSZ11);


}


kann es sein das mein Externer 16MHz Quarzt spinnt oder nicht genau
taktet???

FUSE BITE ist auf 1111 für extern Clock getetzt.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für eine Startup-Time hat dein Oszillator denn?  Ein
Quarz braucht 'ne Weile, bis er stabil läuft.

Autor: SvenP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weiß ich nicht wo kann man es erfahren??ß

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In den Fuses, SUT0 und SUT1.  Siehe Tabelle 9 im Datenblatt.

Autor: SvenP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in den Fuse steht 00 habe es auf 10 eingestellt stable Frequency on
start up.

Hat sich nichts getan genau das selbe.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, vielleicht liest du ja erstmal wahhlos im RAM herum und
gibst den Datenmüll auf die UART aus, bevor deine richtigen
Daten folgen?

SUT = 10 zusammen mit CKSEL0 = 0 wäre auch erst einmal meine
konservative Empfehlung gewesen.

Autor: SvenP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein das ist eben nicht so


Wenn der AVR aus ist und ich starte das Programm HTERM schalte den AVR
an und es kommen saubere NMEA Datensätze.

Ich schließe den COM PORT und öffne das Programm Show GPS dann sagt er
mir das kein GPS Empfänger verbunden ist.

Wenn ich das Progarmm schließe und wieder den HTERM aufmachhe kommt der
Müll wie oben und es Pegelt sich nach einiger Zeit und geöffnetetm HTERM
der saubere NMEA Satz ein.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist völlig normal so, wenn einer lossendet, ehe der andere
empfangsbereit ist.

Der Empfänger kann ja nicht wissen, welche 1-0-Flanke nun das Startbit
ist.

Der Empfänger muß also immer bereit sein, bevor das erste Byte gesendet
wird. Nur so kann er synchron sein.

Alternativ kann der Sender zwischen den Datensätzen eine Pause von 10
Bitzeiten lassen, dann ist der Empfänger beim nächsten Paket synchron.


Unter Windows gibts auch noch nen anderen lustigen Effekt. Windows
stellt einen UART-Puffer von etwa 2kByte bereit.
Wenn also vor Deinem Programm Windows eine andere Baudrate hatte, dann
wird der Puffer mit Müll gefüllt und Du mußt den Puffer erst leer
lesen.
Stell im Gerätemanager gleich die richtige Baudrate ein, dann sollte es
klappen.


Peter

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also

Mal gehts mal gehts nicht im Hypewrterminal bekomme ich wie gesagt gar
nichts ist doch komisch in Show GPS bekomme ich was aber nach einiger
zeit bricht auch er ab und sagt GPS Empfänger nicht mehr
angeschlossen.

Kann es sein das mein Uhrenquarz dran schuld ist seitdem er eingebaut
ist glaub ich gibt es das Problem.

Auch macht mein Display alle Secunde einen Helligkeits blinkerl.
Es sieht aus als ob im secundentackt die Hintergrundblecuhtung schwach
abnimmt.

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gelöst

Es lag an der Leitung zum PC.

Danke

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.