Go Down

Topic: l'atmel display recuperato dal decoder (Read 7857 times) previous topic - next topic

vitoos

quest'estate ho smontato un decoder che si era rotto, al suo interno ho trovato un display composto da 4 bcd 7 segmenti controllati da un attiny2313. nella parte bassa della scheda ci sono 8 pin out a cui sono collegati 5 fili e facendo delle verifiche con il tester ho visto che c'è un 5volt, massa, slc tramite resistenza da 100ohm, sda tramite una resistenza da 100ohm e reset con un condensatore 10uF e una resistenza da circa 10kohm. ora la domanda è, che ci potrei fare?? allego 2 foto che ho fatto al display



cece99


quest'estate ho smontato un decoder che si era rotto, al suo interno ho trovato un display composto da 4 bcd 7 segmenti controllati da un attiny2313. nella parte bassa della scheda ci sono 8 pin out a cui sono collegati 5 fili e facendo delle verifiche con il tester ho visto che c'è un 5volt, massa, slc tramite resistenza da 100ohm, sda tramite una resistenza da 100ohm e reset con un condensatore 10uF e una resistenza da circa 10kohm. ora la domanda è, che ci potrei fare?? allego 2 foto che ho fatto al display




Potresti riprogrammare l'attiny per avere una comunicazione seriale con un eventuale arduino che lo controlla via seriale
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Michele Menniti

certamente non puoi farci il caffé, ma visto che è già bell'e pronto per la comunicazione seriale (contrariamente a quello che dice cecé), puoi provare a collegarlo ad un altro micro, p.es. ad un Arduino (pin A4-A5) e mandargli qualche "cifra" per vedere come reagisce, il RESET lo devi usare con un impulso tipo LOW.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

vitoos

per riprogrammarlo devo collegare i pin tx e rx dell'attiny ad arduino giusto?? questi due pin sono collegati al display

Michele Menniti

se stai chiedendo a cecé ti risponde lui, personalmente ti ho consgliato di provare ad usarlo così com'è, potrebbe funzionare senza toccare l'attiny...
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

vitoos

michele per reset cosa devo fare?? devo metterlo a massa?? facciamo prima come dici te, così vediamo come si comporta! sul decoder visualizzava il numero dei canale e qualche scritta come "SCAN" durante la ricerca dei canali

astrobeed


facciamo prima come dici te, così vediamo come si comporta! sul decoder visualizzava il numero dei canale e qualche scritta come


Se è realmente controllato tramite I2C, molto probabile, non ottieni nulla inviando valori a casaccio, l'I2C ha un ben preciso protocollo che come prima cosa richiede di conoscere l'address del device, questa cosa puoi facilmente verificarla utilizzando lo sketch I2Cscanner che ti dice l'address di tutti i device connessi sul bus.
Una volta che hai trovato l'address allora puoi provare ad inviare dei byte al display per vedere come reagisce, tieni presente che quasi sicuramente richiede l'invio di almeno due byte codificati come bcd (= 4 cifre display).


Michele Menniti

Se visualizza sia numeri che lettere si può provare con la codifica standard ascii, mandano un byte per il controllo di ogni signola cifra.
Oppure come dici tu, usare 4 bit per ogni cifra, per usarlo solo come numerico.
Ovvio che bisogna tentare di interpretare il protocollo implementato.
Vito, devi cercare uno sketch che preveda la comunicazione I2C e come dice Astro, uno scanner (software) che legga l'identificativo del display, che dovrai inserire nella comunicazione sul bus I2C, in modo che sia ben chiaro che il destinatario dei dati è lui.
Il reset per ora lo puoi lasciare NON collegato.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

vitoos

allora appena collegato il tutto come da foto, caricato su arduino i2c_scanner e dal monitor seriale mi dice "I2C divice found at address 0x38 ! done". quindi l'indirizzo del display è "0x38". Il filo viola è slc sul display e quello grigiom sda sul display. avete per caso uno sketch per provare a far visualizzare qualcosa??

Michele Menniti

cerca sul playground, in fondo ti basta una semplice riga di invio dati in questo formato
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


allora appena collegato il tutto come da foto, caricato su arduino i2c_scanner e dal monitor seriale mi dice "I2C divice found at address 0x38 ! done". quindi l'indirizzo del display è "0x38".


Il fatto che I2Cscanner ha trovato l'address ti conferma che si tratta di un device I2C, adesso devi solo provare ad inviargli dati scrivendo sulla I2C utilizzando quell'address.
Io come prima prova gli manderei due byte contenenti i valori 0x01 0x02, se il display funziona come penso dovrebbe visualizzare "0102".

Michele Menniti

lui vorrebbe la sintassi per l'invio, credo.... :D
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

vitoos


lui vorrebbe la sintassi per l'invio, credo.... :D

anche se sarebbe bello avere una sintassi provo a guardare nel playground per vedere se trovo qualcosa

vitoos

Quote
#include <Wire.h>

byte val = 0;

void setup()
{
   Wire.begin(); // join i2c bus
}

void loop()
{
   Wire.beginTransmission(56); // transmit to device #44 (0x2c)
                               // device address is specified in datasheet
   Wire.write(val);             // sends value byte 
   Wire.endTransmission();     // stop transmitting

  val++;        // increment value
   if(val == 64) // if reached 64th position (max)
   {
     val = 0;    // start over from lowest value
   }
   delay(5);
}


allora ho preso questo sketch dalla playground e guardando una tabella ascii presa su internet ho capito che per comunicare con il display dovevo mettere "56" per avere l'indirizzo "0x38" del display. ora il display si accende ed emette valori a casaccio che cambiano in continuazione. il pin reset è staccato. vi posto un'altra foto

astrobeed

In base a quello che appare direi che è molto probabile che vengono controllati i singoli segmenti di ogni cifra in funzione dei bit del valore che invii, ovvero un byte è composto da 8 bit e 7 di questi corrispondono ai segmenti del display, se c'è anche il punto è legato all'ottavo bit.
Se invii una serie di valori dove metti a 1 solo un bit per volta per ogni byte in un attimo hai la codifica, usa il formato binario "0b00000000" mettendo a 1 solo un bit per volta.
Devi inviare 4 byte per volta, uno per ogni cifra del display, e non singoli byte per ogni invio.

Go Up