Program z http://benryves.com/projects/tvtext napisany na ATMega168. Chiałbym go przenieść na ATMega16. Oryginalny kod (dla mega168) kompiluje się pod AVR Studio bez błędów.
Większość kodu jest napisana w C tylko jeden plik w assemblerze (driver.s). Program kompiluje się z wyjątkiem tej jednej lini:
Błędy kompilatora:
../tvtext/driver.S: Assembler messages:
../tvtext/driver.S:70: Error: number must be less than 32
Adres rejestru TIFR dla atmega16 to 0x38 (więcej niz 32).
Nie wiem jak zmienić tę jedną instrukcję żeby program się skompilował (nie znam assemblera).
Fragment driver.s:
Większość kodu jest napisana w C tylko jeden plik w assemblerze (driver.s). Program kompiluje się z wyjątkiem tej jednej lini:
; Clear interrupts (if any happened).
sbi _SFR_IO_ADDR(TIFR), OCF1A
Błędy kompilatora:
../tvtext/driver.S: Assembler messages:
../tvtext/driver.S:70: Error: number must be less than 32
Adres rejestru TIFR dla atmega16 to 0x38 (więcej niz 32).
Nie wiem jak zmienić tę jedną instrukcję żeby program się skompilował (nie znam assemblera).
Fragment driver.s:
exit_timer1_compa_vect_no_store:
; Re-enable CTC.
ldi ZL, _BV(WGM12) | _BV(CS10)
sts _SFR_MEM_ADDR(TCCR1B),ZL
; Clear interrupts (if any happened).
sbi _SFR_IO_ADDR(TIFR), OCF1A
pop YH
pop YL
pop ZH
pop ZL
out _SFR_IO_ADDR(SREG),r_sreg_save ; [1]
reti
