Forum: Mikrocontroller und Digitale Elektronik Timer Problem PIC 16F


von jack (Gast)


Angehängte Dateien:

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

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.