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:
1
#include<REG51CC03.h>
2
voidzeit()
3
{
4
unsignedinti;
5
i=10000;
6
for(i;i>0;i--)
7
{}
8
}
9
10
voidmain()
11
{
12
intCount[]={8,12,4,6,2,3,1,9};
13
14
while(1)
15
{
16
unsignedinty=0;
17
for(y;y<7;y++)
18
{
19
P1=Count[y];
20
zeit();
21
}
22
}
23
}
Nur mit der AD-Wandlung klappt es nicht so ganz :-/
kann mir hier jemand helfen?
Ihr würdet mir sehr helfen..!
Vielen Dank, b8x..!
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
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!
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
1
ADDL0x00;
und
1
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!
http://www.atmel.com/dyn/resources/prod_documents/doc4182.pdf
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
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