Muß ich einen Interrupt nehmen??

Gast #64614
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
Gast #64615
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
Gast #64616
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...
Gast #64617
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
Angehängte Dateien:
Gast #64618
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).
Gast #64619
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
Gast #64621
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.