FreeEMS
0.2.0-SNAPSHOT-285-g028e24c
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
src
main
inc
init.h
Go to the documentation of this file.
1
/* FreeEMS - the open source engine management system
2
*
3
* Copyright 2008-2013 Fred Cooke
4
*
5
* This file is part of the FreeEMS project.
6
*
7
* FreeEMS software is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation, either version 3 of the License, or
10
* (at your option) any later version.
11
*
12
* FreeEMS software is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with any FreeEMS software. If not, see http://www.gnu.org/licenses/
19
*
20
* We ask that if you make any changes to this file you email them upstream to
21
* us at admin(at)diyefi(dot)org or, even better, fork the code on github.com!
22
*
23
* Thank you for choosing FreeEMS to run your engine!
24
*/
25
26
27
/** @file
28
*
29
* @ingroup allHeaders
30
*/
31
32
33
/* Header file multiple inclusion protection courtesy eclipse Header Template */
34
/* and http://gcc.gnu.org/onlinedocs/gcc-3.1.1/cpp/ C pre processor manual */
35
#ifndef FILE_INIT_H_SEEN
36
#define FILE_INIT_H_SEEN
37
38
39
#ifdef EXTERN
40
#warning "EXTERN already defined by another header, please sort it out!"
41
#undef EXTERN
/* If fail on warning is off, remove the definition such that we can redefine correctly. */
42
#endif
43
44
45
#ifdef INIT_C
46
#define EXTERN
47
/* For private internal use of init.c init() function only, hence wrapped in this ifdef */
48
49
/* Keep this non ISR stuff out of linear flash space */
50
void
initPLL
(
void
)
FPAGE_FE
;
51
void
initADC
(
void
) FPAGE_FE;
52
void
initPWM
(
void
) FPAGE_FE;
53
void
initGPIO
(
void
) FPAGE_FE;
54
void
initAllPagedRAM
(
void
) FPAGE_FE;
55
void
initAllPagedAddresses
(
void
) FPAGE_FE;
56
void
initVariables
(
void
) FPAGE_FE;
57
void
initFlash
(
void
) FPAGE_FE;
58
void
initXgate(
void
)
TEXT1
;
// Can't be paged because it has to burn to a page, for now...
59
void
initECTTimer
(
void
) FPAGE_FE;
60
void
initPITTimer
(
void
) FPAGE_FE;
61
void
initSCIStuff
(
void
) FPAGE_FE;
62
void
initConfiguration
(
void
) FPAGE_FE;
63
void
initInterrupts
(
void
) FPAGE_FE;
64
65
// XGATE assembly symbols, only used for address/size
66
extern
void
xgateThread0(
void
);
67
extern
void
xgateThread0End(
void
);
68
69
/* Place these functions in the same block of flash as the data upon which they operate! */
70
void
initLookupAddresses
(
void
)
LOOKUPF
;
71
void
initFuelAddresses
(
void
)
FUELTABLESF
;
72
void
initTimingAddresses
(
void
)
TIMETABLESF
;
73
void
initTunableAddresses
(
void
)
TUNETABLESF
;
74
void
initPagedRAMFuel
(
void
) FUELTABLESF;
75
void
initPagedRAMTime
(
void
) TIMETABLESF;
76
void
initPagedRAMTune
(
void
) TUNETABLESF;
77
78
#else
79
#define EXTERN extern
80
#endif
81
82
83
/* Other function declarations are private and present in the C */
84
/* source file purely to assign them to a particular memory region. */
85
extern
void
init
(
void
) FPAGE_FE;
86
extern
void
enablePLL
(
void
) FPAGE_FE;
// Needed in self clock ISR
87
88
89
/* Various masks and values used for initialising the contents of control registers. */
90
/* For information on how these are being used, try this link : */
91
/* http://www.vipan.com/htdocs/bitwisehelp.html */
92
93
94
// PLL control values
95
#define PLLSELOFF 0x7F
/* Mask for switching to base external OSCCLK clock 0b_0111_1111 */
96
#define PLLOFF 0xBF
/* Mask for turning the PLLON bit to ZERO 0b_1011_1111, IE, turning PLL off */
97
#define PLLDIVISOR 0x03
/* Input crystal frequency is divided by this number */
98
#define PLLMULTIPLIER 0x09
/* The result of the above is multiplied by this number to give the bus frequency */
99
100
// Flash control values
101
#define PRDIV8 0x40
/* Mask for flash module to divide the oscillator clock by 8 */
102
103
104
/// @todo TODO define other macros such that raw values aren't used in the code
105
/// @todo TODO move all the reg masks to a header of their own for general use.
106
107
108
#undef EXTERN
109
110
111
#else
112
/* let us know if we are being untidy with headers */
113
#warning "Header file INIT_H seen before, sort it out!"
114
/* end of the wrapper ifdef from the very top */
115
#endif
Generated on Sat Jun 6 2015 07:41:33 for FreeEMS by
1.8.1.2