Hallo, ich habe das Beispielprogramm hier aus dem Tutorial (UART) kopiert, die F_CPU auf 3960000 angepasst und das sollte eigentlich "Test!" am Hyperterminal zeigen. Ich benutze das STK500 und einen Atmega8-16PU. Das 2 adrige Kabel hab ich von dem RS232 Jumper an die entsprechenden PINS (PD0 u. PD1) gesteckt. Als Takt möchte ich den intern erzeugten des STK500 benutzen deshalb brauch ich ja an den Jumpern nichts zu verändern. Mit den FUSE Bit's hab ich ein bisschen gespielt aber komischerweise bekomme ich nur, wenn ich den internen Takt wähle, wirre Zeichen am Hyperterminal angezeigt. Laut Dokumentation des STK500 müsste ich eigentlich einen externen Takt auswählen. Kann mir jemand sagen was genau bei den Fusebits eingestellt werden muß oder was sonst noch falsch sein könnte? Die Postings mit ähnlichen Themen haben mir leider nicht weiter geholfen :-( Danke schon mal!
Um den Takt vom STK500 an den AVR zu legen muss sehr wohl ein Jumper gesteckt werden. Ich glaub Xtal oder so heißt der. Zu den Fuses: http://palmavr.sourceforge.net/cgi-bin/fc.cgi Low: 0xFF, High: 0x99 müsste z.B. funktionieren. Aber auch nur wenn das STK500 richtig konfiguriert ist (sprich: externer Takt liegt am Controller an).
Bei einem fabrikfrischen ATMEGA8 ist der int. Oszillator aktiv. Es genügt nicht einen ext. Quarz anzuschließen, man mus die fuses setzten Falls erforderlich schreibe ich Schritt für Schritt, wie man das macht. Mir hat das Buch AVR mikrokontroller Lehrbuch sehr geholfen. Gruß Uwe
Hallo Uwe, wie ich am Namen sehe Funkamateur ;-) (ich auch ...). Wäre nicht schlecht wenn Du mir mehr Einzelheiten schreiben könntest. Ich hab keinen externen Quarz angeschlossen, die Taktfrequenz wird durch das STK500 generiert. Im Handbuch vom STK500 steht dann, dass man trotzdem EXT Clock über die Fusebits einstellen soll. Momentan komm ich leider nicht an das Handbuch dran sonst hätte ich die Passage rein kopiert. Ich schreib dann später nochmal.
so, ich versuche mal noch ein paar mehr Details zu posten. Also in der Doku vom STK500 steht folgendes: ------------------------------------ When the XTAL1 jumper is mounted, the STK500 internal clock system is used as main clock to the target AVR. The internal clock system can either use a crystal in the on-board crystal socket or a software-generated clock from the master microcontroller. The frequency of the software-generated clock can be set from 0 to 3.68 MHz. The default value is 3.68 MHz. Section 5.3.5.3 on page 5-7 explains how to set the clock frequency from AVR Studio. When using the STK500 software-generated clock system as main clock, the target AVR microcontroller fuses should be configured for “external clock” as clock source. ------------------------------------- Der Code für den UART ist das (Auszug aus dem Tutorial für UART): .include "m8def.inc" .def temp = r16 ; Register für kleinere Arbeiten .def zeichen = r17 ; in diesem Register wird das Zeichen an die ; Ausgabefunktion übergeben .equ F_CPU = 4000000 ; Systemtakt in Hz .equ BAUD = 9600 ; Baudrate ; Berechnungen .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; clever runden .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; Reale Baudrate .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; Fehler in Promille .if ((BAUD_ERROR>10) || (BAUD_ERROR<-10)) ; max. +/-10 Promille Fehler .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!" .endif --------- bei mir hab ich statt .equ F_CPU = 4000000 .equ F_CPU = 3686000 geschrieben weil der interne Takt so groß ist. wie in der Beschreibung vom STK beschrieben ist sollten die Fuses für “external clock” definiert werden. Leider ist das nicht eindeutig. Wie man im Anhang sehen kann gibt's da mehrere Möglichkeiten. Ich hab alle ext. Clock ausprobiert aber leider ohne Erfolg. Woran kann es liegen? Danke für Eure Hilfe :-)
Hi Ich habe zwar die Takterzeugung des STK noch nie nachgemessen. Aber ich könnte mir vorstellen, das die nicht so genau ist, um für eine UART ausreichend zu sein. Selbst mit einem 'Nicht-Baudraten-Quarz' >= 4MHz dürfte eine genauere Baudrate möglich sein. MfG Spess
Hallo spess53, Danke für die schnelle Rückmeldung. Dann wär es wohl besser wenn ich mir so einen 4Mhz Quarz kaufe und mit dem dann weiter mache?! Ich muß sowieso in den Bastlerladen ;-) ... Gruß Roger
hab jetzt einfach mal den internen Takt bei den Fuses genommen und im Programm 4 Mhz eingestellt und siehe da es geht :-). Ist wahrscheinlich nicht so stabil aber für meine Testzwecke reicht's erstmal ....
Hi Wenn du schon Kaufen must, dann nimm gleich einen 'Baudraten-Quarz': 4,9152MHz, 6,144MHz oder 7,3728MHz. Gibt noch mehr. Damit bekommst du bei (fast) allen Baudraten einen Fehler von Null. MfG Spess
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.