Hallo darasol,
Ich weiss nicht ob dir das was hift aber vor inzwischen Jahren hab ich für den FENDT-Buldogg von meinem Buben auch eine Licht/Rundumblinklicht Funktion nachgerüstet,
Hab den Beitrag aus dem "alten Forum" durch Zufall wieder gefunden beim Festplatte putzen.
Nachdem der damals von mir verwendete Attiny25 nur einen 8-Bit-Timer hat ist die Auflösung ziemlich grob aber zur Lichtsteuerung tuts.
Alles anzeigen
Ich weiss nicht ob dir das was hift aber vor inzwischen Jahren hab ich für den FENDT-Buldogg von meinem Buben auch eine Licht/Rundumblinklicht Funktion nachgerüstet,
Hab den Beitrag aus dem "alten Forum" durch Zufall wieder gefunden beim Festplatte putzen.
Nachdem der damals von mir verwendete Attiny25 nur einen 8-Bit-Timer hat ist die Auflösung ziemlich grob aber zur Lichtsteuerung tuts.
Quellcode
- '(
- Anpassung Servosignale für Blinkgeber und Beleuchtung FENDT
- Stand 02.08.2014
- Aufgabenstellung:
- 1) Blinklicht wenn Eingang Impulsbreite zwischen 0,9ms und 2,1ms
- 2) Knüppel-Mittelstellung = Beleuchtung AUS
- 3) Knüppel-VOR = Fernlicht
- Eingang Impulsbreite > ca 1,6ms
- Ausschaltverzögerung 5 Sekunden
- 4) Knüppel-RÜCK = Rückfahrscheinwerfer
- Eingang Impulsbreite < ca 1,4ms
- Ausschaltverzögerung 5 Sekunden
- 5) Ohne Eingangsimpulse alle LEDs aus
- ')
- '(
- FUSES:
- Taktfrequenz 8MHz
- Teilung / 8 OFF
- ')
- $regfile = "ATtiny25.DAT"
- $crystal = 8000000
- $hwstack = 16
- $swstack = 16
- $framesize = 24
- Rem ----------------------------------------------------------------------
- Rem IO
- Config Portb.2 = Input ' SCK und Input vom Empfänger
- Portb.2 = 1 ' Pullup
- Servo_in Alias Pinb.2
- Config Portb.1 = Output ' MISO und Beleuchtung Rückwärts
- Rueckwaerts Alias Portb.1
- Config Portb.0 = Output ' MOSI und Beleuchtung Vorwärts RECHTS
- Vorwaerts_r Alias Portb.0
- Config Portb.4 = Output ' Beleuchtung Vorwärts LINKS
- Vorwaerts_l Alias Portb.4
- Config Portb.3 = Output ' Blinklicht
- Blinker Alias Portb.3
- Rem ----------------------------------------------------------------------
- Rem DIM und CONST
- Dim Servowert As Integer ' Ausgelesener Sollwert vom Empfänger
- Servowert = 0
- Dim Position As Byte ' Variable für Zwischenberechnung
- Dim Leuchtdauer As Byte ' Variable für Verzögerung Abschaltung
- Leuchtdauer = 6
- Dim Signalda As Byte ' Variable Erkennung Sendersignal
- Signalda = 0
- Rem ----------------------------------------------------------------------
- Rem Config AUSGANG
- Rem ----------------------------------------------------------------------
- Rem Impulsbreitenmessung EINGANG vom Empfänger
- Config Int0 = Change
- On Int0 Signalmessung
- Enable Int0
- Config Timer1 = Timer , Prescale = 256
- Timer1 = 0
- On Timer1 Timer1_isr
- Enable Timer1
- Enable Interrupts
- Rem ----------------------------------------------------------------------
- Rem Hauptprogramm
- Rem Eingelesener Sollwert vom Empfänger (SERVOWERT)
- Rem 1ms = 31
- Rem 1,5ms = 47
- Rem 2ms = 63
- For Position = 1 To 6 ' erstes Lebenszeichen
- Toggle Vorwaerts_r
- Toggle Vorwaerts_l
- Toggle Rueckwaerts
- Toggle Blinker
- Waitms 200
- Next
- Rueckwaerts = 0
- Vorwaerts_r = 0
- Vorwaerts_l = 0
- Blinker = 0
- Do
- Select Case Servowert
- Case 25 To 45 ' Knüppel nach hinten --> Rückfahrlicht
- Rueckwaerts = 1
- If Vorwaerts_r = 1 Then Incr Position ' Verzögerung für Fernlicht abschalten
- If Position > Leuchtdauer Then
- Vorwaerts_r = 0
- Vorwaerts_l = 0
- Position = 0
- End If
- Case 51 To 255 ' Knüppel nach vorne --> Fernlicht
- Vorwaerts_r = 1
- Vorwaerts_l = 1
- If Rueckwaerts = 1 Then Incr Position ' Verzögerung für Rückfahrlicht abschalten
- If Position > Leuchtdauer Then
- Rueckwaerts = 0
- Position = 0
- End If
- Case 46 To 50 ' Knüppel Mittelstellung --> Fernlicht und Rückfahrlicht AUS
- If Rueckwaerts = 1 Then Incr Position ' Verzögerung für Rückfahrlicht abschalten
- If Position > Leuchtdauer Then
- Rueckwaerts = 0
- Position = 0
- End If
- If Vorwaerts_r = 1 Then Incr Position ' Verzögerung für Fernlicht abschalten
- If Position > Leuchtdauer Then
- Vorwaerts_r = 0
- Vorwaerts_l = 0
- Position = 0
- End If
- End Select
- Select Case Servowert
- Case 0 To 29 ' Wenn Empfängersignal ungültig --> Blinker AUS
- Blinker = 0
- Case 68 To 255 ' Wenn Empfängersignal ungültig --> Blinker AUS
- Blinker = 0
- Case 25 To 67 ' Wenn Empfängersignal gültig --> Blinklicht
- Toggle Blinker
- End Select
- Incr Signalda ' Failsafe
- If Signalda > 2 Then
- Signalda = 2
- Rueckwaerts = 0
- Vorwaerts_r = 0
- Vorwaerts_l = 0
- Blinker = 0
- Servowert = 0
- End If
- Waitms 500 ' gibt Blinkfrequenz vor
- Loop
- End
- Rem ----------------------------------------------------------------------
- Rem Subroutinen
- Timer1_isr: 'Überlauf bei Fehlen Eingangssignal
- Servowert = 0
- Return
- Signalmessung:
- If Servo_in = 1 Then
- Tcnt1 = 0 ' setzt direkt das Register !!!
- Start Timer1
- Else
- Stop Timer1
- Servowert = Timer1
- End If
- Signalda = 0 ' Rücksetzen Failsave
- Return