Come far lavorare ATmega a 128KHz di clock

menniti:
inoltre ho un altro problema: a volte questo strab sensore resta aperto, in base alla posizione, e potrebbe restarlo per tutto il giorno (il tx per attivarsi vuole una sequenza low-high), quindi poiché gestisco già questa cosa via software, secondo te potrei mettere in sleep il micro anche col sensore aperto?

La soluzione è semplice, invece di risvegliare su uno stato logico ben preciso, che può essere sia LOW che HIGH, risvegli quando c'è un cambio di stato, quindi sia HIGH->LOW che LOW->HIGH, per farlo basta che metti la keyword CHANGE nella modalità di attivazione dell'interrupt.
Ti allego solo come viene modificata la funzione che mette in sleep, commenta, o cancella, l'attivazione dell'interrupt che si trova in SETUP in modo da attivare l'interrupt solo prima di entrare in sleep e disattivarlo quando ne esce.

void A_nanna()                      // funzione attivazione sleep
{
    /*
    Modalità sleep per ATmega 328p
  
    SLEEP_MODE_IDLE 
    SLEEP_MODE_ADC 
    SLEEP_MODE_PWR_DOWN 
    SLEEP_MODE_PWR_SAVE
    SLEEP_MODE_STANDBY 
    SLEEP_MODE_EXT_STANDBY 
    
    */  
 
    attachInterrupt(0, sbadiglio, CHANGE); // riattiva l'interrupt
    sleep_mode();                          // mette in stato di sleep
    sleep_disable();      // disattiva la modalità sleep e riporta il micro a piena operatività
    detachInterrupt(0);  // disattiva l'interrupt
}