www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unterschiedliche Pins bei AD Abfrage


Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So... ich tu mir also mein A/D Port wählen, funktioniert auch tadellos. 
Nur wie bekomme ich nun einen zweiten Port zum laufen? Kann mir jemand 
auf die Sprünge helfen?!

Hier die init mit Port Nr 6.:

void adcinit (void)
{
        ADMUX = 0x06;
        ADCSRA = ((1<<ADEN) | (1<<ADSC)| (1<<ADATE)) +7;
}

Hier die Messung.:
void messung (void)
{
 unsigned lowByte;
 unsigned highByte;

 ADCSRA |= ADIF;
 lowByte = ADCL;
 highByte = ADCH;
 result = highByte * 256 + lowByte;
}

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nachdem du den ersten ADC abgefragt hast, musst du halt den zweiten 
ADC-Eingang einstellen (über ADMUX) und neu messen lassen.

Autor: ADC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wärs einfach damit:
void adcinit (uinnt8_t channel)
{
        ADMUX = channel;
        ADCSRA = ((1<<ADEN) | (1<<ADSC)| (1<<ADATE)) +7;
}

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso... also gleichzeitig zwei oder mehrere Pins abfragen geht nicht. 
Gut gut, weiß ich bescheid.

Danke :D

Autor: ADC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so, und in der messung() fehlt dir der Rückgabewert. Da solltest du 
schon uint16_t messung(void) oder so ähnlich schreiben.

Autor: ADC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned lowByte;
 unsigned highByte;
????
da fehlt der Datentyp, bestimmt uint8_t dann kannst auch das unsigned 
wegnehmen (das u von uint8_t bedeutet schon unsigned)

Autor: Jean (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ADC schrieb:
> unsigned lowByte;
>  unsigned highByte;
> ????
> da fehlt der Datentyp, bestimmt uint8_t dann kannst auch das unsigned
> wegnehmen (das u von uint8_t bedeutet schon unsigned)

Nö ist ein unsigned int.

Gruß

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich programmiere sowieso in MicroC da gibt es den Datentyp uint8_t 
garnicht ;) MicroC interpretiert "unsigned" als normales 2 byte Integer 
ins positive (0 .. 65535) wobei in MicroC int als 2byte (-32768 .. 
32767) gewertet wird. In MicroC wäre demnach uint8_t das gleiche wie 
"unsigned short int"

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.