mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC mit ATTiny26


Autor: Dennis Goetz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Halo zusammen,

ich habe einige Probleme mit meinem ADC-Wandler am ATTiny26. Im
Simulator läuft meine Software, aber es ist halt "nur" ein Simulator.
Auf dem Chip funktioniert es nicht wie gewollt.
Prinzipiell möchte ich zwei Spannungen wandeln, die am MUX0 und MUX1
des ADC anliegen. Anhand dieser Werte sollen dann zwei LED's anzeigen,
welcher Wert größer ist. Also jeweils eine LED für einen ADC-Kanal.
Vermutlich ist es ein Abtastraten-Problem, aber ich hab schon
experimentiert und die Specs von Atmel eingehalten, aber es klappt
einfach nicht. Vielleicht schut ihr mal drüber und könnt mir etwas
helfen...!

Viele Grüße und schonmal "DANKE"!!!

Dennis Goetz

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aehm.
AUf die Schnelle wuerde ich mal sagen:
Die Initialisierung der ADC: ab ins main() damit.
Es ist relativ sinnfrei die ADC bei jedem Leseversuch
neu zu initialisieren.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergiss das wieder.
Ich hab da was in Deinem Code gelesen, was gar nicht da steht.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> while(!(ADCSR&(1<<ADIF)));

Das Bit ist gesetzt, solange die Umwandlung laueft.
Du musst warten, bis das Bit wieder auf 0 zurueckfaellt,
also solange in der Schleife bleiben wie das Bit auf 1
steht.


while( ADCSR & ( 1 << ADIF ) )
  ;

Autor: Michael L. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab da einiges gesehen, was ich nicht so ganz verstehe...

Im Anhang ist meine ADC Routine, welche auch beim Tiny26 verwendet wird
zu finden.

Gruß,
Michael

Autor: Dennis Goetz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke mal an alle, aber ich hab den Fehler gefunden. Fehler lag im
Detail, und zwar an der Stelle, an der ich die jeweiligen ADC-Eingänge
ausgewählt habe. Durch meine Übergabe (MUX0 bzw. MUX1) habe ich einmal
den falschen ADC-Port ausgewählt, welchen ich als Ausgang definiert!!!
Leichtsinnsfehler! Vermutlich hätte ich das Datenblatt noch genauer
lesen sollen!!!  Trotzdem Danke an alle Helfer!!!!

Greets,
Dennis

Autor: Michael L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist beim simulieren aufgefallen, dass du mit ADCSR=(1<<ADIF); deinen
Vorteiler auf 000 setzt. Ist das so gewollt? Am Anfang hast du ja einen
anderen Vorteiler eingestellt...

Ich setz meine Bits immer so:

/*----- BIT ACCESSES -----*/
#define SetBit(ADDRESS,BIT)   (ADDRESS |= (1<<BIT))
#define ClrBit(ADDRESS,BIT)   (ADDRESS &= ~(1<<BIT))
#define CheckBit(ADDRESS,BIT) (ADDRESS&(1<<BIT))    //Testing a single
Bit

Gruß,
Michael

Autor: Dennis Goetz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das war ein Fehler. Muss natürlich "ADCSR|=(1<<ADIF)" heißen. Aber
das war im Endeffekt nicht ausschlaggebend für den Fehler! Trotzdem
Danke!

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.