Habe ich da nun etwas falsch verstande? Ich habe mir nun mal diesen kleinen ATTiny13 vorgenommen. Ist ja Geil der kleine Kerl :-) Nun ich wollte mal alle 500µS für 3,5µs einen Ausgang setzen. Der Tiny läuft mit 9,6mHz Also Timer durch 64 so habe ich doch ein 150kHz Takt auf dem Timer oder? 500µS sind 2kHz /somit dachte ich 150/2=75 setze ich den CompareA auf 75
1 | .INCLUDE "tn13def.inc" |
2 | |
3 | .def Dummy1 = r16 |
4 | .def Dummy2 = r17 |
5 | .def Dummy3 = r18 |
6 | .def Dummy4 = r19 |
7 | |
8 | .equ F_CPU = 9600000 ; Systemtakt in Hz |
9 | |
10 | .org 0x000 ; kommt ganz an den Anfang des Speichers |
11 | |
12 | rjmp RESET ; Reset Handler |
13 | reti ; IRQ0 Handler |
14 | reti ; PCINT0 Handler |
15 | reti ; Timer0 Overflow Handler |
16 | reti ; EEPROM Ready Handler |
17 | reti ; Analog Comparator Handler |
18 | rjmp Sync ; Timer0 CompareA Handler |
19 | reti ; Timer0 CompareB Handler |
20 | reti ; Watchdog Interrupt Handler |
21 | reti ; ADC Conversion Handler |
22 | |
23 | RESET: |
24 | ldi Dummy1, low(RAMEND) ; Main program start |
25 | out SPL, Dummy1 ; Set Stack Pointer to top of RAM |
26 | |
27 | ldi Dummy1, 0b11111111 |
28 | out DDRB,Dummy1 ; Port-B Ausgang |
29 | |
30 | |
31 | ldi Dummy1, (1<<CS00) | (1<<CS01); Teiler 64 |
32 | out TCCR0B, Dummy1 |
33 | |
34 | ldi Dummy1, (1<<OCIE0A) ; Interrupt bei CompareA |
35 | out TIMSK0, Dummy1 |
36 | |
37 | ldi Dummy1, 75 |
38 | out OCR0A,Dummy1 ; Compare beladen mit 150/2=75 |
39 | |
40 | sei ; Interrupts aktivieren |
41 | |
42 | |
43 | ldi Dummy4,$00 |
44 | out PortB,Dummy4 |
45 | |
46 | |
47 | |
48 | Loop: |
49 | rjmp Loop |
50 | |
51 | |
52 | Sync: |
Doch ich bekomme eine Interruptzeit von 1706.67µS egal was ich im OCR0A eintrage. Mach ich da nun ein Gedankenfehler?