www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Kommunikation ATmega8


Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute
versuche mich gerade an UART... Hab dazu zwei Fragen:
Erstens: Ich verwende einen ATmega8 mit einem 16MHz Quarz, welches auch 
funktioniert! (Hab ich mit nen Timer ausprobiert...)
Als Baudrate will ich 9600 verwenden. In UBRR muss ich dann den Wert 103 
schreiben oder? Bin mir nicht sicher ob ich das richtig abgelesen 
habe...
Der Fehler müsste mit 0,2 % akzeptabel sein!
Und Zweitens: Wie kann ich jetzt mit dem Computer Daten austauschen? 
Muss ich da erst in zb. C++ ein Programm schreiben? (Hab gute C++ 
Kenntnisse vll kennt ja jmd ein Tutorial oder so)
Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einsteiger schrieb:
> Hallo Leute
> versuche mich gerade an UART... Hab dazu zwei Fragen:
> Erstens: Ich verwende einen ATmega8 mit einem 16MHz Quarz, welches auch
> funktioniert! (Hab ich mit nen Timer ausprobiert...)
> Als Baudrate will ich 9600 verwenden. In UBRR muss ich dann den Wert 103
> schreiben oder?

Im Prinzip ja (denke ich mal).
Aber was kümmert dich das? Wenn du es richtig machst, dann lässt du den 
Compiler das für dich ausrechnen.

> Kenntnisse vll kennt ja jmd ein Tutorial oder so)

Jup. Hier auf der Site gibt es ein Tutorial.
AVR-GCC-Tutorial

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Nun, es gibt schon eine Möglichkeit einfach mit einem Terminalprogramm 
zu kommunizieren, aber es macht auch Spaß, eine eigene Software für den 
µC zu programmieren. Ich habe sowas mit Delphi gemacht und das hat auch 
ganz gut funktioniert. Da mein Delphi etwas veraltet ist, hab ich es 
jetzt mit Lazarus versucht, da harpert's noch ein wenig. Aber wie es 
aussieht, kannst du dir mit OpenEye ansehen. Ist hier irgendwo 
veröffentlicht. Es ist eine Software, die ich mir eigentlich für 
Assemblerprogramme geschrieben habe, aber sie sollte auch unter C 
verwendbar sein. Sie reagiert auf eine Anzahl von Bytes, die vom 
Controller kommen, wenn ein Steuerzeichen vom PC gesendet wird. Im 
Controller ist eine Routine, die dann ab einer SRam-Adresse N-Bytes 
versendet. Damit habe ich die Variablenwerte im PC und kann Onlie das 
µC-Programm kontrollieren. Ein Beispiel für den Atmega8 sollte in der 
Doku auch sein.
Gruß oldmax

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist aber ein Tutorial darüber wie der Mikrocontroller programmiert 
werden muss oder nicht? Ich bräuchte eins, das mir erklärt wie ich mit 
dem C++ die Serielle Schnittstelle des Pcs ansteuern kann, an der 
wiederum der Mikrocontroller hängt... Ich will also mit meinem Program 
auf dem Computer mit dem Mikrocontroller kommunizieren! Oder gibts da 
schon fertige Programme?

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:) war zu langsam... werds mal suchen!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einsteiger schrieb:
> Das ist aber ein Tutorial darüber wie der Mikrocontroller programmiert
> werden muss oder nicht?

Ja klar.
Der Großteil deines Textes beschäftigt sich ja auch damit

> Ich bräuchte eins, das mir erklärt wie ich mit
> dem C++ die Serielle Schnittstelle des Pcs ansteuern kann, an der
> wiederum der Mikrocontroller hängt...

Das musst du dir woanders suchen.
google "C++ serielle Schnittstelle" eventuell noch den Namen deines 
Compilers als Suchbegriff und du kannst aus dem Vollen schöpfen.

> Ich will also mit meinem Program
> auf dem Computer mit dem Mikrocontroller kommunizieren! Oder gibts da
> schon fertige Programme?

Fürs erste:
Hyperterminal  (wird mit Windows ausgeliefert)
HTerm

Damit kannst du dir erst mal anzeigen lassen, was auf der Seriellen so 
alles reinkommt. Du kannst auch selbst etwas zum µC senden.

Für weitergehende Dinge wirst du allerdings PC-seitig Programmieren 
müssen.

Autor: htw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einsteiger schrieb:
> Ich bräuchte eins, das mir erklärt wie ich mit
> dem C++ die Serielle Schnittstelle des Pcs ansteuern kann

schau dir mal das an:
http://www.htw-dresden.de/~hkuehn/CST_Praktikum/C7...

Aber wie immer wärst über Google 3 mal schneller gewesen. Naja, gegen 
Faulheit kann man nichts machen. Viel Spaß beim proggen.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schick Dir mal ein Beispiel aus einer meiner kleinen spielerein mit 
dem Com Port, vieleicht gehts schöner, hat aber funktioniert


COMMTIMEOUTS timeouts;
HANDLE hdl;

hdl= CreateFile("COM1", 
GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0, NULL);

ConfigComPort(hdl);
GetCommTimeouts(hdl,&timeouts);
timeouts.ReadIntervalTimeout =100;           // wait max. 1000ms between 
two received bytes
timeouts.ReadTotalTimeoutMultiplier =100;    // wait max. 100ms per each 
byte to receive
SetCommTimeouts(hdl,&timeouts);


void ConfigComPort(HANDLE hCom)
{
   DCB dcb;
   if(hCom != INVALID_HANDLE_VALUE)
   {
     GetCommState(hCom,&dcb);

     dcb.BaudRate = CBR_57600;
     dcb.ByteSize = 8;
     dcb.StopBits =ONESTOPBIT;
     dcb.Parity   =NOPARITY;
     dcb.fParity  = 0;
     dcb.fBinary  =1;
     dcb.fDtrControl =DTR_CONTROL_DISABLE;
     dcb.fDsrSensitivity =0;
     dcb.fDtrControl =0;
     dcb.fInX =0;
     dcb.fNull =0;
     dcb.fOutX =0;
     dcb.fOutxCtsFlow=0;
     dcb.fOutxDsrFlow=0;
     dcb.fRtsControl =0;

     SetCommState(hCom,&dcb);
   }
   else
   {
      cout << "Invalid Handle, cannot open Port" << endl;
   }
}


dann kannst Du mit writefile und readfile daten lesen und schreiben

Autor: Uwe Castagne (Firma: privat) (olmuk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

als Software für den PC kann ich nur Profilab Expert empfehlen !!

Siehe :  http://forum.abacom-online.de/phpBB3/viewtopic.php...

Gruß Uwe

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.