Hallo,
habe folgendes Prog geladen, wird im Simulator wie Compiler auch ohne Fehlermeldung behandelt, gibt mir aber nichts am Port aus.
Nachdem ich den Handler auf TIFR geändert hatte, wird ohne Error und Warning assembliert, blinkt die LED auch dann im Testlauf, läßt sich durch verschiedene Vorteilerwerte auch in etwa in der Frequenz bestimmen, aber der Studio4-Simulator speichert das Objekt-File nicht ab (Error an Adresse 00000E).
Irgendwie verstehe ich das nicht.
Ist das OVF0addr-Argument wohl nur ein Platzhalter für die "Adresse" oder das Register, das noch durch ein typspezifisches ersetzt werden muß?
Der Interrupt-Impuls (laienhaft ausgedrückt) bzw. der Overflow muß doch irgendwo "rauskommen". Im Simulator sah ich, daß sich das TIFR-Register schön ändert, deswegen habe ich damit mal experimentiert.
Hier das lauffähige Proggi:
Danke schon mal..
Gruß von Oskar01
habe folgendes Prog geladen, wird im Simulator wie Compiler auch ohne Fehlermeldung behandelt, gibt mir aber nichts am Port aus.
Nachdem ich den Handler auf TIFR geändert hatte, wird ohne Error und Warning assembliert, blinkt die LED auch dann im Testlauf, läßt sich durch verschiedene Vorteilerwerte auch in etwa in der Frequenz bestimmen, aber der Studio4-Simulator speichert das Objekt-File nicht ab (Error an Adresse 00000E).
Irgendwie verstehe ich das nicht.
Ist das OVF0addr-Argument wohl nur ein Platzhalter für die "Adresse" oder das Register, das noch durch ein typspezifisches ersetzt werden muß?
Der Interrupt-Impuls (laienhaft ausgedrückt) bzw. der Overflow muß doch irgendwo "rauskommen". Im Simulator sah ich, daß sich das TIFR-Register schön ändert, deswegen habe ich damit mal experimentiert.
Hier das lauffähige Proggi:
PHP:
; * Test Interruptroutine
; * LED an PortB Bit 01 blinkt mit ca. 5 Hz
; * CPU Takt 4 MHz , ATMega8515
.nolist
.include "8515def.inc"
.list
.def temp = r16
.def temp1 = r17
.def led = r18
.equ daten = portb
.org 0x0000
rjmp main
.org TIFR ; OVF0addr--->bewirkt nichts
rjmp timer0_overflow
main: ; Stapelzeiger - Init
ldi temp, low(ramend)
out SPL, temp
ldi temp, high(ramend)
out SPH, temp
; Port - Init
ldi temp, 0x01
out ddrb, temp
ldi temp, 0xFF
mov led, temp
ldi temp, 0x05 ; Timer 1 Vorteiler 1:1024
out TCCR0, temp
ldi temp, 0x01 ; Interruptausgabe mit TOIE0 enablen
out TIMSK, temp
sei ; generelle Interruptfreigabe
loop:
rjmp loop
timer0_overflow:
mov temp1, led
andi temp1, 0x01
out daten, temp1
com led ; Zweierkomplement für LED an und aus
reti
Danke schon mal..
Gruß von Oskar01