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