Ma mi sono accorto che questo codice mi blocca l'eseguzione per attendere il bit di inzio per la ricezione del dato dal telecomando.
Non c'è un'altro modo per ricevere il dato evitando che si blocchi il loop?
lesto:
no, meglio un iterrupt di "change" o di "rising" (dipende da cosa devi fare), in pratica misuri il tempo tra un cambio di stato e l'altro
Cosa cambia fra i due tipi?
Comunque, semplicemente devo riconoscere quando mi arriva un dato IR senza che il programma sia fermo su un ciclo while che aspetta di ricevere lo start bit.
lesto:
no, meglio un iterrupt di "change" o di "rising" (dipende da cosa devi fare), in pratica misuri il tempo tra un cambio di stato e l'altro
Cosa cambia fra i due tipi?
Comunque, semplicemente devo riconoscere quando mi arriva un dato IR senza che il programma sia fermo su un ciclo while che aspetta di ricevere lo start bit.
Devi usare come ingresso del segnale un pin di interrupt.
devi impostare l'interrupt in modo che reagisca ad un evento di rising (passaggio da LOW ad HIGH), falling (passaggio da HIGH a LOW) o change (HIGH->LOW o LOW-HIGH).
In questo modo non devi tenere alcun while; quando arriva uno dei segnali previsti si attiva la procedura di interrupt e viene eseguito il codice che metti nella relativa routine.
lesto:
no, meglio un iterrupt di "change" o di "rising" (dipende da cosa devi fare), in pratica misuri il tempo tra un cambio di stato e l'altro
Cosa cambia fra i due tipi?
Comunque, semplicemente devo riconoscere quando mi arriva un dato IR senza che il programma sia fermo su un ciclo while che aspetta di ricevere lo start bit.
Devi usare come ingresso del segnale un pin di interrupt.
devi impostare l'interrupt in modo che reagisca ad un evento di rising (passaggio da LOW ad HIGH), falling (passaggio da HIGH a LOW) o change (HIGH->LOW o LOW-HIGH).
In questo modo non devi tenere alcun while; quando arriva uno dei segnali previsti si attiva la procedura di interrupt e viene eseguito il codice che metti nella relativa routine.
Tutto chiaro, adesso una domanda un pochino più complessa.
Come si gestiscono gli interrupt hardware su un ATTiny85? (Innanzi tutto ce ne sono? Perchè a quanto ho capito non tutti i controllori hanno degli interrupt hardware)
Certo che ci sono, sono interrupt generati dalle periferiche del micro. In genere è più giusto chiamarli interrupt esterni perché generati da qualcosa che sta al di fuori del micro. Un cambio di stato su un pin è un interrupt esterno. Si usano come sull’Arduino ma hai bisogno prima di apposite librerie per poter lavorare con i Tiny. http://www.gioblu.com/tutorials/programmazione/214
xelendilx:
Figo il telecomando! Ma l'hai ordinato proprio da sparkfun o c'è qualche rivenditore europeo che lo vende?
Prova a vedere sul sito di Watterott (Germania), hanno praticamente tutto Sparkfun, credo possano prendere su ordinazione anche ciò che non hanno, però compri in Europa con 10 euro di spese trasporto e niente dogana. Seri e veloci!
menniti:
Prova a vedere sul sito di Watterott (Germania), hanno praticamente tutto Sparkfun, credo possano prendere su ordinazione anche ciò che non hanno, però compri in Europa con 10 euro di spese trasporto e niente dogana. Seri e veloci!
Avevo visto ma mi sa che non ce l'hanno! Mi sa che devo solo vedere se si può ordinare XD
menniti:
Prova a vedere sul sito di Watterott (Germania), hanno praticamente tutto Sparkfun, credo possano prendere su ordinazione anche ciò che non hanno, però compri in Europa con 10 euro di spese trasporto e niente dogana. Seri e veloci!
Avevo visto ma mi sa che non ce l'hanno! Mi sa che devo solo vedere se si può ordinare XD
Ricordo che Uwe (ma non vorrei sbagliarmi) mi pare dicesse che c'era proprio la possibilità di scrivergli, prova a fare una richiesta generica, del tipo: "avete modo di ordinare materiale sparkfun non presente sul vostro sito?", così non ti impegni e ottieni risposta.
Non lo devi interpretare tu. Serve all'IDE per sapere quali parole della tua libreria sono da riservare e da evidenziare durante la scrittura del codice.
leo72:
Non lo devi interpretare tu. Serve all'IDE per sapere quali parole della tua libreria sono da riservare e da evidenziare durante la scrittura del codice.
E come faccio a sapere come funziona una libreria?
O leggere il file README allegato. Oppure visitare il sito dello sviluppatore e vedere se c'è un help. Oppure capirlo dagli esempi allegati.
Non sempre le librerie sono documentate come si deve e spesso si va un po' "a naso" facendo affidamento sulle proprie conoscenze per leggere ed interpretare il sorgente (sant'Open Source aiutaci tu).
leo72:
O leggere il file README allegato. Oppure visitare il sito dello sviluppatore e vedere se c'è un help. Oppure capirlo dagli esempi allegati.
Non sempre le librerie sono documentate come si deve e spesso si va un po' "a naso" facendo affidamento sulle proprie conoscenze per leggere ed interpretare il sorgente (sant'Open Source aiutaci tu).