Forum: Mikrocontroller und Digitale Elektronik Rechnungsfehler PWM


von Andy Eder (Gast)


Lesenswert?

Hi Leute,

bin hier auf euer Forum gekommen, hab aber noch nichts gefunden das mir 
weiterhelfen könnte.

Und zwar studier ich grad ein ASM von Sprut.de und komm nicht auf meinen 
Rechenfehler.
1
; Prozessortakt:  20 MHz
2
3
; Vorteiler 16:1 und Timer2 einschalten
4
  BSF  T2CON,T2CKPS1  ; Vorteiler 16:1
5
  BSF  T2CON,TMR2ON  ; Timer2 ein
6
7
; Frequenz auf 2,5 kHz einstellen
8
  BSF  STATUS,RP0  ; Bank1
9
  MOVLW  D'124'    ;
10
  MOVWF  PR2    ; 2,5 kHz
11
  BCF  STATUS,RP0  ; Bank1

Wie komm ich auf die "124" die ins PR2 Register geschrieben werden?
Also dass der Überlauf erst beim nächsten Takt, also 125 geschieht ist 
mir klar.

Nur wie kommt er dann auf die 2,5kHz?

Wenn ich rechne dass der Timer bei dem 16er Vorteiler mit 0,8µs erhöht 
komme ich für die 125 Takte bis zum Überlauf, also dem neuen Start des 
Timers auf 0,0001s.
2,5kHz haben aber 1/2500=0,0004s


Kann mir das jemand erklären?


LG Andy

von Karl H. (kbuchegg)


Lesenswert?

Bei PIC wird der Takt grundsätzlich durch 4 geteilt. Das ist genau dein 
fehlender Faktor.

http://www.rn-wissen.de/index.php/PIC16F87x_Einf%C3%BChrung#CPU_.2F_Clock

von Andy Eder (Gast)


Lesenswert?

Okay, der Takt hat also dann die 0,0004s?

von avr (Gast)


Lesenswert?

Past schon.

Schau mal in das Schaubild vom Timer im Datenblatt.

Dort siehst du, dass der Takt/4 der Arbeitstakt des Timers
ist (Pics teilen intern durch 4!).

avr

von Karl H. (kbuchegg)


Lesenswert?

Andy Eder schrieb:
> Okay, der Takt hat also dann die 0,0004s?

20Mhz / 4 -> 5Mhz

5Mhz / 16 -> 312500Hz

312500 / 125 -> 2500Hz

ALso so wie angegeben.

von Andy Eder (Gast)


Lesenswert?

Na toll, danke, wenn ich euch nicht hätte (:

Wenn ich jetzt dann aber nicht intern sondern über einen Quarz laufen 
lasse muss ich anders rechnen oder?
Dann hätte ich wirklich die 0,0001s?

von Karl H. (kbuchegg)


Lesenswert?

Andy Eder schrieb:
> Na toll, danke, wenn ich euch nicht hätte (:
>
> Wenn ich jetzt dann aber nicht intern sondern über einen Quarz laufen
> lasse muss ich anders rechnen oder?
> Dann hätte ich wirklich die 0,0001s?

Das Datenblatt zum Prozessor ist dein Freund.
Wie ich avr's Antwort entnehme, gibt es dort ein Schaubild, welches dir 
zeigt, welche Möglichkeiten du hast um den Takt abzugreifen.

Ganz ehrlich! Ohne Datenblatt kommst du nicht weit. Du gehst mit im 
schlafen, du wachst  mit ihm auf. Beim Essen liegt es neben dir. Nur in 
die Dusche darf es nicht mit.

Du musst es nicht auswendig können. Aber es schadet nicht, wenn man es 
mal eine Stunde lang studiert und kurz drüberliest. Und sei es nur dazu, 
damit man weiß was wo steht.

von Andy Eder (Gast)


Lesenswert?

Ich werds mir zu Gemüte führen :D

Danke vielmals!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.