AT42QT1070 - Wer kennt sich aus?

achim S.

Mitglied
16. Jan. 2010
704
13
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Hallo
für ein Projekt möchte ich den AT42QT1070 nutzen. Dabei handelt es sich um einen Sensor IC mit I2C Anschluss. Leider finde ich im Netz das Datenblatt, sonst aber recht wenig. Wer kennt sich damit aus und könnte mir helfen?
Arbeite mir C, Atmega 1284p, 16MHz.
achim
 
Hallo achim S.

Ich habe diesen "Touch Sensor" auch auf einem Projekt verbaut. Was genau willst du denn wissen?
 
Hallo Janiiix
versuche seit Tagen die Daten auszulesen bzw wie erkenne ich ob sich was ändert. Das Datenblatt hilft zwar, komme aber nicht weiter.
z.B. Im Datenblatt wird die Adresse 0x1b genannt. Bei einer überprüfung durch das Programm bekomme ich eine Fehlermeldung. Nutze ich aber 0x36 (Nach Spess) erfolgt das erkennen des IC. Leider belomme ich immer den Wert 54 beim auslesen angezeigt. Es gibt ja in der Tabelle auch das obere und untere Byt dazu. Stehe voll auf dem Schlauch
achim
 
Konntest du denn schon erfolgreich bei deinem aktuellen Setup ein anderes I²C Device in Betrieb nehmen bzw. nen konstanten Wert zurück lesen?
Hast du die PullUp´s vorgesehen? Stimmt die Betriebsspannung? SCL und SDA richtig angeschlossen?

Im Datenblatt hast du ein Register, welches die aktuelle Firmware auf diesem Chip enthält. Das ist die Adresse "0x01", dort solltest du einen Wert bekommen der konstant ist. Mit diesem Wert kannst du arbeiten. Solange du diesen Wert nicht erhälst bringt alles andere auch nichts.

Also erstmal versuchen die Adresse "0x01" zu erreichen und den Wert "0x15" auslesen.
Steht übrigens für die Firmwareversion 1.5.
 
Hallo Janiiix
mit dem I2C Bus betreibe ich so ca 30 verschieden Module. Von Display, über Tasten, LED, Analog, LM75, HT16K33 usw. mit einem System dazu. Alle Teile sind einheitlich und passen zueinander.
Nur mit diesem IC komme ich irgenwie nicht klar. Kann dir gern meine Versuche zum Programm zeigen.
achim
 
Also wenn du dir sicher bist, dass die Hardware funktioniert, kann es eigentlich nur noch ein Software Problem sein (vorrausgesetzt der Touch Controller ist i.O).

Poste doch mal deinen Code.
 
Habe es damit bei andere Sachen gemacht, Abfrage nach IC, Antwort und Fehlermeldung


CodeBox C
void erfassung(void)
{
   ret = i2c_start(0x36);       // Start Lesen
   if (ret == 0)
   {             // Wenn OK sendet...
     msb_touch = i2c_readAck();     //...speichere oberes Bit
     lsb_touch = i2c_readNak();     //...speichere unteres Bit
   }
   else  // Fehlererkennung
   {         // Wenn kein OK sendet
     lcd_command(LCD_CLEAR);       // Leere Display
     lcd_printlc(1,13,"READ");     // "Lesevorgang"
     lcd_printlc(2,13,"NOK");     // "Nicht OK (NOK)"
   }
}

msb und lsb zusammen


CodeBox C
erfassung();  // Unterprg auslesung
     touch_wrd = (msb_touch << 8 | lsb_touch);  // Zusammensetzung von o. & u. Byte
     touch = msb_touch;  // Umwandlung in ein Signed Char

Beide Werte zusammen und Anzeige mit itoa
Hoffe das die Teile vom Programm korrekt dargestellt werden, wenn nicht wie mache ich das?
achim
 
erfassung(); // Unterprg auslesung touch_wrd = (msb_touch << 8 | lsb_touch); // Zusammensetzung von o. & u. Byte touch = msb_touch; // Umwandlung in ein Signed Char

