Moins,
Ich verwende in einem Projekt in Atmal Studio den TWI Treiber von Atmel.
Der ist in C geschrieben, ich programmiere in C++. Deshalb muss ich ihn
mit einbinden.
Mein Problem ist nun, dass der C-Compiler die Definitionen aus dem .h
file nicht mehr im .c file findet:
Hier kleine Auszüge aus den Programmen:
TWI_Master.h
1 | #ifndef TWI_Master_h
|
2 | #define TWI_Master_h
|
3 |
|
4 | #ifdef __cplusplus
|
5 | extern "C" {
|
6 | /****************************************************************************
|
7 | TWI Status/Control register definitions
|
8 | ****************************************************************************/
|
9 | #define TWI_BUFFER_SIZE 4 // Set this to the largest message size that will be sent including address byte.
|
10 |
|
11 | #define TWI_TWBR 0x0C // TWI Bit rate Register setting.
|
12 | // Se Application note for detailed
|
13 | // information on setting this value.
|
14 |
|
15 | und so weiter ....
|
TWI_Master.c:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include "TWI_Master.h"
|
4 |
|
5 |
|
6 | static unsigned char TWI_buf[ TWI_BUFFER_SIZE ]; // Transceiver buffer
|
7 | static unsigned char TWI_msgSize; // Number of bytes to be transmitted.
|
8 | static unsigned char TWI_state = TWI_NO_STATE; // State byte. Default set to TWI_NO_STATE.
|
9 |
|
10 | union TWI_statusReg TWI_statusReg = {0}; // TWI_statusReg is defined in TWI_Master.h
|
11 |
|
12 | /****************************************************************************
|
13 | Call this function to set up the TWI master to its initial standby state.
|
14 | Remember to enable interrupts from the main application after initializing the TWI.
|
15 | ****************************************************************************/
|
16 | void TWI_Master_Initialise(void)
|
17 |
|
18 | usw....
|
Hier spuckt mir der Compiler folgende Fehlermeldungen aus:
1 | Building file: .././TWI_Master.c
|
2 | Invoking: AVR8/GNU C Compiler : 5.4.0
|
3 | C:\Users\steingas\Documents\Atmel Studio\7.0\HomeLED_Anz\HomeLED_Anz\TWI_Master.c(52,31): error: 'TWI_BUFFER_SIZE' undeclared here (not in a function)
|
4 | static unsigned char TWI_buf[ TWI_BUFFER_SIZE ]; // Transceiver buffer
|
5 | ^
|
6 | C:\Users\steingas\Documents\Atmel Studio\7.0\HomeLED_Anz\HomeLED_Anz\TWI_Master.c(54,34): error: 'TWI_NO_STATE' undeclared here (not in a function)
|
7 | static unsigned char TWI_state = TWI_NO_STATE; // State byte. Default set to TWI_NO_STATE.
|
8 | ^
|
9 | C:\Users\steingas\Documents\Atmel Studio\7.0\HomeLED_Anz\HomeLED_Anz\TWI_Master.c(56,7): error: variable 'TWI_statusReg' has initializer but incomplete type
|
10 | union TWI_statusReg TWI_statusReg = {0}; // TWI_statusReg is defined in TWI_Master.h
|
Da im .c file TWI_BufferSize und TWI_NO_State definiert wurden müsste
der compiler diese eigentlich finden.
Diese Definitionen sind von Atmel.
Wo liegt der Fehler?
Viele Grüße
Alexander