Source file: /~heha/basteln/m/Kram/dccrail-avrgcc.zip/binärgleich/definitionen.h

/********************************************************************************
 * DCC Wagen Decoder Software V1.1						*
 * Copyright 2011 Toralf Wilhelm						*
 *										*
 * private Nutzung erwünscht, gewerbliche Nutzung erfordert zwingend meine Zustimmung!	*
 * Datei:	definitionen.inc						*
 * Kontakt:	toralfwilhelm@web.de						*
 * Webseite:	www.toralfwilhelm.de						*
 * Version:	01/2011 Version 1 Start						*
 *		01/2013 CV7 Software-Version geändert				*
 * Beschreibung: Definitionen, Daten und Macros zur DCC Wagen Decoder Software	*
 ********************************************************************************/
#pragma once
//Für ATmega8/48/88/168/328
#define __SFR_OFFSET 0
#include <avr/io.h> 

/**************
 * Konstanten *
 **************/

//Ports + Pins
#define	AUX_1_port	PORTB	// Funktionsausgang_1_Port
#define	AUX_1_pin	5	// Funktionsausgang_1_Pin
#define	AUX_2_port	PORTB	// 
#define	AUX_2_pin	4	// 
#define	AUX_3_port	PORTB	// 
#define	AUX_3_pin	3	// 
#define	AUX_4_port	PORTB	// 
#define	AUX_4_pin	2	// 
#define	AUX_5_port	PORTB	// 
#define	AUX_5_pin	0	// 
#define	AUX_6_port	PORTD	// 
#define	AUX_6_pin	7	// 
#define	AUX_7_port	PORTD	// 
#define	AUX_7_pin	6	// 
#define	AUX_8_port	PORTD	// 
#define	AUX_8_pin	5	// 
#define	AUX_9_port	PORTB	// 
#define	AUX_9_pin	7	// 
#define	AUX_10_port	PORTB	// 
#define	AUX_10_pin	6	// 
#define	AUX_11_port	PORTD	// 
#define	AUX_11_pin	4	// 
#define	AUX_12_port	PORTD	// 
#define	AUX_12_pin	3	// 
#define	AUX_13_port	PORTD	// 
#define	AUX_13_pin	2	// 
#define	AUX_14_port	PORTD	// 
#define	AUX_14_pin	1	//
#define	AUX_15_port	PORTD	// 
#define	AUX_15_pin	0	// 
#define	AUX_16_port	PORTC	// 
#define	AUX_16_pin	5	// 
#define	AUX_17_port	PORTC	// 
#define	AUX_17_pin	3	// 
#define	AUX_18_port	PORTC	//
#define	AUX_18_pin	4	//

#define Ack_port	PORTC
#define Ack_pin		1

#define DCCport		PINC	// Port DCC Eingang
#define DCCpin		0	// Port_Pin DCC Eingang

#define UBport		PINC	// Port Decoder UB MESS Eingang
#define UBpin		2	// Port_Pin UB MESS Eingang

#define MESSport	PINC	// Port U_LED MESS Eingang
#define MESSpin		6	// Port_Pin U_LED MESS Eingang

#define m8DDRB		0b11111111	// DDRB 1=Ausgang/0=Eingang
#define m8DDRC		0b00111010	// DDRC 1=Ausgang/0=Eingang

#define m8DDRD		0b11111111	// DDRD 1=Ausgang/0=Eingang
;mit rs232
#define m8DDRD_debug	0b11111110	// DDRD 1=Ausgang/0=Eingang

#define BAUD		28800	// Die gewünschte Baudrate
#define UBRR_wert	(F_CPU/(16 * Baud))-1	;UBRR-Wert berechnen

#define ANZAHL_AUX	18	//

//Flagregister
#define	resetbit	0	//
#define	noPower	1	// 1 -> 64 Sek keine UB am Decoder vorhanden
#define	noUB	2	// 1 -> keine UB
#define	Lipo	3	// 1 -> Lipobetrieb AUX18 = Lipo GND
#define	bit	4	// "das" neue Bit
#define	neuerBefehl	5	// es ist ein neuer DCC Befehl eingetroffen

//DCCregister
#define richtung_inv	0	// 1= Fahrtrichtung invertiert
#define fahrstufen	1	// 1= 28/128FS 0= 14FS
#define analog		2	// 0= nur DCC
#define analog_ein	3	// 1= auf analog umgeschaltet
#define erwAdresse	5	// 1= nutze lange Adresse
#define keinDCC		6	// für analogbetrieb ist gesetzt, wenn 2,54ms * analog_sw_zeit 
	// kein Pegelwechsel am DCC Eingang war
