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
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
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
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?
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.
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/Loesungshinweise_zum_Praktikumsversuch_C7.pdf Aber wie immer wärst über Google 3 mal schneller gewesen. Naja, gegen Faulheit kann man nichts machen. Viel Spaß beim proggen.
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
Hallo, als Software für den PC kann ich nur Profilab Expert empfehlen !! Siehe : http://forum.abacom-online.de/phpBB3/viewtopic.php?f=21&t=1478 Gruß Uwe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.