Hallo liebe Profis![]()
Ich habe hier ein Prog für eine Zündung. Will bemerken es ist mein erstes Prog.
Wer Lust hat und vor allem Zeit könnte sich das mal durchlesen um einen Neuling kräftig die Meinung zu sagen oder auch nicht
Folgendes sollte jetzt laufen.
Int0 und Int1 werden per Interrupt erfasst und an die Asugänge Portb.0 und Portb.1 ausgegeben.
Der Pegel fällt auf Low.
Eine Zeit von 1ms soll der Pegel so gehalten werden.
Danach soll der Pegel vieder auf High
Wenn die Anzahl der Takte vom INT0 über einen sollwert ansteigt , soll Portb.2 angehen.
Code:$regfile = "m8def.dat" $crystal = 10000000 $baud = 9600 Config Portb = Output Portb = &B00000000 Config Portc = Output Portc = &B00000000 Config Portd = Input Portd.2 = 1 Portd.3 = 1 Portd.5 = 1 Dim A As Integer Dim B As Long Dim Testzeit As Integer Dim Testanzahl As Integer Enable Interrupts On Int0 Links On Int1 Rechts On Timer1 Ontimer1 Config Timer1 = Timer , Prescale = 1024 Enable Timer1 'Testrotine der Ausg�ge Testzeit = 30 Portb.2. = 1 While A <= 4 A = A + 1 Print 0; Waitms Testzeit Portb.0 = 1 Portb.1 = 1 Waitms Testzeit Portb.0 = 0 Portb.1 = 0 Wend Print "Testrotine abgelaufen," 'Spulen auf an Print ",Spulen an," Portb.0. = 1 Portb.1. = 1 Waitms 300 Portb.2. = 0 A = 0 B = 0 Do Enable Int0 Enable Int1 Portb.0. = 1 Portb.1. = 1 Loop Ontimer1: Portb.2 = 0 Print A; B = A /3600 Print B Timer1 = 5687 If A > 1000 Then Portb.2 = 1 Print "DB" End If A = 0 Return Links: A = A + 1 Disable Int0 Portb.0. = 0 Print "L" Waitms 1 Return Rechts: Disable Int1 Portb.1. = 0 Print "R" Waitms 1 Return
Wenn mir noch mal einer erklären könnte wie ich den besten Prescale-Faktor ermittle und auf was ich Timer1 = XXXX setzte und warum wäre ich ihm auserordentlich dankbar
Das ganze funzt auf meinem myAVR-Board. Nun müsste ich noch meine Kurve einbasteln (anderer Beitrag ,was aber funktionieren sollte)
Danke erst mal vorweg =D>







Zitieren


Lesezeichen