www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme bei der AD-Wandlung mit PIC16F876


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen.

ich habe die unter Link "http://www.cc5x.de/ADC.htm" beschriebene 
AD-Wandlung mit der dazugehörigen Schaltung aufgebaut. Allerdings 
benutze ich kein RS232 Verbindung, sondern ein Display an dem ich 3 
verschiedene Potistellung ausgeben möchte.
dafür wurde der Code wie folgt verändert:
void main(void)
{
    PORTB=0x00;
    TRISB=0b00000000;
    uns16 a;             
    char n;

    //++  Einstellungen des AD-Wandlers  ++++++++++++++++++++++++++++
    ADCON1=0;               // Ganzer PortA als Analog Vdd Vss
    ADON=1;                 // ADC- Einschalten
    ADCS1=1;                // Geschwindigkeit des ADC
    ADCS0=0;
    ADFM=1;                 // Rechts Ausrichtung
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    lcdport=0;
    Delay1ms(1000);
    LCDInit();

  while(1)               
    {
        n=RCREG;            // Empfange Kanalnummer
        a=ADC(n);           // AD-Wandlung
        LCDPos(1,0); LCDAusgabe(n); 
        LCDPos(2,0); LCDAusgabe(a);
        Delay1ms(100);
 
        n=RCREG;            // Empfange Kanalnummer
        a=ADC(n);           // AD-Wandlung
        LCDPos(1,5); LCDAusgabe(n);
        LCDPos(2,5); LCDAusgabe(a);   
        Delay1ms(100);
    
        n=RCREG;            // Empfange Kanalnummer
        a=ADC(n);           // AD-Wandlung
        LCDPos(1,10); LCDAusgabe(n);
        LCDPos(2,10); LCDAusgabe(a);
        Delay1ms(100);        
    }                    
} 

Die Funktionen habe ich nicht eingefügt, weil sie nicht verändert 
wurden. Sind die gleichen wie unter dem LINK.
Jetzt die Problematik:
Warum wird mir nur das Signal was am RA0 angeschlossen ist und nicht all 
3?
Wie ist das mit der Kanalauswahl gemeint? kann man bestimmte Kanäle 
einzeln auswählen?

Vielen Dank für die Antworten.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Code ist Scheisse !

>        n=RCREG;            // Empfange Kanalnummer

WO bekommst du die Kanalnummer her ?
Da fehlt eine komplette Funktion.

>Wie ist das mit der Kanalauswahl gemeint? kann man bestimmte Kanäle
>einzeln auswählen?

Nein kann man nicht ! Du kannst natürlich ALLE
AD-Kanäle mit einem einzigen Befehl auf einmal
in ein einziges Bit lesen. Das ist dann 0 oder 1.

Wie verblödet muss man sein um so eine Frage zu stellen ?

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ holger

Sorry, aber mit Deiner Antwort ist Christian nicht geholfen.
Ich finde Deine Äusserungen ziemlich unfreundlich.
Bekanntlich gibt es keine blöden Fragen, sondern nur blöde Antworten. 
Und Du hast uns ein Beispiel davon geliefert.

@ Christian
RCREG enthält m.E. die gewünschte Kanalnummer, die vorgängig über RS232 
empfangen wurde. Da Du keine RS232 verwendest, aber immer alle drei 
Eingänge abfragen willst, kannst Du RCREG jeweils mit 0, 1, 2 ersetzen:
  while(1)               
    {
        a=ADC(0);           // AD-Wandlung
        LCDPos(1,0); LCDAusgabe(n); 
        LCDPos(2,0); LCDAusgabe(a);
        Delay1ms(100);
 
        a=ADC(1);           // AD-Wandlung
        LCDPos(1,5); LCDAusgabe(n);
        LCDPos(2,5); LCDAusgabe(a);   
        Delay1ms(100);
    
        a=ADC(2);           // AD-Wandlung
        LCDPos(1,10); LCDAusgabe(n);
        LCDPos(2,10); LCDAusgabe(a);
        Delay1ms(100);        
    }                    

Ja, Du musst den gewünschten Kanal (=Eingang) angeben. Das erfolgt über 
den Parameter beim Aufruf von ADC(n).

Alles klar?

Severino

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger.
... na da kommt sich einer besonders klug vor. Hat man dir nicht 
beigebracht Leute freundlich zu behandeln?
Aber da gibts immer wieder einige die es unbedingt raushängen lassen 
müssen wie arrogant und großkotzig sie daher reden.
Wahrscheinlich wurden sie als Kinder von jeden verarscht und als Freek 
bezeichnet und muss deshalb jeden Kommentar mit einer Abwertung 
abschließen.

Vielen Dank trotzdem.

War mal wieder ein Beweis dafür wie beschränkt manche sind.

... n=PORTA.0; n=PORTA.1; n=PORTA.2; ...

wäre vielleicht eine mögliche Antwort gewesen. Oder du hättest auf einen 
anderen Code hinweisen können. Aber egal....

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Severino.
Danke für die Antwort.
Danach habe ich gesucht.

Servus

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Severino

>Sorry, aber mit Deiner Antwort ist Christian nicht geholfen.
>Ich finde Deine Äusserungen ziemlich unfreundlich.

Stimmt, das waren sie. Mit Absicht ;)
Und so ganz ohne Informationen waren sie ja nun auch nicht.

>Bekanntlich gibt es keine blöden Fragen, sondern nur blöde Antworten.
>Und Du hast uns ein Beispiel davon geliefert.

Doch es gibt blöde Fragen. Hat er mal das Datenblatt zum Thema
RCREG gelesen ? Neeeiiin, die Mühe macht man sich doch nicht.

@ Christian

>... na da kommt sich einer besonders klug vor. Hat man dir nicht
>beigebracht Leute freundlich zu behandeln?

Doch, in der Regel bin ich ein sehr höflicher Mensch.
Aber im Laufe meines Lebens hat es sich als
sehr hilfreich erwiesen lernresistenten gelegentlich
mal einen Tritt in den Hintern zu geben.
Das beschleunigt die Lernkurve um ein vielfaches ;)

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ holger

"C'est le ton qui fait la musique"

Einerseits magst Du recht haben, man sollte die Fragesteller dazu 
animieren, selber nach den Antworten zu suchen.
Aber Suchen muss auch zuerst gelernt sein:
Wie sucht man?
Wo sucht man?
Was sind die relevanten Suchbegriffe?
Sehr wichtig: wie erklärt man das Problem knapp und präzis?

Aber Du kannst ja Hinweise in die richtige Richtung geben, und zwar 
nicht in solche einem niederschmetternden Ton.

Ausserdem:
Wenn jeder alles selber suchen würde, bestünde ein Forum wie dieses hier 
aus einem einzigen Link:
www.google.com

Im Übrigen passiert es wohl den Meisten hier (Dir natürlich nicht ;-) 
manchmal, dass sie den Wald vor lauter Bäumen nicht sehen und einen 
Hinweis gebrauchen können.

Schade, dass Du keine Gelegenheit hattest, Christian zu zeigen, was für 
ein "sehr höflicher Mensch" Du in der Regel bist.

Severino

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.