Ich nehme mal an das touch bei dir ein signed char ist oder ?
Das signed char ist erstens für Zeichen gedacht und zweitens keine 16 Bit breit.
Du hast ja bereits das MSB und LSB korrekt zusammen gefügt.
Leider passt es nicht in ein signed char rein. Signed Char kann Werte von -127 bis +127 aufnehmen. Ein unsigned char kann Werte von 0 bis +255 aufnehmen.

Du musst es also in ein int16_t packen.
 
Laut Seite 16 des Datenblattes ist die Adresse 0x36 (56dec) das Register vom LP (LowPowerMode). Ist das gewollt?
Wenn ja, ist es auch 8 Bit groß und nicht 16.
 
Beim PCF 8591 nutze das so:


CodeBox C
i2c_start(PCF8591r);     // 1 + 2
i2c_write(0x04);  // Analog out enable, auto increment, channel 0 0x44
i2c_stop();
i2c_start(PCF8591r);
i2c_readAck();             // first data is old
for (i=0; i<4; i++)
{
   results[i]=i2c_readAck();
}
i2c_readNak();
i2c_stop();
 
Beim PCF 8591 nutze das so:


CodeBox C
i2c_start(PCF8591r);     // 1 + 2
i2c_write(0x04);  // Analog out enable, auto increment, channel 0 0x44
i2c_stop();
i2c_start(PCF8591r);
i2c_readAck();             // first data is old
for (i=0; i<4; i++)
{
   results[I]=i2c_readAck();
}
i2c_readNak();
i2c_stop();
[/I]

Das sieht ja auch korrekt aus.

P.S

Man kann die Datentypen nicht sehen wo drinn du die Sachen ablegst, wäre gut wenn du es dazu schreiben würdest.
 
Hallo Janiix
habe an der Sache weiter gemacht. Nach deinen Hinweisen habe ich jetzt folgendes:


CodeBox C
i2c_start( 0x36 );  // 1+2  Addressiere Device
i2c_write( 0x03 );  // 4  Setze lesezugriff Register Index
i2c_start( 0x36 | 0x01 );  // Starte Lesezugriff mit READ bit gesetzt
d=i2c_readNak();     
i2c_stop();

als Firmware konnte ich die 21 auslesen
Mit diesem Code bekomme ich für d das folgende angezeigt:

Key 0 = 1
Key 1 = 2
Key 2 = 4
Key 3 = 8
Key 4 = 16
Key 5 = 32
Key 6 = 64

Ist das so korrekt?
achim
 
Du hast meine Hinweise anscheinend nicht genau durch gelesen. 0x36 ist die Adresse vom LP Register. Dort kannst du höchsten seinen aktuellen Status lesen und ihn in so eine Art Schlaf Modus versetzen damit er weniger Energie verbraucht.

Deine Taster oder auch Touch Ergebnisse kannst du an anderen Adressen bzw. Bei anderen Registern abholen. Leider habe ich gerade kein Datenblatt.
 
Mit der Adresse 54 stelle ich den Low Power Modus ein bzw. frage ab (nach Datenblatt). Mit der Adresse 3 lese ich den Key Status aus (nur lesen). Die Angabe welcher Key berührt wurde reicht mit völlig aus. Damit kann ich den Key auslesen und etwas damit schalten.
Bin richtig erstaunt, wie empfindlich die Keys sind. Es ist immer nur ein Key schaltbar. Ist ein Key geschaltet, blokieren die anderen Keys.
achim
 
Hat es jetzt geklappt?
 
Es hat super geklappt. Kann die Tasten auslesen und zuordnen. Bekomme einen zusätzlichen Wert wenn eine Taste gedrückt wurde und kann sogar die Empfindlichkeit jeder Taste auslesen und Anzeigen. Damit kann ich testen ob meine Abdeckung/Isolierung funktioniert. Meine Hardware funktionoert super einfach und ohne Probleme. Auch die Einbindung in den Bus und die Anzeige geht super.
Hat jemand Interesse daran? Bin gerade dabei das Programm aufzuräumen, Fotos machen usw.
achim.
 
Wo war letztendlich das Problem?
 
So wie es jetzt aussieht, lag es am Auslesen der Register vom QT1070. Scheine da etwas total falsch gemacht oder falsch verstanden haben zu haben.

