Das Problem ist, dass er mir anscheinend nicht den richtigen Wert rausgibt, zumindest reagiert er nicht wie gewollt, ersetze ich den Konstantennamen jedoch durch einen Wert den ich von hand mit Taschenrechner errechne, so funktioniert alles. Der Code:
1 | #define blue_green (uint32_t)((bright_blue+2*dark_green)/3/5000*1023)
|
2 | ...
|
3 | //Werte in mV!
|
4 | #define bright_blue 2020 //entsprechenden Farben und
|
5 | #define dark_green 1660 //Umgebungslichtverhältnissen.
|
6 | #define bright_green 930 //(dark -> abgedunkelt)
|
7 | #define dark_orange 140 //(bright -> bei Tageslicht)
|
8 | |
9 | #define code_blue 0b11 //2-Bit-Codierung der Farben:
|
10 | #define code_green 0b10 //MSB->OUT2 ,LSB->OUT1
|
11 | #define code_orange 0b01
|
12 | ...
|
13 | uint16_t value=getAV(); |
14 | |
15 | if (value > blue_green) |
16 | { //blauer Stein |
17 | PORTB&=0xFC; //&0b1111 1100 |
18 | PORTB|=code_blue; |
19 | }
|
20 | ...
|
Wert liegt im Bereich von 0 - 400 Kann man sich im Debugger die Werte der Konstanten anschauen?