mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Muß ich einen Interrupt nehmen??


Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Also, folgendes Problem: ich möchte mit meinem 90s9535 mehrere
Analogeingänge einlesen.
Mit einem Funktioniert alles ganz gut. Nur sobald ich versuche einen
zweiten einzulesen klappt es nicht mehr. Ich habe schon in der
Codesammlung nachgesehen, aber nichts gefunden (oder überlesen). Kann
mir einer von euch helfen? Ich komme mit der Kanalumschaltung nicht
zurecht. Muß/kann ich da mit Interrups abreiten? Ich weiß es gibt einen
Interrupt wenn die AD-Wandlung erfolgt ist, aber ich bekomm das einfach
nicht gebacken. Habe erst Angefangen mich mit µC und Assembler zu
beschäftigen, also bin ich für jede Hilfe dankbar.

Gruß
Danny

Autor: Sebastian Wille (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

beim Mega8 wird über das Register "ADMUX" die Kanalwahl über die Bits
0-3 getroffen.

in    r16,ADMUX
ori   r16(0<<MUX3|0<<MUX2|1<<MUX1|0<<MUX0)
out   ADMUX,r16

schaltet vom "0. Kanal" (ADC0) auf den "1. Kanal" (ADC1).

Bei Deinem Typ dürfte es änhlich sein --> Datenblatt!

Sebastian

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Kanal wählen ist beim 8535 auch so, nur wie bekomme ich die
Daten aus dem ADCL bzw. ADCH passend zum Kanal? Wie gesagt, ich weiß es
gibt einen Interrupt wenn Wandlung erfolg ist, weiß aber nicht wie ich
das auswerten kann...

Autor: Sebastian Wille (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danny,

als Anhang ein kleines Testprogramm für den ADC des Mega8. Ohne
Interrupt!

Den mußt Du nicht verwenden. Gib' einfach den Befehl zu wandeln, warte
10ms oder so und lies dann ein. Und drandenken: Erst ADCH dann ADCL
auslesen.

Sebastian

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Sebastian!
Werde das mal testen. Gibt es eigentlich irgendwo eine Seite wo
Interrupts beschrieben sind? Habe wohl im Tutorial gelesen, ist mir
aber irgendwie zu hoch (im Augenblick zumindest).

Autor: Sebastian Wille (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danny,

hast Du Dir das Datenblatt von www.atmel.de schon heruntergeladen? Dort
gibt es im PDF ein Lesezeichen "Interrupts".

Ansonsten viel Spaß beim testen!

Sebastian

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja habe ich, werde aber nicht ganz schlau draus.... ich denke das wird
schon!

Autor: Marco Haufe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
ich meine mal irgendwo ein Errata-Sheet gelesen zu haben,
wo drin stand, das man bei bestimmten Typen des 8535 den ADKanal
zweimal lesen muß, um den richtigen Wert zu erhalten.
Und tatsächlich, nur mit diesem Tip lief meine Schaltung dann sauber.
VG + Viel Spass
Marco

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.