/**************************************************************************************************** ;* DCC Car-Decoder Software 8MHz int RC Mit Bootloader max 7,5 kByte! Vx1.2 vom 06.04.2013 * ;* * ;* * ;* Mega8/48/88/168/328 * ;* * ;* ************ *********** * ;* RESET 1 * RESET/PC6 *** ADC5/PC5 * 28 AUX12/IR_TX * ;* RXD/TSOP7000/IR 2 * RXD/PD0 ADC4/PC4 * 27 AUX11/IR_TX_low * ;* serial_Out 3 * TXD/PD1 ADC3/PC3 * 26 AUX10/Rundumlicht_2 * ;* AUX13/Stoppstelle 4 * INT0/PD2 ADC2/PC2 * 25 AUX9/Rundumlicht_1 * ;* AUX14 5 * INT1/PD3 ADC1/PC1 * 24 AUX8/Licht_4 * ;* AUX15 6 * TO/PD4 ADC0/PC0 * 23 AUX7/Licht_3 * ;* +5V UB 7 * VCC GND * 22 * ;* GND 8 * GND AREF * 21 * ;* AUX1/Frontlicht 9 * XTAL1/PB6 AVCC * 20 * ;* AUX2/Schlusslicht 10 * XTAL2/PB7 SCK/PB5 * 19 SCK * ;* AUX3/Stopplicht 11 * T1/PD5 MISO/PB4 * 18 MISO * ;* Foto- 12 * AIN0/PD6 MOSI/PB3 * 17 MOSI + Motor PWM (OC2A) * ;* Foto+ 13 * AIN1/PD7 OC1B/PB2 * 16 AUX6/Licht_2 * ;* AUX4/Blinker_links 14 * ICP1/PB0 OC1A/PB1 * 15 AUX5/Blinker_rechts * ;* ************************** * ;* TQFP: * ;* frei ADC6 ADC7 Vakku * ;* * ;*FUSE info Mega8 ohne Bootloader: * ;* High Byte:0xD9 * ;* Low Byte:0x84 * ;* * ;*FUSE info Mega8 mit Bootloader: * ;* High Byte:0xDC * ;* Low Byte:0x84 * ;* * ;*Software: ( # -> ist Vorbereitet aber noch nicht aktiv) * ;* * ;* - Betriebsspannung: 2,8V - 5V möglich (LED Vorwiderstände anpassen!) * ;* mit Spannungswandler 1,2 - 4,2V möglich * ;* - Akkuüberwachung bei erreichen vom Entladewert nach CV24 geht Warnblinklicht dauerhaft an * ;* bei DIL Gehäuse nicht möglich!! * ;* - Geschwindigkeitskorrektur bei sinkender Akkuspannung CV23/24/25 * ;* - DCC Signal mit ausschließlich 28 Fahrstufen * ;* - 7 und 14 Bit Lok Adressen nach DCC Norm möglich * ;* - DCC Funktionen F0 - F8 werden unterstützt * ;* F0 -> Fahrzeuglicht AUX1 Frontlicht und AUX2 Schlusslicht * ;* F1 -> Blinker links AUX4 * ;* F2 -> Blinker rechts AUX5 * ;* F3 -> Abstandsreglung_aus * ;* F4 -> Stoppstelle_aus * ;* F5 -> Rundumlicht_1/2 AUX9/10 (z.B. Blaulicht) * ;* F6 -> Licht_2 AUX6 * ;* F7 -> Licht_3 AUX7 * ;* F8 -> Licht_4 AUX8 * ;* AUX6-10 lassen sich mit Effekten frei programmieren -> siehe CV70 - CV118 * ;* - automatisches Bremslicht an AUX3 (kann mit AUX2 Schlusslicht verbunden werden) * ;* - alle AUX (außer AUX7 !!)(incl. Motorausgang) schalten einheitlich nach GND * ;* ein -> AUX = GND, aus -> AUX = hochohmig * ;* AUX7 (F8 Licht_3) ist für externe spezial Funktionen über CV42 programmierbar * ;* CV42 +0 -> normales Schaltverhalten (hochohmig/GND) * ;* +16 -> AUX7 aus -> +UB / ein -> GND * ;* +32 -> AUX7 aus -> GND / ein -> +UB * ;* (+1 bis +8 ist reserviert, +16 und +32 ist nicht erlaubt) * ;* - AUX13 Eingang Stoppstelle -> GND = Stopp * ;* - IR Fernempfang über TSOP7000 an PD0 vom IR - Booster * ;* - IR Nahempfang Fototransistorschaltung an PD6 und PD7 vom IR DCC Signal am Gleis ca. 10cm * ;* - IR Rückmeldung (IR_TX) hinten am Fahrzeug an AUX_11/12 -> zur Abstandsreglung in zwei * ;* Stufen und für Anhängerdecoder/Rückmeldungen * ;* - Motor PWM Treiber an Motor/PB3 -> Motorausgang (Frequenz zwischen 30Hz und 31kHz aus CV9) * ;* - OSCCAL Auto Kalibrierung über IR - Boostersignal * ;* - ServiceMode write/verify Byte/Bit zur CV Programmierung (nur IR Nahempfang und kein POM!) * ;* ACT Pulse (Programmierbestätigung) über AUX_1 Frontscheinwerfer * ;* - Motorreglung PWM Frequenz CV9 Reglung über CV2/CV3/CV4/CV5 * ;* - Abstandsreglung: wenn Fahrzeug auffährt, begrenzt es seine Geschwindigkeit auf die * ;* Fahrstufe des Vordermann minus CV56 (in %), wenn Vordermann nicht mehr zu sehen, * ;* wird wieder auf eigene Sollgeschwindigkeit beschleunigt, wenn Abstand unter 5cm, * ;* dann Geschw. minus CV56 (in%) / 2 * ;* - Motorkickstart über CV65/66 (Zeit/Höhe) zum besseren Anlauf programmierbar * ;* * ;*CV: * ;* * ;* CV1 3 kurze Decoderadresse * ;* CV2 20 Anfahr PWM Impulsbreite (V min) * ;* CV3 10 Anfahrverzögerung * ;* CV4 1 Bremsverzögerung * ;* CV5 220 Maximal PWM Impulsbreite (V max) * ;* CV9 5 PWM Frequenz 1 - 7 -> 31kHz,4kHz,1kHz,500Hz,250Hz,125Hz,30Hz * ;* CV17 192 Erweiterte Adresse Höherwertiges Byte der langen Adresse plus 192 * ;* CV18 3 Erweiterte Adresse Niederwertiges Byte der langen Adresse * ;* CV23 2 Faktor zur Geschwindigkeitsanpassung bei sinkender Akkuspannung 0(aus)-10(max) * ;* CV24 30 minimale Akkuspannung(Akku leer Meldung kommt) in V * 10 (Akku Spannung ohne , )* ;* CV25 42 maximale Akkuspannung(voller Akku) in V * 10 (Akku Spannung ohne Komma bei * ;* R14/R15 33k/10k das ist ca. auf 10% genau) * ;* CV26 0 V_soll nach Decoderstart (0-255) * ;* CV27 0 OSCCAL Korrekturwert für den AVR (wird automatisch ermittelt) * ;* CV29 64 Konfiguration nach DCC-Norm * ;* +32:Erweiterte (lange) Adresse (CV17 und CV18), sonst CV1 * ;* CV42 0 AUX7 Funktionen * ;* +0 : AUX7 = aus -> hochohmig und AUX7 = ein -> GND * ;* +16 : AUX7 = aus -> +UB und AUX7 = ein -> GND * ;* +32 : AUX7 = aus -> GND und AUX7 = ein -> +UB * ;* CV49 0 Fahrzeugtyp 0-7 zur eigenen Verwendung für Ablaufsteuerungen * ;* CV55 0 Softwarupdate: 1 = Updatemodus ein * ;* CV56 1 CV4 in der Abstandsreglung * ;* CV57 25 Geschwindigkeit bei Fahrstufe28 in cm/s * ;* CV65 5 Kickstartzeit *8ms * ;* CV66 80 Kickstart Motorpulsbreite (PWM Wert) * ;* * ;* CV70-8 Effekte AUX_6 / F6 * ;* CV80-8 Effekte AUX_7 / F7 * ;* CV90-8 Effekte AUX_8 / F8 * ;* CV100-108 Effekte AUX_9 / F5 * ;* CV110-118 Effekte AUX_10 / F5 * ;* CVx0-7 sind je 8 Zeitwerte, die abwechselnd für die "ein" (CVx0/x2/x4/x6) und * ;* die "aus" (CVx1/x3/x4/x7) Zeiträume des AUX stehen (je * ca. 8ms), wobei ein * ;* Wert von 0 bedeutet, das dieser "Zeitraum" übersprungen wird. Werte zwischen * ;* 0 und 255 sind möglich. Beispiel: * ;* CV70 = 10 -> 10* ca. 8ms = ca. 80ms ist der AUX an * ;* CV71 = 20 -> danach ist der AUX ca. 160ms aus * ;* CV72 = 10 -> danach ist der AUX wieder 80ms an * ;* CV73 = 255 -> danach ist der AUX 2,04 Sek. aus * ;* CV74 = 0 -> diese "ein" Zeit wird übersprungen * ;* CV75 = 255 -> noch einmal 2,04 Sek. aus (insgesamt also über 4 Sek.) * ;* CV76 = 100 -> jetzt wieder 800ms an * ;* CV77 = 10 -> zum Schluss noch einmal 80ms aus danach beginnt es wieder von vorn * ;* CVx8 kann Werte von 1-255 annehmen, mit folgender Bedeutung: * ;* CVx8 = 1-253 es wird 1-253 mal die Schaltzeiten aus CVx0-CVx7 abgearbeitet * ;* CVx8 = 254 es werden endlos die Schaltzeiten aus CVx0-CVx7 abgearbeitet * ;* CVx8 = 255 alle Schaltzeiten werden ignoriert, der AUX ist immer an * ;* * ;****************************************************************************************************/