Mega128 und USART

Gast #59335
Hallo Leute!
Ich wollte, als Neuling, jetzt mal das USART meines Mega128 zum laufen
bringen. Fürs Debuggen. Dazu habe ich mir das Tut von der Seite hier
angesehen und benutze es jetzt nachdem ich es für den Mega128 angepasst
habe.
Leider funzt es nicht so wie es soll.
AVStudio bringt mir beim Kompilieren immer Fehlermeldungen:
F:\AVR\uart\uart.asm(24) : error : Illegal argument type or count
F:\AVR\uart\uart.asm(31) : error : Illegal argument type or count
F:\AVR\uart\uart.asm(61) : error : Undefined variable referenced
Assembly complete with 3 errors

Der Code:
.nolist
.include "m128def.inc"
.list

.def temp = r16

.CSEG
.ORG 0x00
  rjmp init


init:
  ldi temp, HIGH(RAMEND)
  out SPH, temp
  ldi temp, LOW(RAMEND)
  out SPL, temp

  ldi temp, 0xFF
  out DDRB, temp
  out PORTB, temp

  ; Set baud rate
  ldi temp, 0x00
  out UBRR0H, temp               ;Hier die erste Fehlermeldung.
  ldi temp, 23
  out UBRR0L, temp

  sbi UCSR0B,TXEN                 ;TX aktivieren

  ldi temp, (3<<UCSZ0)  ;Frame Mode: 8bit, 1 Stopbit, kein Parity
  out UCSR0C, temp  ;Hier ist die zweite Fehlermeldung.

  ldi r17, 0x00

start:

  ldi temp, 'T'
  rcall senduart
  ldi temp, 'e'
  rcall senduart
  ldi temp, 's'
  rcall senduart
  ldi temp, 't'
  rcall senduart

  inc r17
  brcs start1

  rjmp start

start1:
  in r18, PINB
  com r18
  out PORTB, r18
  ret


senduart:
        sbis UCSR0A,UDRE                   ; Warten bis UDR für das
nächste                                         ; Byte bereit ist
        rjmp senduart
        out UDR, temp     ; Und hier die dritte Fehlermeldung
        ret                               ; zurück zum Hauptprogramm

Ich hoffe ihr könnt mir helfen wo der Hund begraben liegt.
MFG und danke
Wolfgang
Gast
Hallo Wolfgang,

ersetze mal die OUT-Befehle durch STS. Ich meine mich erinnern zu
können, dass das im erweiterten I/O-Bereich notwendig ist, arbeite aber
nicht mit dem ATmega128 und bin gerade zu faul, im Datenblatt
nachzuschauen. UDR muß durch UDR0 ersetzt werden.

Gruß, Frank
Gast
Hallo Frank Linde!
Danke, das wars. Ich könnte mich ohrfeigen. Dabei habe ich das noch
selber gelesen, aber hab nicht geschaltet.
Jetzt funzt. Danke nochmals.
Schönen Tag
Wolfgang

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.