arduino, TEA5767, switch

ciao a tutti, ho collegato all'alimentazione del modulo radio TEA5767 uno switch così da riuscire a spegnere la radio portandola a GND. uso un arduino mega per la gestione della radio. l'arduino oltre a gestire la radio, gestisce anche un orologio. il problema sta nel fatto che quando spengo la radio, si ferma anche il conteggio dell'arduino. Lo switch è collegato fra Vcc eGND con il centrale all'alimentazione della radio. Qualcuno sa da cosa possa dipendere sto problema?
grazie mille

Non comprendo come hai connesso lo switch.

Questo dovrebbe essere connesso tra i +5V di Arduino ed il pin di alimentazione del TEA.

è uno switch a 3 pin, uno va ai +5V di arduino, il centrale all'allimentazione della radio, e l'ultimo alla GND dell'arduino

Perché hai fatto questo tipo di collegamento?

Mettere a massa il pin Vcc significa scaricare i condensatori elettrolitici sulla linea di alimentazione della scheda e questo non è consigliabile.

Non dimenticare che i pin SDA ed SCL del bus I2C sono collegati ad Arduino e questo potrebbe influire sul funzionamento del bus.

Io metto a massa il pin Vcc della radio. Ho fatto la prova anche solo staccando l'alimentazione della radio e il conteggio dell'orologio si ferma anche in quel caso!
Hai in caso consigli su come spegnerla tramite switch?

Il modulo RTC è di tipo I2C?

non uso un modulo rtc l'orologio è fatto da programma. I2C è in uso solo ed esclusivamente con la radio

Non resta che vedere lo sketch.

Ok, ora non lo ho sotto mano. Lo posto domani. Mi sembra strano comunque che spegnendo la periferica I2C il programma si blocchi! Non capisco il tipo di influenza!

lotro:
... Mi sembra strano comunque che spegnendo la periferica I2C il programma si blocchi!

Purtroppo NON è affatto strano ...
... la Wire ha sempre avuto il problema che al minimo errore sul bus I2C si bloccava. Pensavo l'avessero risolto (... negli anni sono state proposte svariate soluzioni), ma, a quanto sembra ... non sono state poi implementate.

Prova a fare una ricerca per "Arduino non blocking I2C" e troverai alcune info ...

Guglielmo

Ok grazie mille, non sapevo di questa cosa. Faccio una ricerca e vedo se riesco a risolvere

Oltre la libreria "non blocking" puoi anche "rilasciare" il bus i2c prima di spegnere la radio (magari come dice cyberths scollega il gnd dal relè: basta che togli il positivo, nn serve mettere a massa).
Le resistenze di pullup dell'i2c sono sul modulo radio o usi le pullup di arduino?
Se sono sul modulo radio si che si incasina l'i2c....

Stefano

Il pull up lo metto io, non è nel modulo! Domani faccio la prova con la libreria e vediamo che succede!

ciao a tutti, ho cercato su internet varie soluzioni per non far bloccare l'arduino se disconnetto il bus I2C, ma non ho trovato niente di utile. se qualcuno ha qualcosa può passarmi gentilmente qualche documento o direttamente una soluzione per risolvere questo problema?

ma invece di staccargli l'alimentazione non fai prima a gestire il pin 3 ( BUSMODE ).
Quando e' LOW funziona, quando è HIGH il TEA5767 è disabilitato

ci sarebbe un altra soluzione? il modulo è già saldato e non posso dissaldare tutto.

lotro:
ciao a tutti, ho cercato su internet varie soluzioni per non far bloccare l’arduino se disconnetto il bus I2C, ma non ho trovato niente di utile.

Hai visto QUESTA ?

Attenzione:

  1. è molto vecchia
  2. non so se è compatibile con l’IDE nuovo
  3. usa gli stessi identici metodi della Wire, quindi … se usi librerie che richiamano la Wire.h va in conflitto ed occorre correggerle tutte

Quindi … tutta da provare e verificare … :confused:

Guglielmo

si l'ho provata ma da davvero un sacco di problemi, a sto punto preferisco non mettere lo switch e staccare il jack delle casse. se non trovo altre soluzioni farò così anche se come soluzione fa davvero pena.
non riesco neanche a settare il mute da programma

lotro:
si l'ho provata ma da davvero un sacco di problemi

Sarebbe interessante sapere quali ti ha dato, così da poterli verificare ...

A me, a parte un problema di casting nel metodo write() e il dover rimpiazzare la Wire in tutte le librerie usate assieme ad essa ... non ha dato altri grossi problemi ... ::slight_smile:

Guglielmo

Ciao, ma scusate… però se il bus non è utilizzato mentre stacca l’alimentazione non dovrebbe capitare nulla se le resistenze di pullup rimangono alimentate e magari di un valore più basso (che so, 4,7k).
Certo è che l’alimentazione va scollegata quando il bus è inutilizzato.
Potrebbe settare i pin sda/scl come ingresso e poi togliere alimentazione e vedere se va.

Al riavvio prima rialimenta, magari un delay per stabilizzare il tea e poi ripristina a4 ed a5 come uscite.

Importante non mettere a massa l’alimentazione del tea quando non ha il vcc (che probabilmente tira giù sda/scl, “cybeths #3” )

Stefano