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
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
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
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.