ADC

Gast #224
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
Admin Persönliche Seite #225
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
Gast #226
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

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.

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.