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?
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);
}
Im Anhang habe ich noch das komplette Projekt.
Danke !
Lesezeichen