GlobalDefinitions.h


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