www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega128 und mehrere AD-Wandlungen


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an Alle,

ich wollte mit einem Atmega128 acht analog Spannungen von Sharp 
IR-Sensoren in einen digitalen Wert erfassen.
Jetzt habe ich das Problem das ich nicht alle Kanäle sampeln kann. Bin 
verwirrt und hoffe wirklich auf eure Hilfe.

 - F_CPU von 14.7456 Mhz
 - ADC Prescalor von 128
 - ARev = AVCC mit einem 100nF Kondensator auf Masse

_________________________________________

void adcInit( ) {

    ADMUX = (0 << REFS1) | (1 << REFS0) | (1 << ADLAR);

    ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

    adcRead( 0 );
}


uint16_t adcRead( uint8_t mux ) {
    ADMUX = mux | (0 << REFS1) | (1 << REFS0) ; //| (1 << ADLAR);

    ADCSRA |= (1 << ADSC);

    while ( ADCSRA & (1 << ADSC) ) {
        ;
    }

    return ADCW;
}
__________________________________________________________

Der Aufruf sieht in etwa wie folgt aus

  uint16_t inf0 = adcRead(0);
  _delay_ms(5);
  uint16_t inf1 = adcRead(1);
  ...


Wenn ich nun alle acht Kanäle hintereinander Aufrufe (Verzögerung von 
5ms)
bekomme ich folgende verwirrende Werte. Vor allem wenn ich kein 
IR-Sensor angeschlossen habe, sollte auf dem AD-Pin eigentlich 0 V 
liegen.

 inf0:inf1:inf2:inf3:inf4:inf5:inf6:inf7
 975 : 0 : 954 : 0 : 937 : 0 : 927 : 0

 976 : 0 : 959 : 0 : 938 : 0 : 922 : 0

 975 : 0 : 955 : 0 : 931 : 0 : 919 : 0

 977 : 0 : 950 : 0 : 931 : 0 : 923 : 0

 …

sollte ein Sensor am Pin 0 angeschlossen sein wird folgendes gesampled

 467 : 0 : 457 : 0 : 447 : 0 : 447 : 0

 464 : 0 : 457 : 0 : 446 : 0 : 443 : 0

 456 : 0 : 451 : 0 : 452 : 0 : 452 : 0

 454 : 0 : 446 : 0 : 438 : 0 : 442 : 0

 …

Der erste Wert passt, ich versteh nur nicht warum der dritte, fünfte und 
siebte sich auch verändert. Wenn der Sensor am Pin 1 angeschlossen ist, 
ändert sich inf2 und nicht inf1.

Evt könnt ihr mir ja weiterhelfen.

Soweit Gruß

Alex

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Hast du JTAG abgeschaltet?

MfG Spess

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi spess53

öhm.. nö.. stört das den ADC oder sind es die selben pins?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Sensoren verwendest du und wie hast du sie an den AVR 
angeschlossen?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>öhm.. nö.. stört das den ADC oder sind es die selben pins?

Dann sieh mal nach, wo die Pins liegen.

MfG Spess

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Flo

Es sind Infrarot Sensoren von Sharp gp2d120 mit einer analogen Spannung 
von ca 0 bis 3.2 V

Gruß

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@spess53

<<< peinlich.. habs nicht gesehn..

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke spess53 gleich mal ausprobieren..

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du nichts angeschlossen hast an den Pins und weder Pullup noch 
Pulldown eingebaut hast, verhalten sich ADC-Eingänge fast wie Antennen.
Teilweise reichts schon mit dem Finger an die Analogsensorbuchse deines 
Boards(?) zu fassen, um die Werte zu ändern.

Was für ein Board verwendest du? Wie sieht das Layout aus?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Flo
Stimmt eigentlich schon, nur hätte ich gedacht das der Wert um die 0 V 
schwankt. Ich benutze ein Crumb128 auf einem Steckplatine, an dem habe 
ich die Pins raus geführt.

@spess53
Hab den JTAG nun bei den Fuses ausgemacht. Hat am verhalten des 
Mikrocontrollers leider nichts verändert.


Keine Ahnung was da nicht stimmt  :-/


Gruß Alex

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.