LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: buu em 14 de Novembro de 2010, 23:17

Título: Duvida digitalWrite, e max431x
Enviado por: buu em 14 de Novembro de 2010, 23:17
Estou a fazer um circuito para detectar o sinal de 4 fontes de video e o arduino vai escolher a melhor fonte e vai deixar passar o melhor sinal para a saida. Até aqui tudo mto bem e simples, vai ter (já tem ) um LCD para saber a qualidade do sinal de cada fonte, (agora só tenho 2 fontes para não complicar muito)

O esquema é mto parecido com este, apenas troquei as resistencias para 75 ohm para o video, e nas entradas meti mais dois condensadores ceramicos de 0.47uf e 2 resistencias de 100k em cada entrada de video. O resto está tudo igual.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg51.imageshack.us%2Fimg51%2F8807%2Fescrd.jpg&hash=7e9a18dd513de727778904ddd55c608cee49ccf7)

O JU1 esta ligado ao intput 9 do arduino. (GND - GND arduino)

A minha placa:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg189.imageshack.us%2Fimg189%2F1985%2Fboardnp.jpg&hash=79014e789a564b3404632ba926689c620b4b3ba2)

Agora o meu problema, usado o digitalWrite consigo ligar uma fonte mais não consigo trocar entre elas, o codigo que tenho neste momento é isto (parcial):

Código: [Seleccione]

int MUXSelect_1 = 8;

pinMode(MUXSelect_1, OUTPUT);

static void MUX(void){
 
   if (rssi_1 <= 85) {
    digitalWrite(MUXSelect_1, HIGH);
      }
  else {
    digitalWrite(MUXSelect_1, LOW);
      }


Para valores inferiores a 85% o arduino deve mudar o canal do max3414, só que eu só estou a conseguir ver uma fonte de video, sei qe isto é relacionado com esta tabela, mas já tentei varias opções e não consigo fazer a comutação entre as duas fontes de video

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg337.imageshack.us%2Fimg337%2F3078%2Ftabelacc.jpg&hash=94b2ff0148f0614731916a0fd1aa78b2c3653ff5)


Pin out do MAX4314
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg340.imageshack.us%2Fimg340%2F5839%2F28653865.jpg&hash=6bad1820e52cbc3ef4082f0a379981c4ac0a327d)

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg99.imageshack.us%2Fimg99%2F9499%2Fpiny.jpg&hash=aa036fb09f41fb6c00ab1abb08eee21613a6a53b)



http://datasheets.maxim-ic.com/en/ds/MAX4310-MAX4315.pdf (http://datasheets.maxim-ic.com/en/ds/MAX4310-MAX4315.pdf)





Título: Re: Duvida digitalWrite, e max431x
Enviado por: Sérgio_Sena em 15 de Novembro de 2010, 10:47
Estás a usar o 4313 ou o 4311/14 ?

É que os últimos têem dois pinos de endereçamento, e na tua placa só tens um pino ligado. Se o outro pino tiver internamente um pull-up ou pull-down, andas sempre no canal 0 e 2 ou 1 e 3.
Título: Re: Duvida digitalWrite, e max431x
Enviado por: buu em 15 de Novembro de 2010, 11:22
Estou a usar o 4314, bolas onde é que viste isso??  :( eu cheguei lá por erro, mas como vi sempre usarem o pino 1 para fazer a comutação...(mas era sempre o 4310/13)

Depois de muitas tentativa, se ligar o pino 1 a massa vai ligar a entrada do pino 7, se ligar o pino 1,2 a massa vai ligar a entrada do pino 5.

Afinal nem tudo estava mal, agora no programa a abordagem esta correcta? posso controlar os 2 pinos do 4314 atraves de 2 saidas digitais do arduino, como esta no meu codigo? ou tenho de usar bitshift?
Título: Re: Duvida digitalWrite, e max431x
Enviado por: Sérgio_Sena em 15 de Novembro de 2010, 15:11
A explicação está nas imagens que tu aí puseste  ;D

Sim, podes controlar por dois pinos digitais do teu micro.
O melhor método para ligar/desligar pinos, é fazer OR para ligar e AND para desligar. Isto por causa do método de escrita das portas. Confirma no datasheet do micro usado.
Título: Re: Duvida digitalWrite, e max431x
Enviado por: senso em 15 de Novembro de 2010, 15:13
Com digitalWrite é só fazer HIGH e LOW não precisa de se preocupar com mais nada, mas o datasheet tem tudo, deixar um pino de selecção a flutuar é pedir problemas.