Timer Problem PIC 16F

Gast #1278183
Lesenswert?
• ▲
▼
Hallo!
Ich hoffe Ihr könnt mir helfen. Ich habe folgendes Problem:
Es handelt sich im Prinzip um eine Phasenanschnittsteuerung mit einem 
PIC 16F877A, am Pin B5 wird ein Interrupt on Change verwendet um die 
Nulldurchgänge zu erkennen. Wenn ein Interrupt ausgelöst wurde soll ein 
Timer starten. Ab dem Winkel von 75-180° funktioniert alles wunderbar 
nur unter 75° nicht. Ich vermute es handelt sich dabei um ein 
Timerproblem, oder?

Im folgenden Code wurde ein Winkel von 65° also bei 50Hz 3,6ms 
verwendet...
1
#int_rb
2
void rb_isr()
3
{
4
  if(input(pin_b5)||(!input(pin_b5)))
5
  {
6
    output_c(0x00);
7
    disable_interrupts(int_rb);
8
    setup_timer_0(RTCC_INTERNAL|rtcc_div_32);
9
    set_timer0(126);
10
    enable_interrupts(int_timer0);  
11
  }
12
}
13

14
#int_timer0
15
void timer0_isr()
16
{
17
  disable_interrupts(int_timer0);
18
  output_high(pin_c7);  
19
  enable_interrupts(int_rb);
20
}


Im Anhang befindet sich ein Zeitverlauf mit 75° (oben) und mit 65° 
(unten)

Danke
Angehängte Dateien:

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.