#define richtung	7	// aktuelle Fahrtrichtung wenn nicht inv. 1=vor 0=zurück

//Empfangspositionen
#define Preamble	0
#define ByteA_lesen	1
#define ByteB_lesen	2
#define ByteC_lesen	3
#define ByteD_lesen	4
#define ByteE_lesen	5
#define ByteF_lesen	6

//Funktionen
#define	FL	0
#define	F1	1
#define	F2	2
#define	F3	3
#define	F4	4
#define	F5	5
#define	F6	6
#define	F7	7

//AUX-Status
#define	Nacht_aus	3
#define	Effekt_2	4
#define	AUX_aktiv	5
#define	AUX_an	6
#define	Effekt_Start	7

//Effekte
#define	normales_Licht	0
#define	Neonlicht	1
#define	defekte_Lampe	2
#define	Nachtmodus	3
#define	Kupplung	4 
#define	schaltet_zufaellig	5
#define	AUX_rueckwaerts_aus	6
#define	AUX_vorwaerts_aus	7

#define	analog_sw_zeit	40	//analog Umschaltverzögerung*2,55ms ist die Zeit ohne DCC Pulse nach der auf analog Betrieb umgeschaltet wird

/************************
 * Registerdefinitionen *
 ************************/

#define Adresse		r0	// eigene Adresse bzw bei langen Adressen der high wert
#define U_LED		r1	// U_LED Sollwert
#define Zaehler_1_25ms	r2	// 1,25ms Zähler
#define intsreg		r3	// Kopie sreg im Interrupt (zum beschleunigen vom interrupt)
#define Dimmer		r4	// Zähler für Dimmer
#define PWM_Zaehler	r5	// Zähler für Soft PWM
#define DCC_xor		r7	// 
#define byteA		r8	// Empfangsbytespeicher
#define byteB		r9
#define byteC		r10
#define byteD		r11
#define byteE		r12
#define byteF		r13
#define Zaehler_62_5ms	r14
#define Zaehler_10us	r15	// zählt die 10us ctc interrups
#define w		r16	// Arbeitsregister 1
#define w2		r17	// Arbeitsregister 2
#define w3		r18	// Arbeitsregister 3
#define w4		r19	// Arbeitsregister 4
#define bitzaehler	r20	// Bitzaehler beim speichern 
#define EmpPos		r21	// Empfangsposition DCC Befehl
				//    0 = PREAMBLE
				//    1 = ByteA_lesen
				//    bis
				//    6 = ByteF_lesen
#define flag		r22	// Flagregister
				//    Bit0 = 1 -> resetbit
				//    Bit1 = 1 -> 
				//    Bit2 = 1 ->
				//    Bit3 = 1 -> 
				//    Bit4 = 1 -> das neue bit
				//    Bit5 = 1 -> neuer DCC Befehl da
				//    Bit6 = 1 -> 
				//    Bit7 = 1 ->
#define DCCreg		r23	// DCC Register für Funktionen und Fahrtrichtung
#define Lowpegel	r24	// Speicher für Lowpegel
#define Highpegel	r25	// Speicher für Highpegel

.global Reset,TIM2_COMP,ADC_Complete,analog_sw		// interrupt.S
.global	init_adc_m8,init_timer1_m8,init_timer2_m8	// init_m8wagdec.S
.global	eepromlesen,eepromschreiben,EE_Adresse		// Eprom.S
.global DATEN_NEU_EINLESEN,AUX_Funktion,AUX_Status,AUX_Effekte,AdresseLow,EEpromDatenlesen	//LoadEEdaten.S
.global EEAdresse,EECV13,EEOSCCAL,EEsoftup,EE_AUX_FKT,EE_AUX_EFF,EEcv29,EE_U_LED,EE_Lipo,EElanghigh,EElanglow
.global DCC_DECODER,SERVICE_MODE,DCCreset,F_GRUPPE_1,F_GRUPPE_2,CV_edit	//DCC_Decode.S
.global ProgTest					//Programmierung.S
.global F_NEU_EINLESEN,StepDown_ausschalten,StepDown_einschalten,Funktionen	//Funktionsbefehle.S
.global V_BASIS,ERW_OPERATION				// Fahrbefehle.S
.global OUT_SET						//Out_set.S
.global analog_Ri_Zaehler,AUX_Timer,UB_test,Pz
.global ANALOG_FAHRT,analog_Richtung			// analog.S
Detected encoding: UTF-80