ik wordt gek!
wat ik hier heb liggen is een atmega32 en een TC74 temperatuursensor. de sensor is aangesloten op de microcontroller. ik wil graag de temperatuur kunnen uitlezen via i2c alleen ik ben nogal een noob op dit gebied. via de datasheet van de atmega heb ik geprobeerd de goede bits hoog te zetten maar het werkt niet. hier eerst even mijn source.
void i2c (void)
{
int data;
char datas[7];
TWCR = (1<<TWINT | 1<<TWSTA | 1<<TWEN); //start conditie
while (!(TWCR & (1<<TWINT))) //wachten
;
TWAR = 0x9A; //adres in TWAR register
TWCR = (1<<TWINT) | (1<<TWEN); //clear TWINT voor transmissie
while(!(TWCR & (1<<TWINT))) //wachten
;
data = TWDR; //data ophalen uit TWDR register
TWCR = (1<<TWINT) | (1<<TWEN); //clear TWINT voor starten transmissie
while(!(TWCR & (1<<TWINT))) //wachten
;
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO); //stop conditie
itoa(data, datas, 9);
SendtoTerminal(datas);
}
dit werkt helaas niet. het adres wat ik stuur heb ik uit de datasheet van de TC74 en voor zover ik die begrijp wacht ie op een startbit, daarna wacht ie op het adres, en dan stuurt ie de data. ik weet niet meer wat ik fout doe. iemand suggesties, tips, voorbeeldcode?
alvast bedankt,
jaap
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Heb de de TWI-klok (TWBR) ingesteld op iets bruikbaars?
Je code lijkt me verder OK. Hier staat wat TWI-code (die ik ook maar ergens gejat heb) om een blokje I2C-EEPROM aan te spreken. Dat werkt in ieder geval naar behoren. Wellicht kan je daar wat fout-dedectie regels uithalen.
FullPower
De grootste moeilijkheden liggen daar waar we ze niet zoeken. [Goethe]
Op 18 november 2008 16:47:37 schreef pros:
Hier staat wat TWI-code (die ik ook maar ergens gejat heb) om een blokje I2C-EEPROM aan te spreken. Dat werkt in ieder geval naar behoren. Wellicht kan je daar wat fout-dedectie regels uithalen.
Bah! Wat een smerige code!
De loop-variabele in een FOR-lus aanpassen.... brrrr.... Ik wil zoiets niet in mijn applicaties zien!
(Dit hoef ik niet door een MISRA code-analyser te halen
)
FullPower