Hanna
Sourcecode Batteriemanagementsystem
board_init.c
gehe zur Dokumentation dieser Datei
1 
13 #include <board_init.h>
14 #include <avr/interrupt.h>
15 
16 #include "port_driver.h"
17 #include "compiler.h"
18 #include "usartx.h"
19 #include "sdcard_driver.h"
20 #include "config_clock.h"
21 #include "usb_cdc.h"
22 #include "usb_stdio.h"
23 #include "Hardware/com74HC595.h"
24 #include "Hardware/temp_mcp9843.h"
25 #include "Hardware/ds1388_rtc.h"
26 #include "Hardware/ad7997.h"
27 #include "screens_gfx.h"
28 #include <gfx.h>
29 
31 
32 FILE usbout = FDEV_SETUP_STREAM(usb_write, NULL, _FDEV_SETUP_WRITE);
33 FILE usbin = FDEV_SETUP_STREAM(NULL, usb_read, _FDEV_SETUP_READ);
35 
36 uint8_t betriebsart = LEERLAUF;
37 
46 void board_init ( void )
47 {
48 // Systemtakte einschalten
49 
51 
52 // Push-Button für Display
53 
54  TASTER_PORT.DIRCLR = TASTER_ALLE;
55  TASTER_PORT.INT0MASK = TASTER_ALLE;
56  TASTER_PORT.PIN2CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc;
57  TASTER_PORT.PIN3CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc;
58  TASTER_PORT.PIN4CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc;
59  TASTER_PORT.PIN5CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc;
60  TASTER_PORT.INTCTRL = PORT_INT0LVL_LO_gc;
61 
62 // ENABLE QVGA LCD DISPLAY
63 
64  IO_SetPinAsOutput_InitHigh ( QVGA_SCK );
65  IO_SetPinAsOutput_InitHigh ( QVGA_MOSI );
66  IO_SetPinAsInput ( QVGA_MISO );
67  IO_SetPinAsOutput_InitHigh ( QVGA_CS );
68  IO_SetPinAsOutput ( QVGA_DC );
69  IO_SetPinAsOutput ( QVGA_LCD_RESET );
70 
71 // CONF_BOARD_SD_CARD_READER
72 
73  IO_SetPinAsOutput_InitHigh ( SD_READER_SCK );
74  IO_SetPinAsOutput_InitHigh ( SD_READER_MOSI );
75  IO_SetPinAsInput ( SD_READER_MISO );
78 
79 // Ladestrom, USB-Stromversorgung angeschlossen
80 
81  PORTD.DIRCLR = USB_POWER_IN_INT_bm | LADE_POWER_IN_INT_bm; // Pin D0, D1 als Eingang
82  PORTD.INT1MASK |= LADE_POWER_IN_INT_bm; // in der Interruptmaske 1 Pin 0, 1 freigeben
83  PORTD.INT1MASK |= USB_POWER_IN_INT_bm;
84  PORTD.PIN0CTRL = PORT_ISC_RISING_gc; // Verbraucher PullDown aktivieren, steigende Flanke aktivieren
85  PORTD.PIN1CTRL = PORT_ISC_BOTHEDGES_gc; // USB PullDown aktivieren, steigende Flanke aktivieren
86  PORTD.INTCTRL |= PORT_INT1LVL_HI_gc; // Interrupt HighLevel für PORTE und INT0MASK freigeben
87 
88 // Verbraucherport eingeschaltet
89 
90  PORTE.DIRCLR = LAST_bm; // Pin E3 als Eingang
91  PORTE.INT1MASK |= LAST_bm; // in der Interruptmaske 0 Pin 3 freigeben
92  PORTE.PIN3CTRL = PORT_OPC_PULLDOWN_gc | PORT_ISC_RISING_gc; // Verbraucher PullDown aktivieren, steigende Flanke aktivieren
93  PORTE.INTCTRL |= PORT_INT1LVL_HI_gc; // Interrupt HighLevel für PORTE und INT0MASK freigeben
94 
95 // TEVENT
96 
97  PORTE.DIRCLR = TEMPERATURE_INT_bm; // Pin E2 als Eingang
98  PORTE.INT0MASK |= TEMPERATURE_INT_bm; // in der Interruptmaske 0 Pin 2 freigeben
99  PORTE.PIN2CTRL = PORT_OPC_PULLDOWN_gc | PORT_ISC_RISING_gc; // Temperature PullDown aktivieren, steigende Flanke aktivieren
100  PORTE.INTCTRL |= PORT_INT0LVL_HI_gc; // Interrupt HighLevel für PORTE und INT0MASK freigeben
101 
102 // BT Event
103 
104  PORTF.DIRCLR = TEMPERATURE_INT_bm; // Pin F4 als Eingang
105  PORTF.INT0MASK |= TEMPERATURE_INT_bm; // in der Interruptmaske 0 Pin 2 freigeben
106  PORTF.PIN4CTRL = PORT_OPC_PULLDOWN_gc | PORT_ISC_RISING_gc; // Temperature PullDown aktivieren, steigende Flanke aktivieren
107  PORTF.INTCTRL |= PORT_INT0LVL_HI_gc; // Interrupt HighLevel für PORTE und INT0MASK freigeben
108 
109 // Startstromversorgung aus
110 
111  IO_SetPinAsOutput ( V_START_OFF ); // Pin B1 als Ausgang, schaltet die Startstromversorgung aus.
112 
113 // Start USB
114  usb_init ();
115 
116 // Start USARTF0
117  USART_Init ( eUSARTF0, BAUD_A, BAUD_B );
118  USART_Connect ( eUSARTF0, OUT_FILENO );
119 
120 // Starte Interrupts
121  PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
122  sei();
123 
124 // Inits nach Start Interrupts
125 
126 // Grafikfunktionen, Display initialisieren
127  gfx_init();
128 
129 // Schieberegister
130  com74hc595_init ();
131 
132 // ADC
133  AD7997_init ();
134 
135 // Temperatur
136  MCP9843_init ();
137 
138 // RTC
139  DS1388_init ();
140 
141 // Screens Startvariablen belegen
142  screen_init ();
143 }
144 
void IO_SetPinAsOutput(PORT_t *port, uint8_t pinMask)
This function configures a pin in an I/O port or virtual port as an output.
Definition: port_driver.c:133
Konstanten, Filter und Commands für den Temperatursensor MCP 9843.
Header, Definition der Konstanten und Commands für DS1388.
Standard board header file. Diese Datei enthält die Standardparameter und Pinbelegungen für das BMS B...
Commonly used includes, types and macros.
void com74hc595_init(void)
Initialisierung 74HC595.
Definition: com74HC595.c:133
Standardheader.
Bibliothek zur USB-Kommunikation von Jürgen W.
FILE usbout
Filestreams für USB Kommunikation.
Definition: board_init.c:32
void MCP9843_init()
Einstellungen des µC für die Arbeit mit MCP9843.
Definition: temp_mcp9843.c:100
void screen_init(void)
Koordinaten für die Markierung ausgewählter Zeilen wird initialisiert.
Definition: screens_gfx.c:570
XMEGA I/O Port driver header file.
void Config32MHzClock(void)
Einstellung der Systemtakte und der USB-Clock.
Definition: config_clock.c:22
Standardheader und Auswahl der Übertragungsgeschwindigkeit.
Datei aus der SD-Card Reader Bibliothek von M. Junghans.
Standardheader.
void AD7997_init(void)
TWI (I2C) und ADC 1/2 werden initialisiert.
Definition: ad7997.c:75
void board_init(void)
BMS Board Initialisierung.
Definition: board_init.c:46
Graphical library API header file.
void IO_SetPinAsOutput_InitHigh(PORT_t *port, uint8_t pinMask)
This function configures a pin in an I/O port or virtual port as an output and sets the pin to high a...
Definition: port_driver.c:145
void IO_SetPinAsInput(PORT_t *port, uint8_t pinMask)
This function configures a pin in an I/O port or virtual port as an input.
Definition: port_driver.c:159
#define gfx_init()
Definition: gfx_ili9341.h:321
Standardheader und Positionen der Zeilen und Spalten auf den jeweiligen Screens.
#define SD_READER_SS
!SS! PIN wird nicht benutzt => entweder als Input mit Eingang high oder als Output konfigurieren...
Definition: board_init.h:52
Bibliothek zur USB-Kommunikation von Jürgen W.
#define SD_READER_CS
CS Pin, über den der Card Reader aktiviert wird.
Definition: board_init.h:46
void DS1388_init()
Einstellungen des µC für die Arbeit mit DS1388.
Definition: ds1388_rtc.c:46
Header für ADC AD7997, Definition der Register und Commands.