www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90S4433: Problem mit ADC


Autor: Frank Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
(Vorweg: ich hab schon die Threads mit der gleichen Problematik
gelesen)
Bei mir arbeitet der ADC im Grunde korrekt, aber bei bestimmten
Spannungswerten kommen keine konstanten Werte, sondern z.B. die Codes
34 und 220 (dez.) in erratischer Abfolge. Ich habe schon AVCC mit
L=100uH und 10uF(Tantal) abgeblockt. Für ARef hab ich schon VCC und
AVCC probiert, auch schon über 1k abgeblockt. Aber das scheint daran
nicht zu liegen. Ich könnte jetzt ja mein Programm listen, aber daran
kanns ja wohl nicht liegen, zumal ich den MC nach dem Wandlungsstart
schlafen lege. (Sleepmode Idle), und ja ansonsten scheinbar alles
funktioniert. Das einzige, was mir noch eingefallen ist: ich habe
nicht, wie Atmel empfiehlt, eine Groundplane überall, das liegt daran,
dass der ganze Aufbau noch recht freiluftmäßig ist.
Hat jemand von Euch eine Idee, was ich falsch mache?
mfg
Frank

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank,

hast Du Dir mal das Signal und die Versorgungsspannungen während dieser
Effekte direkt an den Controllerpins mit dem Oszilloskop angesehen? Wenn
da alles sauber ist, liegt es vielleicht doch an der Software. Welcher
Art ist denn das zu messende Signal?

Gruß, Frank

Autor: Frank Simon (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
1.an ein Oszi komme ich wg. Ferien leider erst wieder Montag, Mist!
2.Die Testspannung hab ich mit nem Poti zwischen 0V und VCC
abgegriffen.
3.Software siehe Anlage, wer nicht alles durchkauen will: Essentials
siehe unten.
Für Hilfe wäre ich dankbar,
Frank

; Initialisierungen nach einem Reset:
reset:
...
clr temp      ;Kanalwahl=0 und
out ADMUX,temp    ;Vcc als Referenzspannung.
ldi temp,(1<<ADEN)+(1<<ADIE)+ADCdiv64  ;125kHz->112us
out ADCSR,temp
ldi temp, 1<<SE +0<<SM  ; Sleep ermöglichen, Sleepmode = Idle
out MCUCR, temp
...
In der Empfangs-ISR des UART:
...
clr temp
out ADMUX, temp      ;Kanalwahl
cbi DDRC, 0
cbi PORTC, 0
ADConv:
sbi ADCSR, ADSC      ;Wandlung starten
sleep          ;startet auch die Wandlung im Idle-Mode
...
reti
...
; A-D-Converter Conversion Complete Interrupt
ADCI:
in temp, ADCL
in send, ADCH
rcall transmit
mov send, temp
rcall transmit
reti
...
; UART: Senden eines Bytes. Kein Interrupt, es wird gepollt, bis das
; Datenregister frei ist.
transmit:
sbis UCSRA,UDRE     ; Warten, bis UDR bereit ist
rjmp transmit
out UDR, send
ret
...
; Hauptprogramm-Schleife:
main:
loop:
sleep
rjmp loop

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.