[PIC18F4550][CCS-C] CCP-Capture Timer 1/3 Problem

Gast #1427941
Lesenswert?
• ▲
▼
Hallo,

Wie der Betreff verrät habe ich ein Problem mit dem CCPX Timer.

Ein Sensor spukt mir eine Frequenz zwichen 2Hz und 130KHz vor die Nase
welche ich mittels CCP Modul lesbar umwandeln möchte.
Nun verdirbt mir aber der Timer den ganzen Spass seit einiger Zeit,
er fängt meist irgendwo zwichen 0 und 65535 an zu Zählen dabei überläuft 
er (und die Berechnung fällt hin) und kommt dann irgendwann zum stehen.
Hatte versucht mit Interrupt-routinen den Überlauf fest zu stellen
was aber nicht funktionierte da er immer einmal überläuft bevor er was 
ausspukt....

Habe als Fehlerkorrektur eine kleine Software-lößung eingebaut welche 
aber viel Speicher verschlingt und alles andere als Fehlerfrei & Optimal 
ist.

Gibt es irgendeine Möglichkeit den Überlauf fest zu stellen??
Oder eine möglichkeit das der CCP/Timer irgendwo (nahe?) bei 0 anfängt??

Für jeden Lösungsvorschlag in ASCI-C/(asm)/CCS-C/C18 wäre ich dankbar.

1
while(i2<=10) {
2
tmr3con = 0xCC;
3
// set_timer3(65535);
4
setup_ccp1(CCP_CAPTURE_FE);
5
setup_ccp2(CCP_CAPTURE_RE);
6
tmr3start = 1;
7
 
8
delay_ms(200);
9

10
cap1 = CCP_1;
11
cap2 = CCP_2;
12
.........

Debug Ausgabe:

0 cap1: 60179 cap2: 42853
ERROR : 1 cap1: 8178 cap2: 56659
1 cap1: 12525 cap2: 30843
2 cap1: 35402 cap2: 14216
3 cap1: 19786 cap2: 40159
4 cap1: 45489 cap2: 24829
5 cap1: 30194 cap2: 48487
6 cap1: 49970 cap2: 34471
7 cap1: 1377 cap2: 49345
ERROR: 8 cap1: 56598 cap2: 10402
8 cap1: 29235 cap2: 8305
9 cap1: 19672 cap2: 40575
10 cap1: 44824 cap2: 24932

17326 18318 (21186) 20373 20660 18293 15499 (47968) 20930 20903 19892
Gast #1428312
Lesenswert?
• ▲
▼
Danke  mätthu,
Gesagt getan, nur bekomm ich immer genau 2 Interrupts raus und gleich 
doofe Ergebnisse ;( Ich werde mal ne weile mit den Timings und dem 
Interrupt rumspielen, vll. ergibt sich ja noch was.

Falls noch jemmanden was einfällt... für jeden Tip bin ich sher 
dankbar..
Gast #1428414
Lesenswert?
• ▲
▼
Oooookkk habe es gelößt, Ich musste mein Programm so Umschreiben das ich 
direkten zugriff auf CCP1IF und CCP2IF Register hatte welches mir nun 
erlaubt den Timer nach dem Capturen anzuhalten damit kein weiterer 
Interrupt folgt.

Verfluchtes CCS, die die den Compiler geschrieben haben, haben leider 
vieles links liegen lassen... Im Endeffekt wird es so nur schwerer weil 
man ja mit der Zeit selbst die ganzen Fehlenden einträge erstellen muss 
:(

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.