Forum: Mikrocontroller und Digitale Elektronik Tiny13 ADC - Verzweiflung


von Michael H. (overthere)


Lesenswert?

Hallo

Es gibt ja schon Zahlreiche ADC-Beiträge für den Tiny13. Dort konnte ich 
aber meine Lösung nicht finden.

Problem ist, dass der ADC immer den gleichen in etwa Wert ausliest, egal 
welche Spannung anliegt.

Ich sehe leider den Fehler nicht, könnt ihr mir helfen?

Danke

Michael

von Michael H. (overthere)


Angehängte Dateien:

Lesenswert?

Anhang vergessen...

von hdd (Gast)


Lesenswert?

Code?

von Justus S. (jussa)


Lesenswert?

Schaltung?

von Walter (Gast)


Lesenswert?

du setzt val=0;
also isses solange 0 bis du was anderes rein schreibst ...

von Michael H. (overthere)


Lesenswert?

Nein, val wird immer um eins erhöht. Bei Geraden ist der ADC Wert auf 
der Weisen LED, bei ungeraden ist er Null. Das habe ich nur gemacht, 
damit ich weiß, dass der ADC nicht hängt, oder dort in einer 
Endlosschleife steckt.

Schaltung: An ADC1 hängt die Spannungsquelle, an OC0A die weiße, an OC0B 
die gelbe LED.

von Justus S. (jussa)


Lesenswert?

Michael H. schrieb:

> Schaltung: An ADC1 hängt die Spannungsquelle
edit: nix

von Michael H. (overthere)


Lesenswert?

Okay, unklar ausgedrückt: Es hängt die Spannungsquelle die gemessen 
werden soll.. (über einen Spannunsteiler, selbstredent!)

von Michael H. (overthere)


Lesenswert?

Jetzt funktioniert's. Vielleicht liegt es daran, dass ich nur den 8 bit 
Mode verwenden wollte.

Der neue Code:

void adc_init(){
  ADMUX=(0<<REFS0)|(1<<MUX0);
  ADCSRA=(1<<ADEN)+(1<<ADSC)+(0<<ADPS2)+(0<<ADPS1)+(0<<ADPS0);
}

uint_fast16_t adc_shoot(){
  ADCSRA|=(1<<ADSC);
  while(!(ADCSRA &&(1<<ADSC)));
  unsigned char read_first;
  read_first=ADCL;
  return (ADCH<<8)+read_first;
}

Hoffe, das hilft wenn jemand das gleiche Problem hat...

Michael

von PC69 (Gast)


Lesenswert?

Kann es sein, dass du nur 8 bit auslesen wolltest?

Wenn ich mich recht erinnere muss man auch im "8-bit modus" immer 16 bit 
lesen, ob man sie nun verwendet oder nicht.

Vielleicht wars ja sogar das hier...

Felix

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.