Aiuto da esperti PICAXE

Ciao a tutti, ho un paio di domande a proposito della ricezione di segnali ad infrarosso con il microcontroller suddetto:

1) il mio programma esegue un loop che effettua una serie di operazioni; al contempo ho la necessità di rilevare se è iniziata la ricezione di dati dal telecomando ad infrarossi (pin 0). Ciò deve avvenire senza lasciare il programma in stand by sul comando INFRAIN. Avrei pensato di fare così: eseguo un loop principale senza eseguire il comando INFRAIN e setto l'interrupt per livello alto sullo stesso pin (0) abilitato alla ricezione di dati dal sensore ad infrarosso. Quando inizia la ricezione viene rilevato l'interrupt ed eseguita la relativa subroutine nella quale verrà invocato il comando INFRAIN per decodificare il dato ricevuto. In alternativa potrei settare l'interrupt su un altro ingresso, comunque connesso al sensore infrarosso. Pensate che funzionerà? quali problemi potrebbero insorgere?

2) ho anche la necessità di rilevare se un pulsante sul telecomando viene mantenuto premuto oppure viene rilasciato. Pensavo di agire così: dopo aver eseguito l'operazione in base al codice decodificato dal comando INFRAIN, eseguo una subroutine che controlla continuamente (per circa 45 ms, equivalenti alla durata di un ciclo di trasmissione con il protocollo SIRC), con un ciclo FOR ... NEXT, se presente un livello 1 sul pin 0 (infrared). Se durante il ciclo viene rilevato almeno un livello alto, allora il pulsante è in HOLD, altrimenti è stato rilasciato. Dopodichè il programma torna di nuovo sull'istruzione INFRAIN per decodificare il dato ricevuto. Può funzionare? quante volte devo eseguire l'istruzione IF per rilevare il livello del input 0 per coprire il tempo di 45 ms circa?

Grazie

Reply to
antoniobanchi
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.