www.mikrocontroller.net

Forum: Compiler & IDEs ATmega 162 uart problem


Autor: snakendaken (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=19...

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

Autor: snakendaken (Gast)
Datum:

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.