Hi,
ich hab mal wieder ein Problem.....
Ich habe das AVR Net IO von Pollin mit Ulrich Radigs Software am laufen.
So nun habe ich ein Taster als Eingang am Port gelegt. Der Taster
schaltet direkt auf Gnd. Im Webserver ist die "LED" (Standardwebseite
von Ulrich Radig) grün, also an, wenn ich den Taster NICHT betätige.
Wenn ich Ihn betätige wird die LED Grau. Das ist die erste Frage. Nach
meiner Logik müsste das anders herum sein. Schalter unbetätigt -> LED
Grau- Mit diesem Code:
1 | //Einsetzen des Pin Status %PI@xy bis %PI@xy durch "ledon" oder "ledoff"
|
2 | //x = 0 : PINA / x = 1 : PINB / x = 2 : PINC / x = 3 : PIND
|
3 | if (strncasecmp_P("PIN",http_entry[index].new_page_pointer,3)==0)
|
4 | {
|
5 | unsigned char pin = (pgm_read_byte(http_entry[index].new_page_pointer+4)-48);
|
6 | b = 0;
|
7 | switch(pgm_read_byte(http_entry[index].new_page_pointer+3))
|
8 | {
|
9 | case 'A':
|
10 | b = (PINA & (1<<pin));
|
11 | break;
|
12 | case 'B':
|
13 | b = (PINB & (1<<pin));
|
14 | break;
|
15 | case 'C':
|
16 | b = (PINC & (1<<pin));
|
17 | break;
|
18 | case 'D':
|
19 | b = (PIND & (1<<pin));
|
20 | break;
|
21 | }
|
22 |
|
23 | if(b)
|
24 | {
|
25 | strcpy_P(var_conversion_buffer, PSTR("ledon.gif"));
|
26 | }
|
27 | else
|
28 | {
|
29 | strcpy_P(var_conversion_buffer, PSTR("ledoff.gif"));
|
30 | }
|
31 | str_len = strnlen(var_conversion_buffer,CONVERSION_BUFFER_LEN);
|
32 | memmove(ð_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
|
33 | a += str_len-1;
|
34 | http_entry[index].new_page_pointer = http_entry[index].new_page_pointer+5;
|
35 | }
|
36 | //wurde das Ende des Packetes erreicht?
|
Dann habe ich noch in der haupt while diesen code um etwas auf dem
Terminal anzuzeigen wenn der Eingang kommt.
1 | if (!(PIND & (1<<PIND2)))
|
2 | {
|
3 | usart_write("PIND2 \r\n");
|
4 | }
|
Da passiert aber garnichts. Warum ist das denn so ?
Konfiguriert habe ich die Ports so:
DDRD = 0x00;
PORTD = 0xff;
Ich hab total den Denkfehler, vielleicht hilft mir Einer ?!?!?