-
-
Denke ich habs so richtig gemacht mit der Frequenzlänge (Flanke>Flanke).
Wie könnte man es besser machen?
Jetzt fehlt noch die Duty(Highflankenlänge)... das Ding mit den Compares.... aber wie baut man das hier ein?
Ihr sollt nicht für mich progen, sondern mir einfach nen Tipp geben...
Das ich gewillt bin zu lernen habe ich mit diesem wundervollen Snippet ja bewiesen 
Guckt mal bitte rüber... würde mich über etwas konstruktive Tipps freuen...
und falls sich einer mit der Duty auskennt, sind Infos dringend erwünscht...
Vielen Dank nochmal für Eure Hilfe... ich hätte es sonst nie gerafft....
Lieber Gruß
Chris
$regfile = "m8def.dat" 'AtMega8
$crystal = 16000000 '16Mhz Quartz
Dim Verzoegerung As Integer 'Verzögerung = erhöhen der Timerdifferenz
Dim Z As Integer 'Z = Zähler zum entprellen des Tasters (Entpreller)
Ddrd = &B11100000 'Ein und Ausgabeports definieren
Verzoegerung = 0 'Zum Start keine Verzögerung
Config Timer1 = Timer , Prescale = 64'Timer1 auf den aktuellen Timer setzen, Teiler 64
Enable Timer1 'Timer aktivieren
On Timer1 Isr_von_timer1 'Wenn der Timer überläuft zu Interrupt wechseln
Enable Interrupts 'Interruptbehandlung starten
Timer1 = 64000 - Verzoegerung 'Pulslänge =65535 - 64000 - 0
Do 'Hauptprogramm
If Pind.2 = 1 Then 'Wenn Taster 1 gedrückt dann....
Z = Z + 1 'Entpreller hochzählen
If Z = 100 Then 'wenn Du genug geprellt hast gehts weiter
Z = 0 'Entpreller zurücksetzen
Verzoegerung = Verzoegerung + 1 'Verzögerung erhöhen
End If
End If
If Pind.3 = 1 Then 'Wenn Taster 2 gedrückt dann...
Z = Z + 1 'Entpreller hochzählen
If Z = 100 Then 'wenn Du genug geprellt hast gehts weiter
Z = 0 'Entpreller zurücksetzen
Verzoegerung = Verzoegerung - 1 'Verzögerung verringern
End If
End If
Loop
End
Isr_von_timer1: 'Interrupt Service
Timer1 = 64000 - Verzoegerung ' Timer1 auf Startwert setzen
Toggle Portd.6 ' Toggle an Portd.6
Return
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen