Ciao a tutti,
rieccomi con un nuovo problema :), procedo a spiegare, ho connesso ai pin B1, B2 e B3 del mio Atmega le uscite di un deepswitch (normale interruttore con 8 in e 8 out) e ho scritto il codice seguente per rilevare il valore di questi pin in modo da capire se i relativi interruttori sono aperti o chiusi, ma non capisco perchè i dati che mi da sono sballati, nel senso che non corrispondo a realtà.
Mi dite se il codice è corretto? Grazie
uint8_t THRESHOLD_MOTION;
//Setto il valore del registro FF_MT_THS in base al valore letto sul deepswitch
if (PINB & (1<<PINB3) ==1)
{
//Setto la soglia alta
THRESHOLD_MOTION = 0b11111111;
usart_printString("SOGLIA ALTA DEEP SWITCH 3");
usart_printString("\r");
} else if (PINB & (1<<PINB2) ==1)
{
//Setto la soglia media
THRESHOLD_MOTION = 0b00001111;
usart_printString("SOGLIA MEDIA DEEP SWITCH 2");
usart_printString("\r");
} else if (PINB & (1<<PINB1) ==1)
{
//Setto la soglia bassa
usart_printString("SOGLIA BASSA DEEP SWITCH 1");
usart_printString("\r");
THRESHOLD_MOTION = 0b00000000;
} else {
//Se nessun pin è settato setto come default soglia alta
usart_printString("SOGLIA ALTA DEEP SWITCH NON SETTATO");
usart_printString("\r");
THRESHOLD_MOTION = 0b11111111;
}