Hallo zusammen, kann mir vielleicht jemand verraten, was an folgenden Zeilen schief gehen könnte? ( System: AVR ATMega8515 auf STK500 mit 16x2-Pollin-LCD an PORTA )
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | #include "lcd.h" |
4 | |
5 | typedef struct { |
6 | uint8_t size; |
7 | uint8_t data[10]; |
8 | } buffer_t; |
9 | |
10 | volatile buffer_t buffer; |
11 | |
12 | int main( void ) { |
13 | ...
|
14 | }
|
15 | |
16 | ISR ( USART_RX_vect ) { |
17 | ...
|
18 | lcd_command( 0b11000101 ); // Cursor Zeile 2, Zeichen 5 |
19 | print_hex( c ); |
20 | print_ascii( ' ' ); |
21 | print_hex( (SB0+SB1+buffer.size) ); |
22 | print_ascii( ' ' ); |
23 | print_ascii( '0' + (c == (SB0+SB1+buffer.size)) ); |
24 | if ( c == (SB0+SB1+buffer.size) ) |
25 | state = 4; |
26 | ...
|
27 | }
|
Das LCD zeigt mir dann z.B. | 34 34 0 | an und state=4 wird nicht erreicht. Nur warum ist ( c == (SB0+SB1+buffer.size) ) = 0 wenn offensichtlich gilt: c = (SB0+SB1+buffer.size) = 0x34 Was kann da schief laufen? vielen Dank lg Julian