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