Vai al contenuto
PLC Forum


I"c Con At42qt1070 - Qtouch con pic e AT42QT1070


tgb99

Messaggi consigliati

Buon giorno a tutti

qualcuno sa dirmi come posso fare per conoscere l'ID access di un componente per la comunicazione I2C?

Ho un integrato qtouch AT42QT1070 che mi consente di creare una tastiera a 7 tasti touch sensor ed in uscita mi da i relativi codici su bus I2C. Il progetto è quello di interpretare (leggere) l'uscita di questo AT con un Pic 16f877a.

Ho provato vari codici inseriti in daasheet, ma senza risultato. Mi è venuto il dubbio che foss sbagliato l'ID access e quindi il componente non risponde.

Grazie in anticipo

Link al commento
Condividi su altri siti


Dovresti dare maggiori informazioni.

Ad esempio: a cosa ti serve sapere "ID access" ? (suppongo che tu intenda il Chip ID, major e minor)

Tanto non e' modificabile...

Comunque, dato per scontato che l'hardware sia funzionante, la prima cosa da verificare e' se hai l'acknowledge dopo aver inviato

START, (indirizzo dispositivo << 1) + write.

Se manca devi tornare a verificare l'hardware.

Non superare i 400 KHz di clock.

Ciao.

Link al commento
Condividi su altri siti

Buona sera e grazie per la risposta.

Sicuramente l'harware è funzionante perchè se uso il qt1070 in modalita stand alone (quindi senza i2c) funziona ameraviglia.

IL chip ID (non modificabile) mi serve in quanto senza questo "indirizzo" il qt1070 non potrà darmi l'acknowledge e quindi non potro leggere lo stato del chip.

Per quanto riguarda la frequenza sono sotto i 400 Khz.

La comodità di usare i2c con questo dispositivo sta nel fatto che con solo 2 fili ptri usare tastiere da "x" tasti senza nessun problema impegnanod appunto solo due fili pel PIC che eleborerà i segnali.

Inoltre con questo touch switch si possono costruire tastiere molto personlizzate senza alcun vincolo legato ad harware quale PCB o cablaggi. I tasti sono a sfioramento: in effetti la parte sensibili non si tocca neanche, basta avvicinarsi a 5 mm e il dispositivo commuta l'uscita relativa al tasto "premuto".

Spero di riuscire in questo intento (usare i2c) perchè il qt1070 merita veramente di essere sfruttato in questo modo.

Grazie

Link al commento
Condividi su altri siti

Correggimi se ho capito male.

Forse confondi il Chip ID (che e' un dato interno al QT1070, infatti e' allocato all'indirizzo 0x00

e mi sembra che valga 0x2e) con l'indirizzo I2C del dispositivo (tutti i componendi che si

interfacciano su questo bus hanno un indirizzo definito dal costruttore) e vale 0x1b.

Ciao.

Link al commento
Condividi su altri siti

Scusami Kappa 47

forse, anzi sicuramente, ho un po' di confusione in testa:

tu mi stai dicendo che per leggere le informazioni dal qt1070 devo inviare, tramite bus, start-indirizzo i2c(ox1b)-bit1(lettura)......

vuol dire che questo dispositivo ha un indirizzo i2c = 0x1b ed è uguale per tutti?

Se è così come posso distingure più dispositivi collegati allo stesso bus?

O forse vuol dire che l'indirizzo i2c del dispositivo si trova nella locazione 0x1b?

Sto diventando matto........... a questo punto metto in dubbio il funzionamento del mio harware........ devo verificare con un nuovo qt1070!

grazie

Ciao

Link al commento
Condividi su altri siti

L'indizizzo del dispositivo e' 0x1b

Non puoi mettere due dispositivi uguali sullo stesso bus I2C (ad esempio due qt1070).

Esistono dei componenti che si interfacciano su questo bus (memorie, DAC) che hanno la possibilita',

tramite selezione hardware (ponticelli), di stabibire il loro indirizzo o hanno un pin di chip select

per cui e' possibile selezionare uno o l'atro.

Solo in questo caso e' possibile collegarli fisicamente.

Quello che devi fare tu, come hai detto, inviare la sequenza di start e dopo l'indirizzo + write o read

1) condizione di partenza: SCL alto, SDA alto

2) SDA basso

3) attesa di qualche microsecondo

(fine sequenza di start)

4) invio del byte dell'indirizzo (ovviamente shiftato di 1 per fare "posto" al bit di write o read)

quindi 0x36 per scrivere o 0x37 per leggere

I dati che invii (SDA) devono essere stabili per tutto il tempo di SCL alto.

4) controllare se hai acknowledge (da leggere sul 9^ impulso di clock) Deve essere basso !

Ovviamente devi aver messo in input il segnale SDA prima di generare il 9^ clock.

Ciao.

Link al commento
Condividi su altri siti

Ciao Kappa47

ti ringrazio ancora per l'aiuto che mi stai dando.

Grazie ai tuoi consigli di ieri, stamattina sono riuscito a leggere il qt1070 tramite i2c.

In effetti quello che non riuscivo a capire è come era possibile inserire più qt1070 sullo stesso bus se non era possiblile cambiare l'indirizzo i2c di ciascun componente.

Mi hai appena risposto: ora è tutto chiaro!!!

Per poter avere più tasti a disposizine devo necessariamente usare un integrato con più ingressi e interfacciarlo con i2c ad un pic.

Ti ringrazio infinitamente, mi hai chiarito alcune cose che davo per scontato ed erano errate!!!!

Buon fine settimana

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...