Beschreibung NMRA-DCC Funktionsdecoder mit ATtiny44/45 von Heiko Schroeter

Multi Function Decoder ATTiny45/44
DCCIN an PB2 ATTiyn45
DCCIN an PA2 ATTiyn44

Interne Clock 8MHz.
Die RESET Fuse sollte fuer die ersten Tests nicht programmiert werden. Ansonsten ist der uC nur noch ueber den High Voltage Programming Mode neu zu programmieren.

/********************************************/
CV 1,9,17,18,29,33...
(CV9 zur Zeit noch nicht benutzen)

CV1 kurze Adresse (Default 3)
CV17,18 14bit lange Adresse (Default 0 0)
CV29 Config (Default 2)
Bit5=1 14Bit lange Adressen
Bit5=0 kurze Adressen

CV30 NEON Flash On-time, 1 entspricht ca. 15.6ms (ATTiny45)
Default 5
CV31 NEON Flash Off-time, 1 entspricht ca. 15.6ms (ATTiny45)
Default 10

Ab CV33 Funktionen immer 5CVs pro Funktion.
FN1:
CV33 config (LowNibble)
Bit 0-2 Art der Funktion:
xxxxx000 -> Simple On/off
xxxxx001 -> On/Off according to WHICHDIR Bit
xxxxx010 -> Dimming
xxxxx011 -> Neon
xxxxx100 -> Blink
CV33 config (HighNibble)
Bit 4: PORTA oder PORTB (wenn ATTiny44 bspw benutzt wird)
Bit 5: Status An/Aus
Bit 6: WHICHDIR, welche Richtung ist Standard 0=vorwaerts(?)

CV34 pinnummer als Bitmaske
Bsp: PB4 = '0010000'
PB2 = '0000100'

CV35 multi Zaehler fuer:
DIM_OFF_TIME
BLINK_FREQ

CV36 multi Zaehler fuer:
DIM_ON_TIME

dann naechster Block FN2 ab CV37 usw.

/********************************************/
Dekoder unterstuetzt kurze (CV1) und lange (CV17,18) Multi Funktionsadressen.
der Ausgang fuer die Funktion kann ueber die Maske(bspw. CV34 fuer FN1) wahlfrei gesetzt werden. Fuer den ATTiny45 ist dann noch PORTA oder PORTB ueber Bit 4 in bspw. CV33 fuer FN1 zu waehlen.
Folgende Funktionen koennen benutzt werden:

An/Aus: Wird mit den normalen Funktionen F1...FX gesteuert.
An/Aus abhaehngig von der Fahrtrichtung. Standard Farhrichtung in BIT6 der CV33 fuer FN1 bspw.
Dimming: Dimmfrequenz ist DIMM_OFF_TIME + DIMM_ON_TIME. Ein Wert von 1 fuer CV35 oder CV36 fuer FN1 bspw heisst etwa 15.5ms. Nicht zu hich waehlen sonst blinkt es wahrscheinlich :-)
Neon: Ist hardcodiert. Es sollte zweimal kurz aufblitzen (75ms an) und 150ms aus, dann dauerleuchten.
Blinken: CV36 enthaelt die Blinkfrequenz. Eine 64 hier ist ca. 1Sek an und 1Sek aus.

Programmiert werden die CVs ueber den 'Configuration Variable Access Instruction - Long Form'.

TODO:
- Anpassen der Portfunktionen fuer den ATTiyn44. Im Moment laeuft einiges nur ueber PORTB.
- ACCESSORY Decoder Addressing anschalten. Implementiert aber noch nicht getestet.


Hinweis:

Auf Grund der Kuerze der Zeit sind nicht alle Funktionen simuliert worden. Durchaus moeglich dass manches total in die Binsen geht.