PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Dimmer



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

for_ro
04.09.2008, 17:02
Hi,

Config Int0=Low Level

wird dir andauernd Interrupts generieren, solange der Pin auf Low bleibt.
Willst du nicht eigentlich Change haben, was dir bei Änderung einen Interrupt auslöst. So wie du es beschrieben hast, wäre das dann bei jedem Nulldurchgang.

Gruß

Rolf

batista156
04.09.2008, 18:52
ja stimmt habs auf falling geändert jetzt funktionierts soweit, doch leider flackert die Lampe recht stark woran kann dies liegen?

Vitis
04.09.2008, 21:56
start stop wird nicht gehen ... enable / disable geht besser