WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Anfängerfragen (http://www.wcm.at/forum/forumdisplay.php?f=29)
-   -   Microcontroller LED's TESTEN (http://www.wcm.at/forum/showthread.php?t=210969)

ironeve 27.02.2007 18:21

Microcontroller LED's TESTEN
 
Hallo Helfer.

euer Forum gefällt mir. sind mehr als ein paar sehr schlaue leute drin die immerwieder gute tips geben. :-)

Ich möchte gerne mit dem Programm
µvision meine LED's die am Port 3 von meinem Prozessor angschlossen sind ansteuern. Das bedeutet ich möchte infach mal sehen ob sie angehen oder ob ich ein lauflicht machen kann usw..

nun habe ich aber nicht so viel ahnung mit C und C++. :confused:

Mein Prozessor ist der Infineon XC888CM
Ich kann die Programme mit DAVE oder µvision schreiben und dann mit dem USP-To JTAG BOX updaten.

wie heissen die befehle für LED ein/aus und wie soll ich eine schleife machen fürs lauflicht..
meine LEDs sind an Port 3.1 bis 3.3 angeschlossen.

wie initialisiere ich am anfag welche LED's an und aus sein sollen?

braucht ihr noch mehr info?
ich bednakne mich für eure hilfe.

Toni:confused:

kefali 28.02.2007 09:11

Also wenn du die Programme mit DAVE oder µvision schreiben kannst (wie du sagst), was willst du dann mit C oder C++ ?

Was hast du für ein Interface an deinem Prozessor?

Meiner Meinung nach hast du ein für Basteleien nicht sehr geeignetes Instrumentarium.

Ein Lauflicht (wieviel LEDs?) wird mit einem ein Schieberegister nachbildenden Programm verwirklicht, das in dem von dir gewünschten Takt das Port 3 ansteuert.

Ob das Port dann direkt die LEDs ansteuern kann, bzw. ein Interface (Hardware) erforderlich ist, sagt dir das Datenblatt deines Prozessors.

Erikly 28.02.2007 10:47

Kannst du ma schaun, ob du vielleicht auch mit Assembler programmieren kannst...dann kann ich dir vielleicht helfen

Grüße Erikly

Matt00 28.02.2007 13:35

genau, assembler ist die lösung! ich glaube die befehle SETB P3.1 und CLR P3.1 sind fürs setzen und löschen!

Erikly 28.02.2007 14:21

Hmm, ich weiß jetzt nicht genau wies beim normalen PC is, aber ich kenne das Aktivieren eines Ports anders.

Ich habs im Moment leider nicht exakt im Kopf...muss ich auch erst nachschauen.

Auf jeden Fall gibts zu jedem Port bestimmte Register.
Zu Port P3 gibts zum Beispiel das Register P3OUT, P3DIR, usw.
Wenn mich nicht alles täuscht konnte man mit dem PXOUT Register den jeweiligen Port aktivieren, also da ne 1 setzen.
Wenn dein LED beispielsweise am P3.1 angeschlossen ist, würdest du das folgendermaßen aktivieren:

bis.b #BIT1,&P3OUT

das BIT1 bezieht sich auf das P3.!1!

Du setzt also in das Register P3OUT mit dem Befehl bis (Bit set) an die 2. stelle von rechts(BIT1) ne logische 1.
Wenn nun dein LED am P3.1 angeschlossen is, müsste es leuchten.

Wie gesagt, ich weiß nicht genau, ob das beim PC genauso is, wie beispielsweise beim Mikrocontroller.


Grüße Erikly

ironeve 28.02.2007 18:35

Hi Leute

Danke für Eure schnelle Antwort.Ich merke schon ich habe es hier mit Experten zu tuen.

Also mit Dave bereite ich das Projekt vor. Ich kann z.B die Ports definieren, Timer, ADC, UART usw und starte es in µVision als Projekt. Dann sind schon die ganzen Header Dateien schon da was ich brauche.

Im µVision kann ich C, C++ oder Assmebler programmieren ..nur ich kann ja nicht programmieren.

ich hab euch mal eine ZIP datei angehängt.

gestern habe ich das ausprobiert. mit P3_DATA kann ich z.B meine LED Kombination einschalten.
void main( void )
{


P3_PUDSEL= 0xFF; //load pullup/pulldown select register
P3_PUDEN=0x0; //load pullup/pulldown enable register
P3_DIR=15; //load direction register 11111111
P3_DATA=10; //Nun leuchten die LED's 1010
//Beispiele Dezimal 15=1111; 5=0101
}

Wie kann ich jetzt z.B mit eine FOR-Schleife einen Lauflicht darstellen?
unsigned int i;
for (i=0;i<255;i++)
{
P3_DATA++
}

so nicht oder?

wenn ihr die zip datei nicht öffnen könnt bzw die daten in der zipdatei ..dann kann ich es euch auch schicken.

nochmals danke
Toni

ironeve 06.03.2007 23:22

Hallo an alle die mir wegen dem LED Problem geschrieben haben

Ich konnte das Problem mit eine kleine FOR-Schleife lösen.
Jetzt laufen die LED's wie ein Lauflicht..

DANKE NOCHMALS
Toni

P.S.: Wie kann ich diesen Beitrag als erledigt markieren.?


P3_DIR = 0xFF; // load direction register
P3_PUDSEL = 0xFF; // load pullup/pulldown select register
P3_PUDEN = 0x00; // load pullup/pulldown enable register

while(1)
{
for (y=0;y<0x256;y++)
{
for (i=0;i<50000;i++)
{
P3_DATA=y;
}
y=y*2;
}
}


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag