www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC


ADC
Autor: Binomie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich schreib euch mal wieder :-)
Diesmal habe ich ein Problem mit dem ADC.
Die serielle Verbindung fiunktioniert dank eurer Hilfe perfekt, nochmal 
Danke.
Also bei dem angehängten Programm sollte der ADC eigentlich einen 
Interrupt auslösen und die Messwerte sollten in den Registern stehen, 
wenn ich aber das AVR-Studio starte und die Simulation laufen lasse 
bekomme ich keinen ADC-Interrupt. Was hab ich falsch gemacht? Könnt ihr 
mir helfen?

Binomie

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

> Ich schreib euch mal wieder :-)

Nur zu! ;-)

> Diesmal habe ich ein Problem mit dem ADC.
> Die serielle Verbindung fiunktioniert dank eurer Hilfe
> perfekt, nochmal Danke.
> Also bei dem angehängten Programm sollte der ADC eigentlich
> einen Interrupt auslösen und die Messwerte sollten in den
> Registern stehen, wenn ich aber das AVR-Studio starte und die
> Simulation laufen lasse bekomme ich keinen ADC-Interrupt. Was
> hab ich falsch gemacht? Könnt ihr mir helfen?

Sieht eigentlich soweit ok aus, das Programm (kann es jetzt leider nicht 
testen, da ich Windows erst neu installiert habe, werd ich aber 
nachholen).
Hast du geschaut, ob das Bit 4 in ADCSR in der Simulation gesetzt wird, 
oder tut sich da garnichts?
Hast du im AVR-Studio den richtigen Controller ausgewählt?
Lang genug auf den Interrupt gewartet?
Vielleicht funktioniert das Programm ja in "Real-Life"? Bau in der 
Interruptroutine halt mal einen Befehl zum LED-anschalten ein, dann 
siehst du ob was passiert.
Ich hab mal ein kleines Programm angehängt, das den auf dem 1. Kanal 
eingelesenen Wert übers UART als Hex-Zahl ausgibt. Allerdings habe ich 
da den Free-Run-Mode aktiviert. Find ich auch viel schöner so, ohne das 
umständliche Interrupt-Gebastel, man kann den Wert einfach einlesen wenn 
man ihn braucht und muss nicht irgendwo zwischenspeichern.

MfG
Andreas

Autor: Reiner Seegebrecht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR-Studio löst keinen Interrupt vom ADC aus, da der Zeitpunkt
abhängig von der Eingangsspannung und der Einstellung des
Prescalers ist. Lösung:
Mit ALT-F5 ein I/O-Fenster öffnen und bei A/D Converter-
ADC-Controll das ADIF-Bit von Hand setzen. Dann die "Messwerte"
in ADC-High und ADC-Low eintragen und Simulation starten.

Achtung! Fehler in der Interrupt Vector Liste, es fehlt ein ret
für INT1.
Besser mit der Anweisung:
.org ADCCaddr
rjmp xxx

Dann kann man sich auch das Schreiben der ganzen ret-Anweisungen
sparen.
Siehe 2333def.inc

MfG

Reiner

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.