www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD-Wandlung mit AT89C51CC03


Autor: b8x (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen..!
Ich beschäftige mich seit einer gewissen Zeit mit Mikrocontrollern 
(AT89C51CC03).
Nun würde es mich interessieren, wie eine Analog/Digital-Wandlung 
funktioniert:
Mein Ziel ist es, einen Schrittmotor anzusteuern und dessen 
Geschwindigkeit mithilfe eines Potis bestimmen zu können.
Die Ansteuerung des Schrittmotors funktioniert bisher einwandfrei.

Hier mein C-Code:
#include<REG51CC03.h>
void zeit()
{
  unsigned int i;
  i = 10000;  
  for(i;i>0;i--)
  { }
}

void main()
{
  int Count[]={8,12,4,6,2,3,1,9};
  
  while(1)
  {
    unsigned int y = 0;
     for(y;y<7;y++)
    {
       P1 = Count[y];
      zeit();
    }
  }
}




Nur mit der AD-Wandlung klappt es nicht so ganz :-/
kann mir hier jemand helfen?

Ihr würdet mir sehr helfen..!
Vielen Dank, b8x..!

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...was klappert dann da nicht?
Meine Glaskugel ist zum TÜV.

mfg
Pietr

Autor: b8x (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe sämtliche Beispiele schon ausprobiert, nur tut der Controller 
nicht das, was er tun soll :-/

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
b8x schrieb:
> Ich habe sämtliche Beispiele schon ausprobiert

Das ist eine Null Aussage, da keiner weiß, was Du probiert hast, weil 
keiner auf Deine Festplatte schauen kann.

Denke dochmal an die, die helfen wollen und gib mal Informationen.


Ich geh da immer ganz dumm vor.
Ich guck einfach ins Datenblatt, wie welche Bits wie zu setzen und zu 
testen sind und Du wirst es nicht glauben, aber es funktioniert.

Man muß den Muxer setzen und den Takt-Teiler und das Startbit und dann 
warten, bis das Fertigbit gesetzt ist.

Die 2,5V Referenz hast Du angeschlosen?


Peter

Autor: b8x (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry..aber nun mal genauer:

Ich habe die Beispiele auf dem Datenblatt schon versucht, jedoch ist das 
für mich noch ein bisschen unverständlich, da ich noch keine großen 
erfahrungen mit µC habe.

Zu der Referenzspannung:
Ich hab ein Experimentierboard in der Schule zusammengelötet, wo diese 
schon angeschlossen ist.

Ich weis bisjetzt, dass bestimmte Bits gesetzt sein müssen um eine 
Analog-Digital-Wandlung durchzuführen. Diese habe ich auch schon einmal 
in einem Test-Programm getan, nur hat es nicht funktioniert.

Nun daher meine Frage: Ist es möglich, dass jemand einen Beispielcode 
schreibt, anhand dessen ich diesen Vorgang der AD-Wandlung besser 
verstehe?

Vielen Dank, b8x!

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besser ist es wenn Du deine Versuche mal hier hereinstellst. Wo soll da 
ein Lerneffekt sein wenn Du es nicht einmal versuchst.

Autor: B8X (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include<REG51CC03.h>

sbit busy = 0xDC;
sbit ADAT = 0xF5;
void main()
{
  ADCON = 0x08;
            
  ADDL = 0x00;    
  ADDH = 0x00;    
  while(1)
  {
     if(busy == 1)
    { }
    else
    {
      P2 = ADAT;
    }
  }
}

Erläuterung:
Mit
ADCON = 0x09
 lege ich P1.0 als Analogeingang (soviel ich weiß, kann nur P1 beim 
AT98C51CC03 als Analogeingang genutzt werden), eine Dauermessung und das 
Busyflag = 0 fest.

Mit
ADDL 0x00;
 und
ADDH = 0x00;
 lege ich eine Messung im Bereich von 0V - 5V fest.


Wenn ich nun dieses Programm auf meinen µC lade, leuchtet der Port 2 
dauerhaft, egal welche Spannung ich an P1.0 anlege.

Wo liegt der Fehler?

Danke, B8X!

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.atmel.com/dyn/resources/prod_documents/...

Da findest Du das enstsprechende Datenblatt.

>> sbit busy = 0xDC;
>> sbit ADAT = 0xF5;

Hier geht es um BIT's nicht um Bytes... schau Dir mal die Bedeutung von 
sbit an... 8x51 Typen sind BITadressierbar.

ADDH sowie ADDL sind deine Ergebnisregister (10 BIT).

An dem Code stimmt so gut wie nichts, schau ins DB insbesondere nach:

ADCF
ADCLK
ADCON

sowie ADSST BIT, ADEOC BIT sowie

ADDH
ADDL

Autor: Carlos (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo b8x,
anbei eine kleine Funktionssammlung für den at89C51cc03er, in der Du 
auch zwei Funktionen für den A/D-Wandler findest.
Ich hoffe, Du kennst Dich etwas mit C aus und weist, was Funktionen sind 
und wie diese verwendet werden.
Wenn nicht, einfach hier noch mal nachfragen.

Gruß

Carlos

Autor: b8x (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Carlos..!

Nun funktioniert es endlich und ich verstehe auch, warum..!

Danke für eure Hilfe..!

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.