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!
Hi >Ich verstehe das so, dass AREF ein Ausgang ist an der eine >(softwareseitig veränderliche) Spannung anliegt. Nein. Bei REFS1=0, REFS0=0 ist es ein Eingang. MfG Spess
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.
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.
> Aref ist immer ein Einang ... Zusätzlich kann der PIN auch > gleichzeitig ein Ausgang sein lass dir das mal schnell patentieren! :-)
Ulrich schrieb: > Aref ist immer ein Einang (hier wird die Ref. Spannung für den AD her > geholt). Du bist noch auf dem Stand der alten AT90Sxxxx, da stimmte das. Bei den ATmegas liegt ggf. die interne Referenz (Bandgap oder AVCC) drauf.
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
Du schreibst zweimal ADMUX, der zweite setzt den ADC auf externe Referenz. Wie ich oben erwähnte: "Note that VREF is a high impedant source". Nimm AVCC statt AREF, ist der gleiche Pegel aber belastbar.
Joa ich dachte das wäre ein gültige Schreibweise um das aus optischen Gründen auf zwei Zeilen aufzuteilen ;) War wieder ein Volltreffer, jetzt gehts!!! Danke schön!!!!!
Avcc ist nicht der selbe Pegel wie Aref! Die Spannungen an den beiden Pins sind jeweils abhängig von äußeren Umgebungsbedingungen (angelegte Spannung) und internen Einstellungen (Referenzquelle).
@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!
Henk schrieb:
> Avcc ist nicht der selbe Pegel wie Aref!
Bei Vref=AVCC, wie hier konfiguriert, ist der Unterschied sicherlich
nicht gross. Dafür stellt sich aber die Frage, ob die Last an AREF das
Ergebnis beeinflusst.
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.