Pages: [1]   Go Down
Author Topic: Conflitto Timer libreria TVout e IRRemote  (Read 295 times)
0 Members and 1 Guest are viewing this topic.
ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3513
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti,
stavo provando ad usare MENWIZ di Brunialti non su LCD ma usando la TVout e ci sono riuscito (creata versione MENWIZ_TV) su Arduino MEGA.
Ora invece di usare dei pulsanti per muovermi nel menu, ho voluto provare un telecomando di un vecchio hifi e un IRreceiver con led cannibalizzato da un decoder tv da attaccare alla scart.

Il menu e il IRreceiver funzionano bene se NON lavoro con la TVout ma con LCD normale.
La libreria IRReceiver (ultima versione) permette nel file IRReceiverInt.h di definire quale timer usare ed ho scelto il 4 (Arduino MEGA!).
La libreria TVout dovrebbe utilizzare il timer1 (OCR1A) per il sync e timer2 (OCR2A) per il sound.

In compilazione nessun problema, ma in esecuzione c'e' un conflitto sui timer (presumo) in quanto appena viene eseguite la myIR.enableIRIn()
su TV le righe sono posizionate male e il IR riceve ma i comandi non sono giusti (non riconosce neppure il tipo di telecomando)
Ho provato a mettere una millis() che stampa a video ogni 0,5 secondi.  SENZA la .enableIR() (ovvero senza l'IR) il conteggio è regolare e a video vedo i menu bene. Appena metto la .enableIRIn() (che attiva il timer4) allora vedo male e la millis() cronometrata a mano mi sembra vada a rilento, ogni 10 secondi ne conta 5.

Libreria TVout:
http://playground.arduino.cc/Main/TVout
Libreria IRRemote:
https://github.com/shirriff/Arduino-IRremote

Cosa potrei verificare, stampando con Serial.println(), per cercare di capire cosa cambia tra l'uso di IR e non, magari gli OCRxA?
O un registro particolare?
« Last Edit: May 10, 2013, 08:04:54 am by nid69ita » Logged

my name is IGOR, not AIGOR

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C'è un problema di fondo, e cioè che la generazione del segnale video richiede tempistiche precise.
Anche non usando lo stesso timer, sia la TVout che la irRemote usano comunque un interrupt. L'interrupt della irRemote dà fastidio alla TVout perché l'esecuzione della sua ISR allunga leggermente i tempi della generazione del segnale video.
Ricordati che ogni ISR è atomica, cioè non può essere interrotta per cui quando viene eseguita la TVout si ferma per un brevissimo istante.
Logged


ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3513
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per la risposta.  smiley

Proverò anche a studiarmi bene le due librerie stampandomi il codice. Un ritardo lo capisco, ma a cronometro mi sembra che i tempi diventino il doppio. Cercherò, se possibile, una soluzione. Grazie ancora.
Logged

my name is IGOR, not AIGOR

Pages: [1]   Go Up
Jump to: