Forum: Mikrocontroller und Digitale Elektronik Problem I/O C8051f020


von kay (Gast)


Lesenswert?

Grüezi mitenand,
Ich habe ein kleines Problem mit meinem Mikocontroller, ich besitze ein 
C8051F020 DEVELOPMENT KIT, nun habe ich ein kleines Programm geschrieben 
in welchem ich einzelne bits von Port2 setze ( damit werden später 
pumpen angesteuert ) Nun wenn ich das ganze arbeite lasse habe ich an 
allen! Ports ein undefinierbares signal :) wollte nun fragen ob das an 
meinem Code liegt oder ob der uP zerstört ist:(
 Hier der Code :


#include "C8051F020.h"

sbit Sensor11 = P2^0;                 // Definition Port
sbit Sensor12 = P2^1;                 // Definition Port
sbit Sensor21 = P2^2;                 // Definition Port
sbit Sensor22 = P2^3;                 // Definition Port
sbit Sensor31 = P2^4;                 // Definition Port
sbit Sensor32 = P2^5;                 // Definition Port

void Port_IO_Init()
{

    P1MDIN    = 0xC0;
    P2MDOUT   = 0xFF;
    XBR2      = 0x40;

}



// Hauptprogramm


void main(void)
{
    do
    {
      Port_IO_Init();
      Sensor11 = 1;
      Sensor12 = 1:

          } while(1);

}

Wäre recht froh für eine kleine Hilfestellung oder Anregung
Grüsse
Kay

von Sascha (Gast)


Lesenswert?

Hallo Kay,
verwendest du den Configuration Wizard II ? (ist dafur echt klasse).
Ist die Crossbar aktiv ?
Sind die Ausgänge auf Push/Pull ?
Dann müsste es eigentlich gehen.
Schreib mal direkt auf den Port, P2=0xXX
Ist die Watchdog deaktiviert ?
Halte den Chip mal auf Reset dann müssen sie alle im Tristate Mode oder 
Pullup Mode sein.
Ich arbeite sehr viel mit Silab und Probleme habe ich damit wenig.
Gruß Sascha

von kay (Gast)


Lesenswert?

Ja ich verwende den Configuration Wizard II,
Crossbar ist auch aktiv,
Die Ausgänge sind als PushPull definiert.
Du meinst P2 = 0xFF, wenn ja habe ich ausprobiert, geht leider trotzdem 
nix.
Watchdog habe ich jetzt hinzugefügt : WDTCN = 0xDE
Trotzdem geht nix auch das der Reset button bringt keine änderung.
Was ich aber komisch finde ist dass die beispielprogramme 
funktionnieren.

von Ralf (Gast)


Lesenswert?

Hi Kay,

> Watchdog habe ich jetzt hinzugefügt : WDTCN = 0xDE
Das ist aber nur die Hälfte, da fehlt noch 0xAD dahinter.

> Die Ausgänge sind als PushPull definiert.
Was hängt aktuell dran? Nicht dass auf dem Evalkit was angeschlossen 
ist, was den Ports nicht guttut, vielleicht ist ein Jumper falsch 
gesetzt.

> Trotzdem geht nix auch das der Reset button bringt keine änderung.
Der sollte auch nicht als Mittel um etwas funktionsfähig zu bekommen in 
Betracht gezogen werden :)

> Was ich aber komisch finde ist dass die beispielprogramme
> funktionnieren.
Das lässt die Vermutung aufkommen dass die MCU nicht zerstört ist.

Ralf

von kay (Gast)


Lesenswert?

Hallo Ralf,

Stimmt habe ich übersehen, hat aber leider nichts geändert.
Da ich noch am ausprobieren bin, hängt noch nichts an den Ports, nur ein 
KO um die Pegel die eigentlich an den Ports sein sollten zu überprüfen.
An den Jumpers habe ich nichts geändert sind alle so wie das Kit 
ausgeliefert wurden. hast du evtl. eine Ahnung welcher Jumper einen 
Einfluss auf die I/O's hat ?

Gruss,
Kay

von Ralf (Gast)


Lesenswert?

> Stimmt habe ich übersehen, hat aber leider nichts geändert.
Klar, denn die Ports sind nach einem Reset immer auf logisch 1. Da du 
eine 1 reinschreibst wird sich auch nichts ändern.
Wenn du die Ports in der MainLoop invertierst müsstest du ein 
Rechtecksignal sehen.

> Da ich noch am ausprobieren bin, hängt noch nichts an den Ports, nur ein
> KO um die Pegel die eigentlich an den Ports sein sollten zu überprüfen.
Was ist ein KO?
Von wo nach wo misst du? Und was genau kommt bei der Messung raus?

> An den Jumpers habe ich nichts geändert sind alle so wie das Kit
> ausgeliefert wurden. hast du evtl. eine Ahnung welcher Jumper einen
> Einfluss auf die I/O's hat ?
Nein, nicht auswendig -> Im UserGuide zum Board ist ein Schaltplan.

Ralf

von dave_chappelle (Gast)


Lesenswert?

Huhu
1
 #include "C8051F020.h"
2
3
sbit Sensor11 = P2^0;                 // Definition Port
4
sbit Sensor12 = P2^1;                 // Definition Port
5
sbit Sensor21 = P2^2;                 // Definition Port
6
sbit Sensor22 = P2^3;                 // Definition Port
7
sbit Sensor31 = P2^4;                 // Definition Port
8
sbit Sensor32 = P2^5;                 // Definition Port
9
10
11
12
 void Port_IO_Init()
13
{
14
     
15
  WDTCN   = 0xDE;    //Watchdog disable (ermöglicht Debugging)
16
  WDTCN   = 0xAD;
17
  P2MDOUT = 0xFF;    //Port2 als Ausgang definiert
18
        XBR0    = 0x10;
19
        XBR2    = 0x40;         //Crossbar enable      
20
 }
21
22
23
24
  void main (void)
25
 {    
26
    
27
  
28
  Port_IO_Init();
29
30
   //Programm hier 
31
32
33
 }

Wenn das nicht funktioniert, ist definitiv etwas nicht in Ordnung.
Habe genau das gleiche Kit :-)

von kay (Gast)


Lesenswert?

Danke Ihr netten Leute , es funktionniert endlich :D

grüsse,
kay

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.