www.mikrocontroller.net

Forum: Compiler & IDEs Serielles Echo liefert nicht alle Tasten korrekt zurück


Autor: SkySurfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hab einen ATMega 8 mit einem FT232 mit dem PC verbunden.
Und wollte zum testen ein serielles Echos schreiben:

echo.c:
#include "serialIO.h"

#define FOSC 1200000
#define BAUD 9600
#define UBRR FOSC/16/BAUD-1


void main(void)
{
  USART_Init(UBRR) ;
  
  
  while(1)
  {
    USART_Transmit(USART_Receive());
  }
}

serialIO.c:
#include "serialIO.h"

void USART_Init(unsigned int ubrr)
{
  // Calc speed
  //unsigned int ubrr = freq / 16 / baud - 1;  

  // Set Baudrate 
  UBRRH = (unsigned char) (ubrr>>8);
  UBRRL = (unsigned char) ubrr;
  
  // Enable RX and TX
  UCSRB = (1<<RXEN)|(1<<TXEN);
  // Set 8n1
  UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
}

void USART_Transmit(char data)
{
  // Wait for empty transmit buffer
  while(!(UCSRA & (1<<UDRE)) );

  // Set data
  UDR = data;
}

char USART_Receive(void)
{
  // Wait for data to be received
  while(!(UCSRA & (1<<RXC)) );

  // Get Data and return
  return UDR;
}

Jedoch wird aus einem s  ein c  machmal werden die Buchstaben auch als 
Großbuchstaben ausgegeben. Woran könnte das liegen ?

Gruß SkySurfer

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es könnte an deiner Quarzfrequenz liegen, 12MHz ist kein Baudratenquarz. 
Daher hast du evtl. zu große Toleranzen in den Bitzeiten (mehr als 3% 
Abweichung sind glaub ich nicht erlaubt). Probier es mal mit einem 
11,0592 MHz Quarz. Musst halt die Software entsprechend anpassen.

Ralf

Autor: M80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehler --> 0,159999%

Autor: M80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>#define UBRR FOSC/16/BAUD-1

#define UBRR FOSC/(16*BAUD)-1

Autor: M80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei -> #define FOSC 1200000 eine Null mehr, sonst sind es nur 1,2MHz

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@M80:
schlaumeier ;)
> #define UBRR FOSC/16/BAUD-1
und
> #define UBRR FOSC/(16*BAUD)-1
ist das Gleiche, solange die Divisionen von links nach rechts 
abgearbeitet werden, was normalerweise der Fall ist.
scnr

-- Jörg

Autor: M80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eiferbibsch ja sowas auch.

Autor: SkySurfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit der Richtigen Frequenz funktioniert das gleich viel besser, nur noch 
Umlaute werden falsch dargestellt, könnte das an der Terminaleinstellung 
liegen?

Ich hab in der Main noch :
  USART_Receive(); // für einfacheres Programmieren

  USART_Transmit('H');
  USART_Transmit('a');
  USART_Transmit('l');
  USART_Transmit('l');
  USART_Transmit('o');

eingefügt bekomme aber immer noch die Zeichenkette : Tœeo  wobei das 2. 
Zeichen abhängig von der Eingabe ist mit der man das erste UART_Receive 
beendet.

Autor: M80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welches Terminalprogramm hast Du?

Autor: SkySurfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HyperTerminal

Autor: M80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutze dieses Programm -> http://www.docklight.de/index_de.htm
damit hast du mehr Möglichkeiten.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HTerm ist auch ziemlich gut, auch wenn du am Anfang mit dem Funktionen 
überhäuft wirst ;)

http://www.der-hammer.info/terminal/

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.