Gast
#116734
Mein Programm läuft nicht mehr wenn ich ds1621_init() aufrufe.Ohne den Aufruf läuft das Programm. Ich benutze zum programmieren CodeVisionAVR und einen ATMega8-16P. Ist ein Fehler in der ds1621.lib? Bin noch Anfänger und finde den Fehler nicht. Danke an alle im Voraus. Hier folgt die ds1621.lib /* Dallas Semiconductor DS1621 I2C bus thermometer/thermostat functions CodeVisionAVR C Compiler (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L. */ union ds1621_temp { unsigned char b[2]; int w; }; unsigned char ds1621_get_status(unsigned char chip) { unsigned char i2c_address,status; i2c_address=0x90|(chip<<1); i2c_start(); i2c_write(i2c_address); i2c_write(0xac); i2c_start(); i2c_write(++i2c_address); status=i2c_read(0); i2c_stop(); return status; } void ds1621_set_status(unsigned char chip,unsigned char status) { i2c_start(); i2c_write(0x90|(chip<<1)); i2c_write(0xac); i2c_write(status); i2c_stop(); } void ds1621_set_temp(unsigned char chip,unsigned char cmd,char data) { i2c_start(); i2c_write(0x90|(chip<<1)); i2c_write(cmd); i2c_write(data); i2c_write(0); i2c_stop(); while (ds1621_get_status(chip) & 0x10); } void ds1621_start(unsigned char chip) { i2c_start(); i2c_write(0x90|(chip<<1)); i2c_write(0xee); i2c_stop(); } #if funcused ds1621_stop void ds1621_stop(unsigned char chip) { i2c_start(); i2c_write(0x90|(chip<<1));