Hallo zusammen, beschäftige mich gerade mit der UART und komme einfach nicht weiter: 1. Habe ein STK500 Board mit einem 8515. Finde in den Datasheets leider keinen Hinweis darauf, hinter welchen Pins sich beim 8515 Txd und Rxd verstecken. Habe aus dem User Guide entnommen, dass es sich um die Pins 0 und 1 des Ports D handeln soll. Ist das korrekt? 2. Habe gelesen, dass man die Pins 0 und 1 des Ports D mit den Stiften Rxd und Txd verbinden soll, um die Uart CTRL nutzen zu können. Muß noch irgendetwas anderes gemacht werden? 3. Habe darauf geachtet, dass Pin 0 mit Txd und Pin 1 mit Rxd verbunden wurden. 4. Habe mir mittlerweile 3 Beispiele aus dem Netz geholt, aber beim obigen Aufbau bekomme ich keine Verbindung mit dem Rechner. Glaube aber nicht, dass es an der Rechnerseite liegt, da beim ´gleichen Aufbau mit z.B. der CControl das ganze problemlos läuft. P.s. Habe am Rechner 8,N,1 mit 9600 Baud eingestellt. Hat jemand ne Idee? Olli
Hallo Olli, ich habe auch das STK500 und hatte auch erst Probleme: 1. Ich hatte auf der PC-Seite das falsche Protokoll ausgesucht. 2. Ich habe nach dem ISP-Programmieren kein RESET des AVRs durchgeführt, dieser sendet dadurch nur Müll Hast du mal an TxD gemessen?
Hi Matthias, habe das Problem mittlerweile gelöst. Einerseits lag es daran, dass ich immer davon ausgegangen bin, dass das STK 500 einen 4MHZ Quarz besitz, wodurch ich den Bauteiler auf 25 eingestellt hatte. Es wurden so zwar alle Bytes an den Computer gesandt, allerdings waren sie fehlerhaft. So sollte z.B. &H30 gesendet werden und am Rechner kam &H60 raus usw. Mit einem Baudteiler von nunmehr 24 funktioniert die Übertragung sehr gut. Interessanter Weise mußte ich aber auch die Schnittstelle am Rechner wechseln. Programmiere ich den AVR z.B. mit dem AVR Studio über COM1, dann kann ich - trotz reseten und neustarten des Controllers - nur über die COM2 kommunizieren. Versuche ich eine Kommunikation über die COM1, solange wie das AVR Studio läuft, kommt nichts an. Das Programm scheint die ganze Zeit die COM1 zu belegen. Gruß Olli
Das Problem mit den offenen Anschlüssen liegt an der Windows-Version. Für welche Baudrate verwendest du den Baudteiler 24? Für 9600 Baud bei 3,69MHz must du den Baudteiler 23 verwenden. Gruß Matthias
Hi Matthias, verwende 24 bei 9600 baud. Rechnerisch ergibt sich daraus ne Taktfrequenz von 3,8.. Mhz. Der AVr auf dem Board funktioniert damit schon ein paar Tage ohne Fehler. Frage mich aber bitte nicht, welche Taktfrequenz auf dem Board eingestellt ist. Bin leider Newbie und hab noch nicht geschnallt, wie ich das rausfinde. Den Baudteiler habe ich durchs experimentieren rausgefunden. Damit war die Fehlerhäufigkeit gleich null. Mit anderen Teilern hat es bei der jetzigen Einstellung nicht funktioniert. Fast jedes Byte war fehlerhaft. Olli
Hallo Olli, falls du das AVR-Studio verwendest (davon gehe ich aus), kannst du, wenn du auf das AVR-Symbol klickst, öffnet sich das STK500 Frontend. Dort kannst du auf der Seite "Board" in dem Auswahlfenster "Oszillator" die Taktfrequenz des STK500 einstellen. Die Werte, die du dort einstellen kannst sind auf 2 Nachkommastellen gerundet. D.h. du suchst dort 3.69MHz aus, und es wird 3,6864MHz eingestellt. Die Baudraten-Teiler und die genauen Frequenzen kannst du dem Datenblatt entnehmen. Ich habe sie aus dem Datenblatt des AT90S8515 aus dem Kapitel des UART entnommen (Seite 58). Hast du sonst noch irgendwelche Probleme mit den AVR's? Gruß Matthias
Hallo, ich habe auch eine Frage zum UART. Ich habe das SENDEN schon hinbekommen (so wie im Tutorial beschrieben) Aber wie empfange ich daten ? Ist das auch so einfach? jo Axel
Hi Axel, das Empfangen von Daten ist eigentlich auch sehr einfach. Wenn Du Probleme hast, frag einfach nach. Olli
Hi Matthias, richtige Probleme habe ich derzeit - glücklicherweise - nicht. Bin darüber sehr überrascht. Hatte mir den Umstieg von der CControll auf den AVR (und Assembler) viel schwieriger vorgestellt. Muß aber auch sagen, dass der Support hier übers Forum echt gut ist. Versuche mich als nächstes mal am DCF Empfänger. Befürchte, dass dann wieder die problemlose Zeit vorbei ist.... Olli
OK. Bitte erklärt mir, wie man empfängt! Senden ist ja wirklich einfach: sbi UCSRB,TXEN ;TX aktivieren ldi temp,4000000/(1200*16)-1 ;Baudrate 1200 einstellen out UBRR,temp ; Ein "A" senden ldi temp, 'A' wait: sbis UCSRA,UDRE ;Warten, bis UDR bereit ist rjmp wait out UDR, temp jo Axel
Hallo Axel, im Anhang befindet sich ein von mir erstelltes Assemblerprogramm zum senden und empfangen über den UART. Es empfängt ASCII-Zeichen("1..8") und schalten die auf Leds, und sendet den Status der Taster. Gruß Matthias
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.