mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Port wechsel


Autor: Future Limit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich habe den ATMEGA8 und wollte mal ein wenig mit dem Ding spielen. Ich
habe mir ein Poti genommen 5V angeschlossen und den mittleren Pin an
meinen µC angschlossen (Port PC0 / ADC0). Da ich diesen Port aber gerne
für andere Zwecke nutzen möchte, würde ich den Poti gerne an die Port
PC5 / ADC5 anschließen. Von der Hardwareseite ein kein Problme, leider
bekomme ich es nicht hin, mein C++ Programm su umzuschreiben, dass ich
den Port PC5 abgreife. Ich kann immer nur den Port PC0 abgreifen. Hier
ist mein Quelle-Code, vielleicht habt Ihr ja ne Idee.

#include <mega8.h>

// Standard Input/Output functions
#include <stdio.h>

#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
...

/ ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: Off
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
SFIOR&=0xEF;
....
while(1)
{
...
...
}

}

Gruß
Olli

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal ins Datenblatt.
Da ist eine Tabelle welchen Wert du in ADMUX schreiben musst, um ADC5
zu verwenden.

Autor: Future Limit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die fixe Antwort. Leider werder ich nicht ganz schlau aus dem
Datenblatt. Habe schon mehrere Versuche gestartet den ADMUX Wert
zuändern aber leider ohne Erfolg.

Gruß
Olli

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du stellst mit ADMUX doch immer ADC 0 ein. Sollte es nicht 0x05 sein?

Autor: Future Limit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
egal, was ich bei ADMUX einstelle (z.B. 0x05) greift er immer nur den
Port PC0 ab.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>egal, was ich bei ADMUX einstelle (z.B. 0x05) greift er immer nur den
Port PC0 ab.

Entweder du stellst ADMUX nicht richtig ein (oder überschreibst es
später wieder), oder dein uC ist Schrott.
Wenn in ADMUX 5 steht, dann liest der uC auch ADC5 ein !

Poste mal das was der Compiler aus dem C Code macht.
Der Assemblercode sollte ja nicht groß sein

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende ausserdem immer den Interrupt dazu. Im Interrupt das
Ergebnis sichern, ein Statusbit setzen, eventuell ADC neu starten und
die Interruptroutine wieder verlassen. Ergibt die wenigsten Kollisionen
wenn man noch anderes macht, was ja meistens der Fall ist.

Hubert

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AREF ist eine korrekte externe Referenz?

> SFIOR&=0xEF;

Hat mit der Sache nichts zu tun, ist aber trotzdem falsch. Setzt ein
Bit zurück, dass beim Mega8 garnicht definiert ist (nur 0..3, hier 4).

Autor: Future Limit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Jungs,

war mein Fehler habe nur immer nur den ADMUX-Wert unten in der main
Funktion geänert und nicht auch in der Deklaration. Jetzt funkioniert
es, wie es soll.

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.