Hi, ich habe ein Problem mit meinem Programm, und zwar sollte die Temperatur angezeigt werden die über I²C von einem lm75 abgefragt wird und auf einem LCD ausgegeben wird, das klappt aber nur ein Mal, und zwar beim Einschalten oder beim Reset Taste drücken ich verwende ein STK500, nun möchte ich ja die Temperatur laufend aktualisiert haben und nicht erst beim Betätigen des Reset Tasters.
Was stimmt bei mir nicht?
Im Anhang habe ich noch das komplette Projekt.Code:// // ATMega644 // lcd-routines.c, lcd-routines.h, i2c.h // #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <stdbool.h> #include "lcd-routines.h" #include "i2c.h" int main(void) //Hauptschleife { DDRA = 0xff; // Pins sind Ausgang PORTA = 0xff; // LED's Aus DDRD = 0x00; // Pins sind Eingang PORTD = 0xff; // mit aktiviertem PullUp, Taster schalten nach GND // Initialisierung des LCD // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken // verschwunden sein lcd_init(); TWI_init(FAKTOR, TEILER); lcd_string(" LCD Start !!! "); _delay_ms(500); //Gibt einem die moeglichckeit zu lesen was auf dem LCD steht lcd_clear(); lcd_home(); lcd_string(" Taste druecken"); char temperatur; //Temperaturvariable char einer; //Temperaturvariable einer char zehner; //Temperaturvariable zehner for(;;) //Programmschleife { temperatur = TWI_empf(ADRESSE_R); //Temperaturvariablen einer = ( temperatur % 10 ) + 48; zehner = ( temperatur / 10 ) + 48; if (rest >= 128) { lcd_setcursor( 0, 2); lcd_string("Temperatur "); lcd_data(zehner); lcd_data(einer); lcd_string(",5C "); } else { lcd_setcursor( 0, 2); lcd_string("Temperatur "); lcd_data(zehner); lcd_data(einer); lcd_string(",0C "); } } return(0); }
Danke !







Zitieren

Lesezeichen