- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Temperatur anzeige auf dem LCD wird nicht aktualisiert?

  1. #11
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    Anzeige

    Powerstation Test
    versuch doch mal rauszufinden, an welcher stelle das Programm hängen bleibt.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  2. #12
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Wie schon gesagt das kannst du testen indem du an verschiedene Stellen einfach eine LED einschaltest (du kannst auch nur eine LED einschalten und die Stelle wo sie eingeschaltet wird immer wechseln). Dadurch siehst du recht gut was wann passiert und wie sich dein Programm verhält. Alternativ kannst du das auch mittels Ausgabe über UART und einem Terminalprogramm am PC machen (oder z.B. dein LCD )
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #13
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    43
    Beiträge
    230
    OK

    Ich hab mal 2 LED's mit eingebunden, also beim Start sind beide LED's aus. Wen ich Taste 0 drücke Dan geht LED 1 an, wen ich Taste 1 drücke Dan geht LED 0 an.
    Allerdings weis ich nicht ob die LED's beim STK500 nach GND schalten.
    Hier hab ich mal den Code.


    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();
    
        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"); 
    
            
    TWI_init(FAKTOR, TEILER);
    
    char temperatur; //Temperaturvariable
    char einer; //Temperaturvariable einer
    char zehner; //Temperaturvariable zehner
    char Buffer[100];  //itoa Array 3 stelig
    int i = 25; //Laufzeitvariable
                            
        while(1) //Programmschleife
        {
    
            
            temperatur = TWI_empf(ADRESSE_R); //Temperaturvariablen
            einer = ( temperatur % 10 ) + 48;
            zehner = ( temperatur / 10 ) + 48;
    
                if(!(PIND & (1<<PD0))) // Taste 0 an PORTD PD0
                {
                _delay_ms(10);
                
                PORTA = (1<<PD0); //LED0
                i++;
                lcd_setcursor( 0, 1);
                lcd_string("Aetzlaufzeit ");
                itoa( i, Buffer, 10 );    //Laufzeitvariable in Integer wandeln
                lcd_string( Buffer );
             
                    while(!(PIND & (1<<PD0))); //Warte solange Taste noch getrückt ist.
                    _delay_ms(10);
                    
                }
    
                if(!(PIND & (1<<PD1))) // Taste 1 an PORTD PD1
                {
                _delay_ms(10);
                
                PORTA = (1<<PD1); //LED 1
                i--;
                lcd_setcursor( 0, 1);
                lcd_string("Aetzlaufzeit ");
                itoa( i, Buffer, 10 );    //Laufzeitvariable in Integer wandeln
                lcd_string( Buffer );
    
                    while(!(PIND & (1<<PD1))); //Warte solange Taste noch getrückt ist.
                    _delay_ms(10);
                       
                }
    
                if (dat2 >= 0b10000000)
                {
                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
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  4. #14
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    Warte... wenn du 0 drückst geht 1 an und umgekehrt? Das ist ja fast nicht möglich o0
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #15
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    43
    Beiträge
    230
    Ja die LED's leuchten wen pin nach gnd schaltet.
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  6. #16
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Was Damaltor sagen will ist, dass es nicht sein kann das der Controller beim drücken der Taste 0 in die zweite If-Abfrage springt um dort die LED1 anzuschalten
    Sicher das du die Taster richtig angeschlossen hast?
    Wenn du möchtest, dass das LCD regelmässig aktualisiert wird kannst du doch auch mit einem Timer arbeiten und mit dem das LCD 1x pro Sekunde aktualisieren-
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #17
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    Ich glaube mitterweile auch dass da etwas falsch angeschlossen ist, bzw. du die Anschlüsse auf dem STK500 falsch interpretierst. Kann es sein, dass die Taster nicht gegen Masse, sondern gegen 5V schalten? Bin mir nicht mehr sicher. Das könnte aber der Grund sein, dass das Programm nur dann weiterläuft wen ein Taster auf 5V gelegt wird.

    Edit: Ich habe gerade noch mal in den Schaltplan vom STK500 geschaut. Die Taster schalten auf Masse und haben bereits einen PullUp-Widerstand von 10k auf dem Board aufgelötet.

    Die LEDs zeigen "in Richtung des Prozessors" und leuchten, wenn eine Null am entsprechenden Pin ausgegeben wird.
    Geändert von damaltor (16.01.2012 um 14:00 Uhr)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. LM75 aktualisiert nicht (gelöst)
    Von marc2100 im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 02.09.2009, 15:04
  2. Temperatur und Luftfeuchte Anzeige mit AVR
    Von TheDarkRose im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 12
    Letzter Beitrag: 01.02.2009, 21:20
  3. Temperatur/Zeit Anzeige
    Von Edbeck im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 29.06.2007, 06:51
  4. ntc temperatur-anzeige
    Von fabix im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 06.05.2007, 12:35
  5. Problem mit DS1820 und Anzeige der temperatur
    Von martin66119 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 09.01.2007, 06:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad