Atmega8 - RS232 - UART mit STK500 -> Problem Zeichenzu empfangen

OP #1098800
Lesenswert?

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!
OP #1099152
Lesenswert?

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.
OP #1099754
Lesenswert?

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 :-)
Angehängte Dateien:
Gast #1099777
Lesenswert?

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
Gast #1099793
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren