ich hab jetzt mal die Interrupts für den Timer0-Compare rausgeschmissen, verändert hat das leider nix. Der Tiyn25 läuft mit 8MHz.
meine Vermutung ist das der compiler das wegoptimiert. Leider sind meine letzten Kontakte mit Assembler zu lange her.
Hier mal der ASM Output:
Code:
test-timer.o: file format elf32-avr
Disassembly of section .text:
00000000 <main>:
// Zähler für IRQs
volatile uint8_t i=0;
int main(void) {
0: c0 e0 ldi r28, 0x00 ; 0
2: d0 e0 ldi r29, 0x00 ; 0
4: de bf out 0x3e, r29 ; 62
6: cd bf out 0x3d, r28 ; 61
// Ausgänge setzen
DDRB |= ((1 << PB2) | (1 << PB3) | (1 << PB1));
8: 87 b3 in r24, 0x17 ; 23
a: 8e 60 ori r24, 0x0E ; 14
c: 87 bb out 0x17, r24 ; 23
//Action-Flags
EveryMinuteFlag = 1;
e: 81 e0 ldi r24, 0x01 ; 1
10: 80 93 00 00 sts 0x0000, r24
// Timer0 Prescaler 1024
TCCR0B |= ((1<<CS02) | (0<<CS01) | (1<<CS00));
14: 83 b7 in r24, 0x33 ; 51
16: 85 60 ori r24, 0x05 ; 5
18: 83 bf out 0x33, r24 ; 51
// Interrupts für Timer0 bei Overflow
TIMSK |= (1<<TOIE0);
// Interrupts aktivieren
sei();
1a: 89 b7 in r24, 0x39 ; 57
1c: 82 60 ori r24, 0x02 ; 2
1e: 89 bf out 0x39, r24 ; 57
while (1) {
20: 78 94 sei
22: a8 ee ldi r26, 0xE8 ; 232
24: b3 e0 ldi r27, 0x03 ; 3
26: c0 e0 ldi r28, 0x00 ; 0
28: d0 e0 ldi r29, 0x00 ; 0
if (EveryMinuteFlag) {
// LED blinken lassen
PORTB |= ( 1 << PB2 );
2a: 80 91 00 00 lds r24, 0x0000
2e: 88 23 and r24, r24
30: e1 f3 breq .-8 ; 0x2a <main+0x2a>
_delay_ms(5);
PORTB &= ~( 1 << PB2 );
32: c2 9a sbi 0x18, 2 ; 24
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
34: 8a 2f mov r24, r26
36: 9b 2f mov r25, r27
38: 01 97 sbiw r24, 0x01 ; 1
3a: f1 f7 brne .-4 ; 0x38 <main+0x38>
EveryMinuteFlag = 0;
}
3c: c2 98 cbi 0x18, 2 ; 24
}
3e: 10 92 00 00 sts 0x0000, r1
42: f3 cf rjmp .-26 ; 0x2a <main+0x2a>
00000044 <__vector_5>:
}
SIGNAL (SIG_OVERFLOW0)
{
i++;
if (i==250) {
EveryMinuteFlag=1;
44: 1f 92 push r1
46: 0f 92 push r0
48: 0f b6 in r0, 0x3f ; 63
4a: 0f 92 push r0
4c: 11 24 eor r1, r1
4e: 8f 93 push r24
i=0;
50: 80 91 00 00 lds r24, 0x0000
54: 8f 5f subi r24, 0xFF ; 255
56: 80 93 00 00 sts 0x0000, r24
}
5a: 80 91 00 00 lds r24, 0x0000
5e: 81 30 cpi r24, 0x01 ; 1
60: 21 f4 brne .+8 ; 0x6a <__vector_5+0x26>
}
62: 80 93 00 00 sts 0x0000, r24
66: 10 92 00 00 sts 0x0000, r1
6a: 8f 91 pop r24
6c: 0f 90 pop r0
6e: 0f be out 0x3f, r0 ; 63
70: 0f 90 pop r0
72: 1f 90 pop r1
74: 18 95 reti
Lesezeichen