batista156
04.09.2008, 16:52
Hallo,
bin gerade dabei mit Bascom einen Dimmer zu programmieren, doch leider hab ich ein Problem ich erkenne den Nulldurchgang mit hilfe eines Opptokoppler der für die Dauer der positzven Halbwelle ein High-Signal gibt und bei der negativen Halbwelle ein Low-Signal und genau da liegt das Problem wie man im Code sehen kann löst der Interrupt bei Low-Signal aus, dadurch funktioniert die negative Halbwelle leider überhaupt nicht hat vielleicht jemand eine Lösung für das Problem?
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
Config Timer1 = Timer , Prescale = 8
Config Timer0 = Timer , Prescale = 1024
Config Int0 = Low Level
Enable Interrupts
Enable Int0
Enable Ovf1
Enable Ovf0
On Int0 Isr_von_int0
On Timer1 Isr_von_timer1
On Timer0 Isr_von_timer0
Config Portb = Output
Stop Timer1
Stop Timer0
Timer1 = 0
Timer0 = 0
Do
Loop
End
Isr_von_int0:
Waitus 400 'Nulldurchgangserkennung
Timer1 = 56321
Start Timer1
Timer0 = 220
Start Timer0
Return
Isr_von_timer1: 'Erkennung des negativen Nulldurchganges
Stop Timer1
Timer0 = 220
Start Timer0
Return
Isr_von_timer0:
Set Portb.1
Waitus 200
Reset Portb.1
Stop Timer0 'zünden des Triacs
Return
bin gerade dabei mit Bascom einen Dimmer zu programmieren, doch leider hab ich ein Problem ich erkenne den Nulldurchgang mit hilfe eines Opptokoppler der für die Dauer der positzven Halbwelle ein High-Signal gibt und bei der negativen Halbwelle ein Low-Signal und genau da liegt das Problem wie man im Code sehen kann löst der Interrupt bei Low-Signal aus, dadurch funktioniert die negative Halbwelle leider überhaupt nicht hat vielleicht jemand eine Lösung für das Problem?
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
Config Timer1 = Timer , Prescale = 8
Config Timer0 = Timer , Prescale = 1024
Config Int0 = Low Level
Enable Interrupts
Enable Int0
Enable Ovf1
Enable Ovf0
On Int0 Isr_von_int0
On Timer1 Isr_von_timer1
On Timer0 Isr_von_timer0
Config Portb = Output
Stop Timer1
Stop Timer0
Timer1 = 0
Timer0 = 0
Do
Loop
End
Isr_von_int0:
Waitus 400 'Nulldurchgangserkennung
Timer1 = 56321
Start Timer1
Timer0 = 220
Start Timer0
Return
Isr_von_timer1: 'Erkennung des negativen Nulldurchganges
Stop Timer1
Timer0 = 220
Start Timer0
Return
Isr_von_timer0:
Set Portb.1
Waitus 200
Reset Portb.1
Stop Timer0 'zünden des Triacs
Return