robo_wolf,
ich fürchte, in Deinem zweiten Posting hast Du Dich ein bisschen vergaloppiert. Dein erstes Posting (Heute, 14.05. um 09:30) bezieht sich auf Zeile 122 Deines Moduls "FIFO8.asm"
Das Problem Deines zweiten Postings verstehe ich nicht. Natürlich darf FIFO_CAP grösser als 64 sein! Du musst nur zum Berechnen von ENDADR eine anderen Weg gehen (siehe oben)Code:... FIFO8_CREATE: ... ; FIFOkapazität speichern std z+FIFO8_CTRL_CAP,r16 ; Kapazität speichern ; WRADR und RDADR auf Anfang setzen; ANFADR und ENDADR in RAM schreiben mov xl,zl mov xh,zh adiw xh:xl,FIFO8_CTRL_LNG ; FIFO-Steuerung ueberspringen - auf erstes FIFO-Byte zeigen std z+FIFO8_CTRL_WRADR_LOW,xl std z+FIFO8_CTRL_WRADR_HIGH,xh std z+FIFO8_CTRL_RDADR_LOW,xl std z+FIFO8_CTRL_RDADR_HIGH,xh ; std z+FIFO8_CTRL_ANFADR_LOW,xl std z+FIFO8_CTRL_ANFADR_HIGH,xh ; !!! ACHTUNG: adiw xh:xl,FIFO8_CAP ; ENDADR berechnen ; Über diese Zeile beschwert sich der Assembler, wenn FIFO8_CAP ; grösser als 64 ist. Deshalb musst Du sie durch ldi r16,FIFO8_CAP add xl,r16 clr r16 adc xh,r16 ; ersetzten. Dann klappt's auch mit Kapazitäten > 64. ...!
Ciao,
mare_crisium







Zitieren

Lesezeichen