Forum: Analoge Elektronik und Schaltungstechnik Tiny13 und Spannung messen


von Dieter (Gast)


Lesenswert?

Hallo,

ich möchte einfach nur ne Spannung messen,
hab einen Tiny13 mit voreingestellter Clock, d.h. also 1,2MHz,
ich messe aber immer nur 0

// Spannung messen
ADCSRA = (1<<ADEN) | 3;
     //  enable   Teiler 8->150kHz
ADMUX = (1<<REFS0) | 2;  // interne Referenz und PB4 als Wandlereingang
for (i=0; i<2; i++)
{
  ADCSRA |= (1<<ADSC);  // start conv
  while ( ADCSRA & (1<<ADIF) )
    ;
  ADCSRA |= (1<<ADIF);
  u = ADCW;
}
ADCSRA = 0;
eeprom_write_word(&eeFooWord, u);

ich messe 2x da ich beim mega8 im Kopf hab dass der erste Wert Schrott 
ist, beim Tiny13 sollte auch eine Messung genügen.
Danach steht also immer 00 00 im EEPROM

Was mache ich falsch?

von Dieter (Gast)


Lesenswert?

keiner ne Idee?

hier noch die Initialisierung:

void ioInit (void)
{
DDRB =   0b00001001;   /* 4 (Pin3) Eingang (U-Sensor),
        3 (Pin2) Ausgang (LED)
        2 (Pin7) Eingang (Netz)
        0 (Pin5) Ausgang (PWM)  */
PORTB = 0b00000000;    // 0+3 auf 0, kein Pullup an den Eingängen
}

von Dieter (Gast)


Lesenswert?

Stunden später:

so was blödes, hätte lieber
  while ( (ADCSRA & (1<<ADIF))==0 )
anstatt
  while ( ADCSRA & (1<<ADIF) )

schreiben sollen ..., bin da auf das Tutorial "reingefallen" wo ein 
169er beschrieben ist:

  while ( ADCSRA & (1<<ADSC) )
     ;     // auf Abschluss der Konvertierung warten

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.