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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.