1 | /*********************************************************************
|
2 | * Global Definitions and Declarations
|
3 | *********************************************************************
|
4 | * FileName: GlobalDefinitions.h
|
5 | * Dependencies: none
|
6 | * Processor: PIC18F4685
|
7 | * Complier: Microchip C18
|
8 | *
|
9 | *
|
10 | * Author Date Comment
|
11 | *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
12 | * Stephan Krause 17/8/12 Version 1.0 - Initial Release
|
13 | *********************************************************************/
|
14 |
|
15 |
|
16 | #ifndef GLOBAL_DEFS_H
|
17 | #define GLOBAL_DEFS_H
|
18 |
|
19 | // if EXTERN is not definied, make just declaration of global variables
|
20 | #ifndef EXTERN
|
21 | #define EXTERN extern
|
22 | #endif
|
23 |
|
24 |
|
25 | #define FREQUENCE 32000 // in kHz angegeben
|
26 |
|
27 |
|
28 | typedef enum _BOOL { FALSE = 0, TRUE } BOOL;
|
29 |
|
30 |
|
31 | // User Definitions
|
32 | #define ON 1 // generic defintion
|
33 | #define TRUE 1 // generic defintion
|
34 | #define OFF 0 // generic definition
|
35 | #define FALSE 0 // generic definition
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | // MENU DEFINIZIONEN
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | /////////////////////////////////////////////////////////////
|
47 | // Definitions for Inputs and Outputs, replace PORT...LAT... with nice names
|
48 |
|
49 |
|
50 |
|
51 | #define LED_RT LATBbits.LATB4 // red LED
|
52 | #define LED_GR LATAbits.LATA3 // green LED
|
53 |
|
54 | #define ENC_A (PORTAbits.RA4)
|
55 | #define ENC_B (PORTAbits.RA2)
|
56 |
|
57 |
|
58 | #define PORTB_RB4 PORTBbits.RB4
|
59 |
|
60 |
|
61 | /*****************************************************/
|
62 | /* Globale Variablen */
|
63 |
|
64 |
|
65 | #define MAX_LOKS_IN_LISTE 200
|
66 |
|
67 | /*******************************************************************************
|
68 | *
|
69 | * Anzahl : Speichert die Anzahl der Loks, die dieses HM verwaltet
|
70 | * LokIDListe : Liste der IDs der Loks, die verwaltet werden
|
71 | * Index bezeichnen Position auf der AnzeigeListe
|
72 | * Wert bezeichnet die ID der Lok
|
73 | * LokVsollListe : Liste der Sollgeschwindigkeiten der Loks
|
74 | * Index bezeichnen Position auf der AnzeigeListe
|
75 | * Wert bezeichnet v_soll der Loks
|
76 | *
|
77 | *
|
78 | ******************************************************************************/
|
79 |
|
80 |
|
81 |
|
82 | extern unsigned int Lokanzahl;
|
83 | extern unsigned int LokIDListe[201];
|
84 | extern volatile unsigned char LokVsollListe[201];
|
85 | extern volatile unsigned char LokVistListe[201];
|
86 |
|
87 |
|
88 | /*******************************************************************************
|
89 | * FirstItem :
|
90 | * LastItem :
|
91 | * CursorPosition :
|
92 | * Cursor :
|
93 | *
|
94 | ******************************************************************************/
|
95 | typedef struct _ANZEIGE {
|
96 | unsigned char FirstItem;
|
97 | unsigned char LastItem;
|
98 | unsigned char CursorPosition;
|
99 | unsigned char Cursor;
|
100 | } ANZEIGE;
|
101 |
|
102 |
|
103 |
|
104 |
|
105 |
|
106 | EXTERN ANZEIGE Anzeige_LokListe;
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 |
|
117 | //#pragma romdata dataEEPROM=0xF00000
|
118 | // rom unsigned char FirstByte = 0x00;
|
119 | // rom unsigned char SecondByte = 0x01;
|
120 | //#pragma romdata
|
121 |
|
122 |
|
123 | // address internal eeprom
|
124 | #define HM_ID_ADRL 0xF00001
|
125 | #define HM_ID_ADRH 0xF00000
|
126 |
|
127 | // ID dieses Handmoduls, bei verwendung mehrerer Handmodule wichtig
|
128 | EXTERN unsigned int HM_ID;
|
129 |
|
130 |
|
131 | // i2c address of external eeprom 24c32
|
132 | #define I2C_MAIN_EEPROM 0b10100000
|
133 |
|
134 |
|
135 | /*******************************************************************************
|
136 | *
|
137 | * Anfahrspannung : uchar 0-240, 50mV Schritte -> 0 - 12V
|
138 | * Maximalspannung : uchar 0-240, 50mV Schritte -> 0 - 12V
|
139 | * PWM-Amplitude : uchar 0-240, 50mV Schritte -> 0 - 12V
|
140 | * PWM-Frequenz :
|
141 | * Maximalstrom : uchar 0-150, 10mA Schritte -> 0 - 1,5A
|
142 | * Anfahrkoeefizient : Prozentwert, um den die Geschwindigkeit pro Sekunde
|
143 | * erhöht wird => Beschleunigung
|
144 | * uchar 0-255, 0,5% Schritte -> 0,5% - 127,5% pro Sekunde
|
145 | * 0 -> keine Verzögerung, Stellgröße folg sofort Führungsgröße
|
146 | * Bremskoeefizient : Prozentwert, um den die Geschwindigkeit pro Sekunde
|
147 | * erniedrigt wird => Verzögerung
|
148 | * uchar 0-255, 0,5% Schritte -> 0,5% - 127,5% pro Sekunde
|
149 | * 0 -> keine Verzögerung, Stellgröße folg sofort Führungsgröße
|
150 | * Länge : Länge des Zuges
|
151 | * v_soll : Sollgeschwindigkeit
|
152 | * uchar 0-200, 0,5% Schritte -> 0% - 100%
|
153 | * v_ist : Momentane Ist-Geschwindigkeit
|
154 | * char 0-200, 0,5% Schritte -> 0% - 100%
|
155 | * dir_soll : Sollfahrtrichtung
|
156 | * uchar 0/1, 0 normal, 1 anders herum
|
157 | * dir_ist : Momentane Fahrtrichtung
|
158 | * uchar 0/1, 0 normal, 1 anders herum
|
159 | * Strom : Momentaner Stromverbrauch, gemittelt über (?)100ms
|
160 | *
|
161 | ******************************************************************************/
|
162 | typedef struct _structLok {
|
163 | unsigned int ID; // ID der Lok
|
164 | unsigned char Anfahrspannung; // Anfahrspannung, wert zwischen 0 und 240
|
165 | unsigned char Maximalspannung; // Maximalspannung, wert zwischen 0 und 240
|
166 | unsigned char PWM_Amplitude;
|
167 | unsigned char PWM_Frequenz;
|
168 | unsigned char Maximalstrom;
|
169 | unsigned char Anfahrkoeff;
|
170 | unsigned char Bremskoeff;
|
171 | unsigned char Laenge;
|
172 | unsigned int FR_ID;
|
173 | unsigned char v_soll;
|
174 | unsigned char v_ist;
|
175 | unsigned char dir_soll;
|
176 | unsigned char dir_ist;
|
177 | unsigned int strom;
|
178 | }structLok;
|
179 |
|
180 | EXTERN structLok Lok,LokTemp;
|
181 |
|
182 | #define LOKNAME_ANZAHL_ZEICHEN 20
|
183 | // name der Lok, als temporär Speicher
|
184 | EXTERN char LokName[LOKNAME_ANZAHL_ZEICHEN+1];
|
185 |
|
186 |
|
187 | // Status des LCDs, ON = eingeschaltet und initialisiert, OFF = im reset, aus
|
188 | EXTERN unsigned char LCD_OnState;
|
189 |
|
190 | extern volatile int enc_delta;
|
191 |
|
192 |
|
193 | #endif
|