AVR Hardware TWI/DS1621

Hallo,

nachdem ich jetzt schon einige Versuche hinter mir habe und mir google auch nichts vernünftiges sagt, versuch ich's hier:

Ich versuche einen mit dem Hardware TWI des Atmega16 den Temperatursensor (DS1621) anzusprechen, allerdings bekomme ich nach dem Senden der Adresse kein ACK.

Jetzt frage ich mich, ob es vielleicht ein Fehler am Hardwareaufbau sein könnte. Ich betreibe den DS1621 zu Testzwecken auf einem Breadboard, direkt ohne externe Pullups ans STK500 angeschlossen.

Frage: brauche ich doch externe Pullups, oder regelt das TWI das über die internen Pullups der Ports (PC0/PC1)?

Der Schaltungsaufbau sieht momentan so aus:

STK/AVR DS1621 ======= =======

PC0 ------ SCL Vdd -----+ PC1 ------ SDA A0 -+ | +- Tout A1 -+ | GND ----+- GND A2 -+ | +------------+ | | VTG ---------------------+

Der ATMega taktet mit 1Mhz. Wenn ich am STK messe, messe ich am VTG-Pin ca.

4,3 V gegnüber GND. Laut Datenblatt sollte das für den DS1621 reichen. Die Adressbits habe ich auf Masse gelegt - insgesamt ist die Adresse also "1001000".

Der TestCode sieht folgendermaßen aus (fast 1:1 aus dem Datenblatt des Atmega16 übernommen):

---- snip

I2CTEST:

push TEMP1

ldi TEMP1, (1

Reply to
Andreas Baier
Loading thread data ...

Andreas Baier schrieb:

^^^^^^^^^^^^^^^^^^^^ Das wird es wohl sein. Im Datenblatt sind die externen Pullups extra aufgeführt. Du wirst die brauchen da die TWI-Hardware die internen Pull-Ups AFAIK ausschält.

--
Matthias Weißer
matthias@matwei.de
http://www.matwei.de
Reply to
Matthias Weißer

Beim ATmega8 (ich gehe mal davon aus dass das TWI-IF des ATmega16 identisch ist) kann man die internen Pullups wahlweise zuschalten ueber die entsprechenden DDRx und PORTx Pins. Aber die sind so hochohmig, dass die I2C-Busfrequenz sehr niedrig sein muss und ob die Anforderungen an die Flankensteilheit dann noch eingehalten werden weiss ich nicht. Nimm mal 10K, das ist bis zu einer Busfrequenz von 100K passend.

cu,

Steffen

Reply to
Steffen Koepf

"Matthias Weißer" schrieb im Newsbeitrag news:4315e205$0$2105$ snipped-for-privacy@newsread2.arcor-online.net...

Falls es danach noch immer nicht funktioniert, solltest du mal testweise einen kleinen Elko (~ 10uF) direkt neben den Pins der Versorgungsspannung des DS1621 reinstecken. Ich hatte vor längerer Zeit auch mal Probleme mit einem Testaufbau. Der Temperatursensor lieferte einfach keine brauchbaren Werte. Nach Einbau des Elkos arbeitete er problemlos.

Gruß Werner

Reply to
Werner Schwent

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.