Eine ganze Menge Funktionen... Durchaus machbar, aber erwarte nicht, dass ich das 'sofort' alles in fertigen Code übersetzt kriege...
Annahmen:
Standlicht und Abblendlicht brauchen wir wohl nicht zu unterscheiden, Abblendlicht schaltet AFAIK immer auch Standlicht ein.
Wenn Auto auf/abgeschlossen wird ist das Blinkersignal ein Puls auch beiden Seiten gleichzeitig.
Bei diesen Sachen bin ich nicht sicher, ob das überhaupt erlaubt ist (im Stand=Zündung aus, vielleicht noch, beim Fahren aber sicher nicht):
Wenn Standlicht an->aus->an (innerhalb von 5 sek)
Dann TFL voll Wechseldoppelblitzer (aa-bb-aa)
Wenn Lichthupe->Lichthupe (innerhalb von 2 sek)
Dann TFL voll Wechselblitzer (a-b-a)
Bitte klären, bevor wir (ich) da viel Arbeit rein stecken. Außerdem brauchen wir da noch einen 'Abschaltcode', oder eine Zeitvorgabe, wie lange das 'Blitzen' dauern soll.
Mal eine wenig 'sortiert'...
Eingänge:
1. Zündung
2. Blinker Links
3. Blinker Rechts
4. Standlicht Links
5. Standlicht Rechts
6. Fernlicht (Links oder Rechts egal = Lichthupe)
Ausgänge:
1. TFL Links
2. TFL Rechts
Die ersten Fälle (Zündung an/aus, Blinker/Standlicht an oder aus) lassen sich recht einfach 'statisch' bestimmen:
Die Eingänge fassen wir zu einem Byte (Register Pind) zusammen
1. Zündung -> PD0 (Pin2 am 2313) = Bit0
2. Blinker Links -> PD1 (Pin3 am 2313) = Bit1
3. Blinker Rechts -> PD2 (Pin6 am 2313) = Bit2
4. Standlicht Links -> PD3 (Pin7 am 2313) = Bit3
5. Standlicht Rechts -> PD4 (Pin8 am 2313) = Bit4
6. Fernlicht -> PD5 (Pin9 am 2313) = Bit5
Die Bits werden dann so gezählt: 76543210
Die Ausgänge hängen am PWM Ausgang von Timer1:
1. TFL Links -> PB3 (OC1A = Pin15 am 2313)
2. TFL Rechts -> PB4 (OC1B = Pin16 am 2313)
Die drei statischen Zustände der TFL nennen wir mal 0 (=aus), 1 (=60%) und 2 (=100%); Links 60% an wäre dann: 10; Beide voll an: 22
Dann könnte man die ersten Fälle so beschreiben:
Wenn PIND = 00000000 => 00 (alles aus)
Wenn PIND = 00000001 => 22 (nur Zündung an)
Wenn PIND = 00011001 => 11 (Zündung an + Standlicht an)
Wenn PIND = 00111001 => 22 (Zündung an + Standlicht an + Fernlicht an)
Wenn PIND = 00010000 => 10 (Parklicht links)
Wenn PIND = 00001000 => 01 (Parklicht rechts )
Wenn PIND = 00011000 => 11 (Standlicht )
Wenn PIND = 00000110 => 22 (für 30 Sek; Blinkersignal)
Probier mal das zu vervollständigen!
Welches Programm kann ich zum "beschreiben" des Chips verwenden?
Ich würde zum Programmieren Bascom verwenden (Demo reicht) und zum eigentlichen "beschreiben" Ponyprog.
Mal hier lesen:
viewtopic.php?p=90781#p90781
und
viewtopic.php?p=90766#p90766
Du kannst auch den ganzen Thread mal lesen, da wird viel über die ersten Schritte (und ggf. Probleme) berichtet. Auch interessant:
viewtopic.php?f=31&t=7333