Problem bei externer Referenzspannung

Gast #2363856
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
Gast #2363883
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
Gast #2363890
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
Gast #2364083
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
Gast #2364912
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
Gast #2364925
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren