Due domande: leggo funzioni e parole che non ricordo tra quelle base, e non leggo inclusioni di librerie. Sono io che sbaglio?
Seconda domanda: cosa signifixa "non funziona"? Può essere un "non compila e non so risolvere l'errore" (nel caso k'errore sarebbe gradito), un "non fa quello che voglio, ma fa ....", un "non fa nulla".
Questo aiuterebbe chi sa, tra cui non mi annovero, ad aiutare.
Inoltre mi permetto di dare un suggerimento generale: separa il programma il più possibile eseguendone solo una parte, vedendo e risolvendo in modo più facile gli errori eventualmente presenti. Se poi infarcisci il tutto di debug (Serial.println ("") messi nei punti giusti) fai anche meglio, poi li toglierai.
Infine mi chiedo cksa vuoi fare?
Silente:
Due domande: leggo funzioni e parole che non ricordo tra quelle base, e non leggo inclusioni di librerie. Sono io che sbaglio?
SI ...
... sono semplicemente nomi di registri e di porte interne alla MCU che il compilatore conosce perfettamente e che, per usare i quali, NON necessita di alcuna libreria.
Se ti interessa puoi fare riferimento al datasheet del ATmega328P e ... troverai il tutto.
>pinkfloyd11: ... senza star ad impazzire con chiamate a basso livello, per la gestione degli interrupt classici e di quelli relativi al pin-change, ti consiglio l'ottima libreria EnableInterrupt ... prova a dargli un occhiata
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) //clear bit in sfr
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= ~_BV(bit)) //clear bit in sfr
Ciao pinkfloyd11, probabilmente visto il tempo passato avrai già risolto. Se così non fosse vorrei farti notare che probabilmente il codice corretto da inserire per il settaggio dei registri risulta il seguente:
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) //clear bit in sfr
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) //set bit in sfr