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?
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
}
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.