Hi,

nach stunden des Probierens und suchen hier meine Fragen....
Ich möchte am Analog eingang einen Strom messen, und diesen Wert ins eeporm speichern damit ich ihn nach dem einschalten wieder habe, das Ganze wird an einer 12V 3Ah Batterie angeschloßen.

Zum Testen hab ich Versucht and den PC0 einen Widerstand hängen und den auf die 5V vom µC gehängt, aber nach einen Spannungswert hat es mir nicht ausgesehen.. (hab es um den Wert zu sehen in den eeprom gepseichert)

1) wie könnte ich den adc wert sonst ausgeben ohne lcd display bzw. eeprom ?

2) Soweit ich das richtig nachgelesen habe bekomme ich vom analog eingang aber nur einen Spannungs wert und damit ich ich auf meinen Strom komme müsste das dann so aussehen
u = ADC*5.0;
i = u/r;

3) Daher das eeprom auf ca. 100.000 cyclen brenzt ist, wird es nicht sinnvoll sein den Wert immer zu beschreiben.
Meine Idee wäre so eine art dauerplus damit der µC immer unter spannung (Ruhemodus oder so) ist und der Wert im RAM somit erhalten bleibt aber geht das ohne das die Baterie gleich leer ist ?

Code:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>

uint16_t eeLastValueAddr EEMEM = 1;
uint16_t lastValue = 0;

int main()
{
    // Set PORTD as Output
	DDRD = (1<<PD7)| (1<<PD6)|(1<<PD5) | (1<<PD4) | (1<<PD3) | (1<<PD2)| (1<<PD1)| (1<<PD0);

	// Set PortB (PB0,PB1) as Input
    PORTB |= (1<<PB0);
	PORTB |= (1<<PB1);

    // Set Reference to AVCC and input to ADC0
    ADMUX = (1<<REFS0);

    // Enable ADC, set prescaler to 16
    // Fadc=Fcpu/prescaler=1000000/16=62.5kHz
    // Fadc should be between 50kHz and 200kHz
    ADCSRA = (1<<ADFR)|(1<<ADEN)|(1<<ADPS2);

    // Start the first conversion
    ADCSRA |= (1<<ADSC);

    while (1)
	{
        if (!(PINB & (1<<PB0)) && !(PINB & (1<<PB0)))
        {
            //Ruecksetzung des Wertes
			lastValue = 0;
            eeprom_write_word (&eeLastValueAddr, lastValue);
        }
        if ((PINB & (1<<PB0)))
        {
		    //Analog Wert lesen und in eeprom schreiben
			lastValue = ADC;
            eeprom_write_word(&eeLastValueAddr, lastValue);
			Set_LED();
        }

        //Wartezeit fuer Taster abfrage
        _delay_ms(100);
    }
}

void Set_LED()
{
	switch (lastValue)
	{
		case > 700:
			PORTD = 0b00000000;
			break;

		case > 600:
			PORTD = 0b10000000;
			break;

		case > 500:
			PORTD = 0b11000000;
			break;

		case > 400:
			PORTD = 0b11100000;
			break;

		case > 300:
			PORTD = 0b11110000;
			break;

		case > 200:
			PORTD = 0b11111000;
			break;

		case > 100:
			PORTD = 0b11111100;
			break;

		case >50:
			PORTD = 0b11111110;
			break;
			
		case 0:
			PORTD = 0b11111111;
			break;
	}
}