Forum: Mikrocontroller und Digitale Elektronik Problem bei externer Referenzspannung


von BerndB (Gast)


Lesenswert?

Hallo,

wenn ich meinen ATtiny44 mit interner Referenz betreibe funktioniert
meine ADC-Wandlung fast ohne Probleme, bis auf die Toleranzen
natürlich.
Jetzt versuche ich vergeblich mit einer konstanten Spannung von 1,162V
an AREF das Ergebnis zu verbessern aber ADC-HIGH und ADC-LOW haben 
hierbei jeweils 0xFF.

Prescaler /128 (wie bei interner Ref.):

LDI temp, (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
OUT ADCSRA, temp

Externe Referenz und Kanal 1 sind gesetzt:

ORI temp, (0<<REFS1)|(1<<REFS0)|(0<<MUX5)|(0<<MUX4)|(0<<MUX3)|(0<<MUX2)| 
(1<<MUX1)|(0<<MUX0)
OUT ADMUX, temp

Schaltung:

Konstantspannung an AREF und 100nF gegen Masse.

Was mache ich nur falsch?

Gruß
Bernd

von spess53 (Gast)


Lesenswert?

Hi

>ORI temp, (0<<REFS1)|(1<<REFS0)|(0<<MUX5)|(0<<MUX4)|(0<<MUX3)|(0<<MUX2)|
>(1<<MUX1)|(0<<MUX0)
>OUT ADMUX, temp

Was soll das 'ori'? Nimm 'ldi'.

MfG Spess

von BerndB (Gast)


Lesenswert?

Oh ja, danke aber es geht leider immer noch nicht.

von spess53 (Gast)


Lesenswert?

Hi

Was mich noch stutzig mach:

>Jetzt versuche ich vergeblich mit einer konstanten Spannung von 1,162V
>an AREF das Ergebnis zu verbessern aber ADC-HIGH und ADC-LOW haben
>hierbei jeweils 0xFF.

Geht eigentlich nicht.  Wie stellst du das fest? Der höchste mögliche 
Wert in ADCH/ADCL ist $3FF.

MfG Spess

von BerndB (Gast)


Lesenswert?

Hallo Spess,

du wirst Recht haben aber hierbei bekomme ich immer
einen Wert der größer ist als OUTPUT_700mA.
Komisch ist doch das es bei interner Ref. einwandfrei funktioniert.

START_UP:

  RCALL SET_CHANNEL_ADC1

  LDI temp5, LOW(OUTPUT_700mA)
  LDI temp6, HIGH(OUTPUT_700mA)

START_UP_LOOP:

  RCALL GET_VOLTAGE

  CP ADC_VAL_LOW, temp5
  CPC ADC_VAL_HIGH, temp6
  BRSH START_UP_FUNCTION_END
  IN temp, OCR0B
  INC temp
  MOV OCR0B_VALUE, temp
  OUT OCR0B, OCR0B_VALUE
  RJMP START_UP_LOOP

START_UP_FUNCTION_END:

//  INC CtrlStatus

  RET

von BerndB (Gast)


Lesenswert?

ADCH/ADCL ist $3FF

STIMMT !!!

von spess53 (Gast)


Lesenswert?

Hi

>ADCH/ADCL ist $3FF

>STIMMT !!!

Und das bedeutet, das deine Eingangsspannung >= VREF ist. Mess mal deine 
Spannungen direkt an den Controllerpins.

MfG Spess

von BerndB (Gast)


Lesenswert?

Hallo Spess,

präzise 1,162Volt.
Kann es der Kerko sein?


Gruß
Bernd

von spess53 (Gast)


Lesenswert?

Hi

>Kann es der Kerko sein?

Kann man zwar nicht 100%ig ausschließen, aber eher unwahrscheinlich. Wie 
hoch ist die Eingangsspannung?

MfG Spess

von BerndB (Gast)


Lesenswert?

Hi,

die an ADC1 zu messende Spannung = 0V

Habe vor den µC zu wechseln, macht das Sinn?

Bernd

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Mal kurz mit einem ATTiny84 getestet. Anhang funktioniert.

MfG Spess

von BerndB (Gast)


Lesenswert?

Danke Spess,

habe µC gewechselt und nix geht mehr!

Wrrde noch einmal wechseln (löten SOIC14) und dich informieren!

DANKE

von BerndB (Gast)


Lesenswert?

Hallo Spess,

habe µC gewechselt und mit int. Ref. funktioniert es.
Bei extern. Ref. immer noch nicht.
Habe dann dein  ;************* AD_CONVERTER *****************
zur Initialisierung genommen, auch ohne Erfolg.

Gruss

von BerndB (Gast)


Lesenswert?

Hallo Spess,

>ldi r16,1<<ADEN|1<<ADIE|1<<ADATE|1<<ADPS2|1<<ADPS1|1<<ADPS0 
>;ADEN,ADSC,ADATE,ADIF,ADIE,ADPS2,ADPS1,ADPS0

wenn ich 0<<ADATE statt 1<<ADATE initialisiere dann funktioniert es.

Vielen Dank!

Bernd

von spess53 (Gast)


Lesenswert?

Hi

>wenn ich 0<<ADATE statt 1<<ADATE initialisiere dann funktioniert es.

Das war eigentlich nur für mich zum Testen (Autotrigger).

Diese 0<<xyz solltest du vermeiden. Das vewirrt nur und hat keine 
Wirkung.

MfG Spess

von BerndB (Gast)


Lesenswert?

Hallo Spess,

vielen Dank für deine Hilfe!

Bernd

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.