Hallo ich habe folgendes Problem.
ich habe zwei Module, die den gleichen uC (AT90CAN) haben und fast die
gleichen Funktionen haben und sich nur in der Pinbelegung unterscheiden.
Ich kriege es nicht hin, dass ich die Pinbelegung sich ändert wenn ich
eine Modul auswähle in candef.h auswähle. Ich habe das Gefühl, dass die
#ifdef defined CAN_Modul1 == 1 Anweisung einfach ignoriert wird und ich
bekomme Fehler das z.B. LS1 undeclared. Was mache ich falsch?
1 | //candef.h
|
2 | #define CAN_Modul1 1
|
3 | #define CAN_Modul2 0
|
4 |
|
5 |
|
6 | //io.h
|
7 | #include "candef.h"
|
8 | #ifndef IO_H_
|
9 | #define IO_H_
|
10 |
|
11 | extern void IO_init(void);
|
12 |
|
13 | #ifdef defined CAN_Modul1 == 1
|
14 | #define LS1 (&PORTD), (PD7)
|
15 | #define IN1 (PIND & (1 << BIT3))
|
16 | #elif defined CAN_Modul2 == 1
|
17 | // Outputs
|
18 | #define OUT1 (&PORTF), (PA5)
|
19 | #define IN1 (PINA & (1 << BIT4))
|
20 | #else
|
21 | #error "Please define correct module"
|
22 | #endif
|
23 |
|
24 | #endif /* IO_H_ */
|
Gruss Stefan