Ich möchte mit einem Drehimpulsgeber eine PWM Steuern in meinem test hat das nicht so geklappt wie ich wollte und nun habe ich den Code riesig gemacht und das wirt immer noch nichts se wirt immer zwei Impulse gegeben (das heißt zweimal + oder – 5 ) und er zählt ni den negativen bereich oder über den maximal bereich [-(
Das ist der Code
danke euch im vorausCode:$regfile = "m8def.dat" 'ATmega8-Deklarationen $crystal = 3686400 'Quarz: 3,6864 MHz $baud = 9600 '9600 Baud ' On Timer0 Ontimer 'Timer0-Interruptroutine Dim Helligkeit As Integer 'Timer0-Zeitwert Dim B As Integer Portb = &B11 'port B 0und 1 als eingang Ddrd.5 = 1 'Pin PD5 ist Ausgang Tccr0 = &B00000100 'Timer0: Bits210=100: Quarz/256 Timsk.toie0 = 1 'Timer0-Overflow-Interrupt ein Config Timer0 = Timer , Prescale = 256 Enable Timer0 'Overflow-Interrupt ein '---------------------------------------------------------- Helligkeit = 200 'Initial LED hell Sreg.7 = 1 'Interrupts global einschalten Do 'Hauptschleife B = Encoder(pinb.0 , Pind.1 , Links , Rechts , 2) 'Drehimpulsgeber Waitms 10 Print Helligkeit Print B If Helligkeit = 0 Then 'ist der wert auf 0 soll port D5 auf 0 Portd.5 = 0 End If If Helligkeit = 256 Then 'ist der wert auf 256 soll port D5 auf 1 Portd.5 = 1 End If Loop '---------------------------------------------------------- Links: Helligkeit = Helligkeit + 5 'der wert soll um 5 angehoben werden Waitms 10 Return Rechts: Helligkeit = Helligkeit - 5 'der wert soll um 5 abgesengt werden Waitms 10 Return '---------------------------------------------------------- Ontimer: Portd.5 = Not Portd.5 'LED wechselnd an/aus If Portd.5 = 1 Then 'Wenn LED gerade an Timer0 = 256 - Helligkeit 'Timer zählt vorwärts! Else 'Wenn LED gerade aus Timer0 = Helligkeit 'Komplementäre Zeit End If Return







Zitieren

Lesezeichen