AREF ist ein Ausgang?

Gast #1534502
Lesenswert?

Hallo!

Ich habe eine Frage zum Tutorial (Atmega8):

Ich verstehe das so, dass AREF ein Ausgang ist an der eine 
(softwareseitig veränderliche) Spannung anliegt. Und an AVcc wird die 
Spannungsquelle angeschlossen.
Habe ich das richtig verstanden?

Wenn ja: Dann kann ich dann die folgende Schaltung bauen oder spricht da 
etwas gegen?

AREF----Vorwiderstand----Photowiderstand-----GND
                       |
                       |
                      ADC0

Danke im Voraus!
#1534511
Lesenswert?

An AVCC wird die Versorgungsspannung angeschlossen, ggf. gefiltert durch 
ein L/C-Glied.

AREF kann Eingang wie Ausgang sein, abhängig von der Einstellung der 
Referenzspannung.

Deine Schaltung ist prinzipiell richtig, aber AREF darf nicht stark 
belastet werden. Siehe Doku. Nur kannst du das leichter haben, indem du 
AVCC als Referenz verwendest und den Teiler an AVCC hängst. Das Ergebnis 
des Spannungsteilers ist ja nicht abhängig vom tatsächlichen Wert von 
AVCC.
Gast #1534540
Lesenswert?

Aref ist immer ein Einang (hier wird die Ref. Spannung für den AD her 
geholt). Zusätzlich kann der PIN auch gleichzeitig ein Ausgang sein 
worüber einen Widerand in Größenordnung 10 K die Spannung von der Ref. 
(2,5 V) oder AVCC anliegt.
Gast #1535085
Lesenswert?

Danke für die zahlreichen Antworten!

Also ich hab jetzt die Schaltung gebaut:

AREF----Vorwiderstand----Photowiderstand-----GND
              22K Ohm      78 Ohm-1M Ohm
                        |
                        |
                       ADC0

LED an C5, Messung an C0.

Funktioniert leider nicht, egal mit was für einem Wert ich den vom ADC 
gemessenen vergleiche (0,128,255), immer leuchtet die LED. (Siehe mit 
!!!!! markierte Zeile). Das kann ja nicht sein. Sieht jemand einen 
Fehler?

.include "m8def.inc"

  .def temp1     = r16
  .def adlow     = r17        ; Ergebnis vom ADC
  .def adhigh    = r18         ; Ergebnis vom ADC

  ; C5 als Ausgang
  ldi temp1, 0b00100000
  out DDRC, temp1

  ; ADC initialisieren: ADC0, Vcc als Referenz, Single Conversion, 
Vorteiler 128

  ldi     temp1, (1<<REFS0) | (0<<MUX0) | (0<<MUX1) | (0<<MUX2) | 
(0<<MUX3)  ; Kanal 0, interne Referenzspannung 5V
  out     ADMUX, temp1
  ldi     temp1, (1<<ADLAR)   ; linksbündige Ausrichtung in adhigh
  out     ADMUX, temp1
  ldi     temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0) 
; ADC an und Prescaler auf 128
  out     ADCSRA, temp1

  sample_adc:
  sbi     ADCSRA, ADSC        ; den ADC starten

  wait_adc:
  sbic    ADCSRA, ADSC        ; wenn ADC fertig, wird dieses Bit 
gelöscht
  rjmp    wait_adc

  in      adlow, ADCL         ; immer zuerst LOW Byte lesen
  in      adhigh, ADCH        ; danach das mittlerweile gesperrte High 
Byte

  cpi     adhigh, 0           ;!!!!!!!!!!!!!!!!!!!!!!!!
  brsh    gr
  ldi     temp1, 0xFF    ;kleiner: LED aus
  out     PORTC, temp1
  rjmp   sample_adc
  gr:                    ;größer: LED an
  ldi     temp1, 0x00
  out     PORTC, temp1

  rjmp sample_adc
Gast #1535105
Lesenswert?

@Henk:

Hmm also meine Spannungsquelle gibt (angeblich) 7,5 Volt.

Die interne Einstellung ist bei mir: REFS0=1 und REFS1=0, also interne 5 
Volt.

Ich will nur kucken obs hell oder dunkel ist. Das scheint so zu 
funktionieren.

Zitat: Avcc ist nicht der selbe Pegel wie Aref!
Hat das irgendwelche Folgen für mich?

Danke für die Hilfe hier!

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