Hallo, ich habe mir hier im Forum achon viele Beiträge zum Phasenanschnitt durchgelesen und auch größtenteils verstanden. Nun wollte ich solch eine Schaltung einmal selbst aufbauen. es funktioniert auch soweit allerdings wird nur die positive Halbwelle geschnitten die negative aber nicht. Hier mal mein Programm vielleicht findet jemand von euch die Ursache meines Fehlers.
1 | $regfile = "m8def.dat" 'AT90S2313-Deklaratione |
2 | $crystal = 7372800 |
3 | $baud = 9600 |
4 | Config Timer1 = Timer , Prescale = 8 |
5 | Config timer0 = Timer , Prescale = 1024 |
6 | Config Int0 = Low Level |
7 | Enable Interrupts |
8 | Enable Int0 |
9 | Enable Ovf1 |
10 | Enable Ovf0 |
11 | On Int0 Isr_von_int0 |
12 | On Timer1 Isr_von_timer1 |
13 | On timer0 Isr_von_timer0 |
14 | Dim A As Integer |
15 | Config Portb = Output |
16 | Stop Timer1 |
17 | Stop Timer0 |
18 | Timer1 = 0 |
19 | Timer0 = 0 |
20 | |
21 | Do |
22 | Loop |
23 | End |
24 | |
25 | Isr_von_int0: 'Nulldurchgangserkennung |
26 | Waitus 400 |
27 | Set Portb.0 |
28 | Timer1 = 56321 |
29 | Start Timer1 |
30 | Timer0 = 220 |
31 | Start Timer0 |
32 | Return |
33 | |
34 | Isr_von_timer1: 'Erkennung des negativen Nulldurchganges |
35 | Set Portb.0 |
36 | Timer0 = 220 |
37 | Start timer0 |
38 | Stop Timer1 |
39 | Return |
40 | |
41 | Isr_von_timer0: 'zünden des Triacs |
42 | Reset Portb.0 |
43 | Stop Timer0 |
44 | Return |