P3273083_(800_x_600).jpg
Das QTouch Modul mit dem AT42QT1070

Werde es jetz öfters nehmen. Gehen keine Taster kaputt.
Danke für deine Hilfe

achim
 
Hallo achim S.

Sieht gut aus. Was hast du damit denn schönes vor?
 
Hallo Janiiix
Deine Frage ist nicht so leicht zu beantworten. Eigentlich reizt mich an der Sache der Bus. Alle sprechen darüber, einige machen was, Infos sind bedingt zu bekommen. Gerade das unbekannte finde ich gut. Die Verbindung von bekannten Schaltungen und ICs mit kaum vorstellbaren Anwemdungen. Alle wollen was neues machen, neue LAN oder WLAN Verbindungen, mit immer grössseren Prozessoren, immer grössere Displays und noch mehr Top Sachen dazu.
Es geht auch einfacher und leichter. Mit so einem alten 8 Bit Rechner kann ich unwahrscheinlich viel machen. Man muss sich nur die Arbeit machen, etwas drüber nachzudenken.
Der nächste Grund ist, jeder Hersteller baut was für sich, andere Steckverbinder, andere Orte, andere Grössen, nichts passt zusammen und ab in den Markt. Hardware ist eins, die Anwendung ist ganz was anderes. Eine gute Erklärung ist Gold wert, ein gutes Tut dazu bereitet Freude und eine Anwendung als Beispiel eines Programmes ist der Himmel auf Erden.
Wie will ich einen anderen (jungen) Menschen begeistern mit etwas Hühnerfutter. Die Hardware ist ein totes Stück Technik, erst die Software belebt das Stück Technik. Wie kann ich Wissen und Freude vermitteln mit einen Stück Platine (tote).
Eigentlich ist meine ganze Sache daraus geboren, möchte Wissen und Freude vermitteln und suche das neue oder auch alte daran. Nimm allein den PCF8591 und suche bei google da nach. Du wirst geschätze 1000 Einträge finden. 70% suchen Hilfe und Erkärung, 25% wollen verkaufen (den nackten IC), vielleicht 3% fragen konkrett und 1-2% geben Antworten oder versuchen es. Die Leute, die es wissen sagen nichts. Das kann es nicht sein.
Nimm mein System (google Suche: modulares Board), habe ca 30-50 verschiedene Platinen dazu gebaut, ein Teil ist das Programm fertig, anderes wartet noch.
Es gibt die unterschiedlichsten Anwendungen dazu. Eines ist wichtig, alles ist mit einander kombinierbar durch gleiche Lage der Anschlüsse und Belegung der Stecker. Jeder kann sich das system aufbauen was er benötigt oder machen will. Vom Anfänger bis Fortgeschrittenen ist alles dabei. Es sind teilweise recht anspruchsvolle Teile dabei. Beispiel. Ansteuern von über 1000 LED jede einzeln ansteuerbar, in Gruppen oder Matrix, mit Laufschrifft, oben, unten, links, rechts steuerbar. Bei der Menge gehen die meisten NT in die Knie. 1000 LED, je 20mA bei 5V, könnten so um die 20A sein. Oder das nächste: 4 x 0-20mA Eingang, oder 10,00V (Eichen) und 0-10V und 0-20mA Ausgabe über ein Modul im I2C Bus messen und Anzeigen und weiterverarbeiten und einstellen über Tasten (entprellt), oder eine Joysticksteuerung über den Bus, oder eine Funkverbindung über den Bus, Motorsteuerung, Alarmanlage usw.
Das alles im Multitasking Betrieb ohne ein grosses System dazu. Ganz einfach und jederzeit erweiterbar und sogar für den normal sterblichen versteh bar.
Such dir einen Grund aus. Das wichtigste zum Schluss. Ich habe Freude daran und lässt meine grauen Zellen nicht einrosten.
Habe auf boxtec.ch ca 20-30 Tuts drin, habe ca 5 Artikel im ELV veröffentlicht und viele Sachen im Netz, bereite vieles vor.
Gern bin ich bereit alles kostenlos ins Netz zu stellen, komplette Unterlagen, Programme, Platinenzeichnungen usw.
Diskussion?
achim
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)