Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage qt1070


von André M. (killroymenzel)


Lesenswert?

Hallo......

Ich habe demnächst vor in meinem nächsten Projekt den AT42QT1070
im Commsmode zu verwenden.

Bei den Register hatte ich dann ein paar Fragezeichen über dem Kopf 
schweben.

Adresse 3 - KeyStatus ist klar, und diesen werde ich wahrscheinlich auch 
nur verwenden (abgesehen von der initialisierung)

Aber was genau soll "KeySignal" und "ReferenceData" sein?
Und warum haben die pro Key 16bit?

Über I2C mach ich mir weniger Gedanken, da ich den Bus schon bei anderen 
Bauteilen erfolgreich verwende.

Obwohl ich im Forum schon gelesen habe daß die 400kHz, wie im Datenblatt 
beschrieben, nicht so richtig funktionieren.

btw.: Ich programmiere in Assembler und wäre froh wenn ich für den 
qt1070 Beispiele finden würde..... (die Kristallgoogle wirft nichts 
brauchbares raus)




Danke im Vorraus.


Andre

von André M. (killroymenzel)


Lesenswert?

Hat denn niemand bis jetzt damit gearbeitet/entwickelt ?

von Achim S. (achims)


Lesenswert?

Hallo Andre
hast du was passendes gefunden zum AT42QT1070?
Leider ist im Nez nicht viel zu finden.
achim

von Killroymenzel (Gast)


Lesenswert?

Ich han jetzt erst mal welche bestellt....

Dann heisst es eben...learning by doing......

Naja.... jetzt über Ostern plane ich erst mal die Platine...

von Achim S. (achims)


Lesenswert?

Platine ist fertig und bestückt
Das mit leaning by doing klappt nicht so richtig. Finde kein Punkt um zu 
beginnen
achim

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Hallo,
schau dir mal Kapitel 4.2 aus diesem Dokument an, vielleicht wird es 
dann klarer:
www.atmel.com/images/qtan0062.pdf

Es ist die Application Note QTAN0062 von Atmel zum Thema Q-Touch:
"QTouch and QMatrix Sensitivity Tuning for Keys, Slider and Wheels"

Gruß,
Alex

von Radler (Gast)


Lesenswert?

also ist schon was her wo ich damit rumgespielt habe.

In Adresse 3 kann man nur 1 oder 0, also ob das Pad berührt wird oder 
nicht, auslesen.
In dem Register Keysignal kann man noch die aktuelle "Kapazität" 
ablesen. Sprich man kann entweder den Fingerprint über Register 3 
auslesen oder man ließt das Keysignal aus und setzt selber Schwellen in 
dem Mikrokontroller-Programm.

In dem Register "Referencedate" wurde soweit ich weiß die gemessene 
Kapazität, die nach dem Reset/Start vorhanden war, abgelegt. Damit hat 
der QT ein Vergleichswert zum aktuellen Ergebnis und kann entscheiden 
wann die Schwelle von einer 0 zur 1 überschritten wird.

von Achim S. (achims)


Lesenswert?

Hallo Alex
habe mir das genannte Teil angesehen. Dabei geht es ja um das Prinzip, 
wie so ein Sensor funktioniert. Auf meinem Brett hatte ich aufgebaut und 
probiert. Selbsz bei diesen fliegenden Aufbau ging es ohne Probleme (mal 
mehr, mal weniger).
Mich interessiert aber besonders der AT42QT1070 mit I2C Bus. Der eignet 
sich besonders zum Einsatz in mein System. Habe mir auch Teile des 
Datenblatts durchgelesn und übersetzt und bin jetz am probiern wie es 
geht. Leider ohne jeden Erfolg bisher. Suche deshalb nach Info dazu
achim

von Radler (Gast)


Lesenswert?

was geht denn nicht? die busverbindung? der zugriff auf die register?

von Achim S. (achims)


Lesenswert?

Würde sagen fast alles geht nicht.
Was für Register habe ich und welche Werte kann ich damit setzen?
kann ich die Empfindlichkeit durch andere Angaben im register verändern?
Wie lese ich sie aus?
Habe versucht wie bei den anderen über I2C start usw. es zu machen, 
klappt nicht.
In welchen Registern lese ich aus?
Da ich 7 Pads habe, habe ich 7 Werte auszulesen.
Kann ich diese so weiter verarbeiten wie bei den PCF .. ?
Sorry für die vielen Fragen. Lieber eine frage mehr als zu wenig
achim

von Achim S. (achims)


Lesenswert?

Habe es bei dem PCF 8591 so gemacht:
1
i2c_start(PCF8591w);
2
      i2c_write(0x44);   // Analog out enable, auto increment, channel 0 0x44
3
      i2c_stop();
4
      i2c_start(PCF8591r);
5
      i2c_readAck();            // first data is old
6
      for (i=0; i<4; i++)
7
        {
8
        results[i]=i2c_readAck();
9
        }

- Starte damit den Bus
- übertrage die Schreib Adresse
- Sop den Bus
- Starte den Bus
- Sende lesen
- lese die 4 Register aus und schreibe sie in results [..]
(Adresse muss geändert werden)
Damit kann ich die Werte weiter verarbeiten
achim

von Achim S. (achims)


Lesenswert?

Muss noch mal fragen.
Nach den Datenblatt vom AT42QT1070, Seite 15 Tabelle 5-1, in den Adresse 
4 bis 17, sind die  Werte von Key Signal 0 bis 6 drin. Jeder Wert 
besteht aus einem oberen und einem unteren Byte (msb/lsb)
1
msb_touch = i2c_readAck();    //...speichere oberes Bit
2
lsb_touch = i2c_readNak();    //...speichere unteres Bit
Beide Daten zusammen
1
touch_wrd = (msb_touch << 8 | lsb_touch);  // Zusammensetzung von o. & u. Byte
2
touch = msb_touch;                  // Umwandlung in ein Signed Char
Ist das so richtig?
achim

von Achim S. (achims)


Lesenswert?

Eine Kontrolle ob der IC QT da ist:
1
void touchfassung()
2
{
3
  ret = i2c_start(0x36);          // Start Lesen 
4
  if (ret == 0)
5
  {                         // Wenn QT ein OK sendet...
6
    msb_touch = i2c_readAck();    //...speichere oberes Bit
7
    lsb_touch = i2c_readNak();    //...speichere unteres Bit
8
  }
9
  else                                // Fehlererkennung
10
  {                              // Wenn QT kein OK sendet
11
    lcd_command(LCD_CLEAR);      // Leere Display
12
    lcd_printlc(1,13,"READ");    // "Lesevorgang"
13
    lcd_printlc(2,13,"NOK");    // "Nicht OK (NOK)"
14
  }
15
}
Im Datenblatt des QT wird die Adresse 0x1B angegeben. Von Spess stammt 
der Hinweis, das das falsch ist. Verwende ich 0x36, bekomme ich keine 
Fehlermeldung.
Wie kann ich die Adressen auslesen?
achim

von Achim S. (achims)


Lesenswert?

Hat keiner eine Idee dazu?

von Achim S. (achims)


Lesenswert?

Habe es gelöst. Steht in einem anderen Teil
achim

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.