- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 14

Thema: LM75 Auswerten und Temperatur über terminal ausgeben?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2012
    Beiträge
    15
    Hallo,

    ich weiß der Thread ist schon sehr alt.
    Habe deinen code für mein Projekt übernommen, dazu ne frage, gibt es eine Möglichkeit auch die Kommastelle anzuzeigen?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    44
    Beiträge
    230
    Hi

    Welche Komma Stele?
    Also die von dem LM75, das habe ich so gelöst:

    Code:
       if (dat2 >= 0b10000000)
       
     { 
       uart_puts ("\r\nTemperatur ");  
       uart_putc (zehner);
       uart_putc (einer);
       uart_puts (",5 ");   
       uart_putc (c); 
       uart_puts ("C \r\n");  
    
    }
    
          else
    {  
    
       uart_puts ("\r\nTemperatur "); 
      uart_putc (zehner);   
      uart_putc (einer);  
      uart_puts (",0 "); 
      uart_putc (c);
      uart_puts ("C \r\n");
    }
    viel erfolg!!!
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2012
    Beiträge
    15
    Danke sehr, habs einfach durch 32 geteilt erstmal, damit hab ich so halbwegs die kommastellen.

    Hast du eigentlich auch mal mit dem LM76 gearbeitet? Muss das Programm jetzt so umschreiben dass es auch für LM76 funzt.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2012
    Beiträge
    15
    Beim Auslesen der Temperatur des LM75 hängt sich der Prozessor auf, wenn ein Signal über USART reinkommt, versteh das nicht wirklich.

    Usart funktioniert Problemlos wenn ich die Zeile auskommentiere:

    // temperatur = TWI_empf(ADRESSE_R);
    wenn ich sie drinlasse, hängt sich der Prozessor ab und zu auf, wenn über USART etwas empfangen wird während diesen Befehls.

    Ist sehr strange, habt ihr da eine Idee?

    Programm:
    #define F_CPU 16000000UL //Takt 16MHz

    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    #include <util/twi.h>
    #include "i2c.h"

    /* Programm Libs */
    #include "defines.h"


    volatile uint8_t IRFlag;
    volatile uint8_t IR_zaehl=0;
    volatile uint8_t RxData;

    int main(void)
    {
    /* TIMER INIT */
    SETBIT(TCCR0,CS00);// Prescaler von 1024 16MHz/1024 = 15,6kHz = 64us
    SETBIT(TCCR0,CS02);
    TCNT0 = 255; // Reload Wert 0-255 250*4us*8 = 8ms = 125Hz
    SETBIT(TIMSK,TOIE0); // Timer IR Aktivieren

    // DDRD=0xFB; //D0-D1 & D3-D7 as Output
    // SETBIT(MCUCR,ISC01); //Fallende Flanke
    // SETBIT(GICR,INT0); //Taster IR Aktivieren

    sei(); //Globale IRs aktivieren

    /* Lokale Variablen: */


    /* Ports as Outputs: */
    DDRA=0xFF;
    DDRB=0xFF;
    DDRC=0xFF;


    uart_init();
    //SETBIT(PORTB,1);

    SETBIT(PORTA,3);//VCC für Temp

    TWI_init(FAKTOR, TEILER);
    unsigned char temperatur=0;
    unsigned char komma=0;
    char test=0;
    while (1)
    {

    if(IRFlag == 1 && !((UCSRA & (1<<RXC))))
    {
    IRFlag=0;
    SETBIT(PORTB,1);//LED
    // temperatur = TWI_empf(ADRESSE_R);
    komma=dat2;
    CLEARBIT(PORTB,1);//LED
    }

    //if ( (UCSRA & (1<<RXC)) ) //Zeichen Empfangen?
    else
    {
    RxData=uart_getc();
    if(RxData=='R') //Relais Einschalten
    {
    // SETBIT(PORTB,1);//LED
    SETBIT(PORTA,6);//Relais
    uart_putc('R');
    }
    if(RxData=='S') //Relais Ausschalten
    {
    // CLEARBIT(PORTB,1);//LED
    CLEARBIT(PORTA,6);//Relais
    uart_putc('S');
    }
    if(RxData=='T') //Relais Ausschalten
    {
    if(temperatur)
    uart_putc(temperatur);
    }
    if(RxData=='U') //Relais Ausschalten
    {
    if(komma)
    uart_putc(komma);
    }
    RxData=0;
    }

    _delay_ms(20);

    /*
    uart_putc('f');
    _delay_ms(1000);

    uart_putc('A');
    _delay_ms(1000);
    uart_putc(uart_getc());*/
    }

    }




    /* TIMER 0 IR HANDLER */
    ISR( TIMER0_OVF_vect ) //Wenn Timer IR kommt Led ausschalten + IR Flag auf 1
    {
    IR_zaehl++;
    if(IR_zaehl==160)
    {
    IRFlag=1;
    IR_zaehl=0;
    }
    }


    /* Taster 0 IR HANDLER */
    ISR( INT0_vect )
    {

    }
    Geändert von kremsy (02.06.2012 um 20:03 Uhr)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2012
    Beiträge
    15
    Aber es tritt auch nicht immer auf, sondern zufällig. Zurzeit tritt es gar nicht auf.

    Ich mach mich mal an den LM76.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2012
    Beiträge
    15
    ab jetzt mal einfach alle Bit-Warteschleifen gegen delay warteschleifen
    getauscht.

    char TWI_empf(unsigned char adres)
    {

    TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
    //loop_until_bit_is_set(TWCR, TWINT);
    _delay_ms(100);
    TWDR = adres;
    TWCR = (1<<TWINT)|(1<<TWEN);
    //loop_until_bit_is_set(TWCR, TWINT);
    _delay_ms(100);
    TWCR = (1<<TWINT)|(1<<TWEN);
    //loop_until_bit_is_set(TWCR, TWINT);
    _delay_ms(100);
    dat1 = TWDR ;
    TWCR = (1<<TWINT)|(1<<TWEA)|(1<<TWEN);

    TWCR = (1<<TWINT)|(1<<TWEN);
    //loop_until_bit_is_set(TWCR, TWINT);
    _delay_ms(100);
    dat2 = TWDR ;

    //loop_until_bit_is_set(TWCR, TWINT);
    _delay_ms(100);
    TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);

    return dat1;
    }

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2012
    Beiträge
    15
    Hab Pullup von 5 auf 20kOhm geändert, scheint jetz zu funktionieren .

Ähnliche Themen

  1. Antworten: 75
    Letzter Beitrag: 12.12.2010, 21:34
  2. Antworten: 44
    Letzter Beitrag: 12.12.2010, 13:55
  3. Antworten: 13
    Letzter Beitrag: 21.11.2010, 18:41
  4. Daten von RN-Control über USB-ISP auf Terminal ausgeben
    Von ensacom im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 3
    Letzter Beitrag: 24.01.2009, 20:36
  5. Beispielprogramm: Mit RN-Control und LM75 Temperatur messen
    Von Frank im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 20
    Letzter Beitrag: 11.04.2007, 15:11

Berechtigungen

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

LiFePO4 Speicher Test