Timer und Compare

Gast #3097945
Lesenswert?

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?
#3098355
Lesenswert?

Holger P. schrieb:
>
> Nun ich wollte mal alle 500µS für 3,5µs einen Ausgang setzen.
> Der Tiny läuft mit 9,6mHz
>
Hallo Holger,

wir wissen zwar in diesem Zusammenhang, was gemeint ist, aber wenn du 
die Einheiten bei anderer Gelegenheit so schreibst, gibt es 
Mißverständnisse.
Zur Erläuterung:

500µS sind 10000Ohm (Siemens ist der Leitwert)
s=sekunde, S=Siemens

9,6mHz sind 0,0096Hz (so langsam willst du den armen Tiny bestimmt nicht 
nicht laufen lassen)
m=milli, M=Mega

Das nur als Hinweis, weil sowas hier oft passiert, und dann gibt's 
Mißverständnisse. Nicht krumm nehmen, ist gut gemeint :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren