Forum: Compiler & IDEs ATmega 162 uart problem


von snakendaken (Gast)


Lesenswert?

Hallo,
ich bin ziemlich neu mit microcontrollern,
also ich habe einen ATmega 162 mit externem 16mhz takt und möchte dass
er daten per uart an meinen pc sendet, später auch ma zurück wie im
tutourial.
Klingt ja eingeltich einfach aber egal was ich gemacht hab, es
funktionierte entweder garnnicht oder ich bekam nur € zeichen in hex
auch 00 und 80,
ich habe schon viele andere beiträge durchgelesen aber genutzt hats
irgendwie nix, troz dass ich jetzt schon seit 3 tagen rum probiere.
Ich habe auch in einem anderen forum einen beitrag gefunden bei dem
jemand genau das selbe problem hat wie ich aber wie der das da gelöst
hat verstehe ich ned so ganz:
http://www.avrfreaks.net/phpBB2/viewtopic.php?t=19455&highlight=atmega162

hier noch ein so nen code bei dem ich immer die falschen zeichen
bekomm...

.include "m162def.inc"

.def temp = r16
.equ CLOCK = 16000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRR0L, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRR0H, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL0)|(3<<UCSZ00)
        out UCSR0C, temp

        sbi UCSR0B,TXEN                    ; TX aktivieren

loop:                       ; Unterprogramm aufrufen
        ldi temp, 'A'
  out UDR, temp
        rcall serout                      ; Unterprogramm aufrufen
                rjmp loop

serout:
        sbis UCSR0A,UDRE                   ; Warten bis UDR für das
nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                               ; zurück zum Hauptprogramm

wäre nett wenn mir jemand helfen könnte, thx

von snakendaken (Gast)


Lesenswert?

also ich habs nun endlich rausgefunden...
die CKOUT und CKDIV8 sind von werk aus so gesetzt dass es für uart ned
geht....

von Rahul (Gast)


Lesenswert?

Kann es sein, dass Du immer zwei 'A' empfängst?
So wie ich deinen Code verstehe, schreibst du bevor du aus dem
Unterprogramm zurückspringst noch mal das 'A'ins UDR. Wäre der AVR
nicht so schnell, oder hättest du noch mehr Code nach dem 2. "out
UDR, temp", würde noch ein Buchstabe gesendet werden. Der wird aber
überschrieben.. etwas unsauber würde ich das nennen.
Gruß Rahul

von Jogi (Gast)


Lesenswert?

Hallo Du betreibst dein Atmega mit 16 MHZ wollt Dich nun fragen welchen
Kombination hast du bei den Fuse Bits gewählt?
Ich will ein ATmega 128 auf externe Beschaltung einstellen aber komme
mit den Datenblättern nicht so klar.
Das Nächste ist das ich die Serielle Schnittstelle noch progranieren
will wie gehe ich da am besten vor?
Danke schon mal
Jörg

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
Noch kein Account? Hier anmelden.