Schönen guten Abend, ich habe eine Funktion programmiert, damit ich weniger mit Registern arbeiten muss wenn ich mal einen Pin ein oder ausschalten will:
1 | uint8_t port_pin[1]; |
2 | get_port_pin(pin,port_pin); |
3 | switch(port_pin[0]){ |
4 | /* hier zeigt avrstudio immer hin wenn ich auf die Fehlermeldung klicke*/ case porta: if (mode==HIGH){PORTA |= (1<<port_pin[1]);} if (mode=LOW){PORTA &= ~(1<<port_pin[1]);} break; |
5 | case portb: if (mode==HIGH){PORTB |= (1<<port_pin[1]);} if (mode=LOW){PORTB &= ~(1<<port_pin[1]);} break; |
6 | case portc: if (mode==HIGH){PORTC |= (1<<port_pin[1]);} if (mode=LOW){PORTC &= ~(1<<port_pin[1]);} break; |
7 | case portd: if (mode==HIGH){PORTD |= (1<<port_pin[1]);} if (mode=LOW){PORTD &= ~(1<<port_pin[1]);} break; |
ich habe sie bereits getestet, und sie funktioniert. Jedoch verstehe ich nicht wieso ich dort immer folgende Warnung bekomme: "suggest parentheses around assignment used as truth value [-Wparentheses]" kleine Nebeninfo: porta bis portc sind absichtlich klein geschrieben, sie sind defines und sind einfach nur Integer Werte von 1-4. get_port_pin schreibt nur in das vorher initialisierte Array, in [0] schreibt es den Port (Wert von 1-4) in [1] den dazugehöroten Pin (Wert 0-7)