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


von Danny (Gast)


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

von Sebastian Wille (Gast)


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

von Danny (Gast)


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...

von Sebastian Wille (Gast)


Angehängte Dateien:

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

von Danny (Gast)


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).

von Sebastian Wille (Gast)


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

von Danny (Gast)


Lesenswert?

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

von Marco Haufe (Gast)


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

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
Noch kein Account? Hier anmelden.