Programmierung C515C

OP #773098
Lesenswert?

Hallo Leute,

ich muss für die Arbeit einen C515C programmieren, hab aber leider davor 
noch nie damit zu tun gehabt.

Mein Problem ist, der C515C soll 4 H-Brücken initialisieren und DIS1 auf 
low und EN1 auf high setzten.
Klingt für euch vielleicht nicht schwer, aber ich schaffs einfach nicht.
Unten steht mein Code (bitte nicht lachen). Könnt ihr mir weiterhelfen, 
was mach ich falsch?

#include <stdio.h>
#include <reg515c.h>
#include <c5x5cext.h>


void ssi_init (void);      // Initialisierung SSI
void zeit (void);        // Wartefunktion
void TLE7209R_init (char EN1, char DIS1);  // Initialisierung H-Brücken


sbit CS1  = P4^0;          // bitdefenition
sbit SI   = P4^2;
sbit SO   = P4^3;
sbit CS2  = P4^4;
sbit CS3  = P4^5;
sbit CS4  = P1^0;
sbit CS5  = P1^1;
sbit CS6  = P5^0;
sbit CS7  = P5^1;
sbit DMS1 = P5^2;
sbit DMS2 = P5^3;
sbit DMS3 = P5^4;
sbit DMS4 = P5^5;
sbit DIS1 = P5^6;
sbit EN1  = P5^7;


void main (void)
{

while (1)

{

SSCCON &= 0x00;    // deaktivierung ssi und alle bits auf 0
SYSCON |= 0x07;   // setze das 6te bit für bidirectional port structur
IP1 |= 0x08;  // setze 7te bit um mit DIR5 in output modus zu gehen
DIR5 &= 0x00;  // output modus  Port5

ssi_init ();

SSCCON |= 0x08;  // aktivierung ssi

DMS1 = 0; DMS2 = 0; DMS3 = 0; DMS4 = 0; EN1= 1; DIS1= 0;

TLE7209R_init (EN1, DIS1);


}
}


void ssi_init ()
{


  SSCCON |= 0x06;
  SSCCON |= 0x02;
  SSCCON |= 0x03;
  SSCCON = 0x40;
  STB = 0;
  SRB = 0;
  SCF = 0;


}

void TLE7209R_init (char EN1, char DIS1)
{
  CS3 = 0; CS4 = 0; CS5 = 0; CS6 = 0;

  zeit (); zeit ();

  SCF &= 0xFE;
  STB = EN1;

while (!(SCF |= 0x01));

  SCF &= 0xFE;
  STB = DIS1;

while (!(SCF |= 0x01));

  zeit ();
  zeit ();


  CS3 = 1; CS4 = 1; CS5 = 1; CS6 = 1;


  zeit ();
  zeit ();

}

void zeit ()
{
  unsigned int x;
  for(x=0;x<=30000;x++);
}
#773292
Lesenswert?

@Bensch,
kein Beitrag ist definitiv mehr wert als ein falscher. C515C gibts nach 
wie vor. Ob ich den nehmen wuerde ist ne andere Frage aber es gibt oft 
Sachzwaenge.
Hab gerade mal auf der Infineon Seite nachgesehen, da gabs frueher 
Application Notes dazu aber jetzt ist das alles recht 
gewoehnungsbeduerftig arrangiert. Konnte nichts finden, sorry

Robert
Gast #773356
Lesenswert?

Wundert mich, weil die mir damals eine "last order" Mitteilung geschickt 
haben. Möglicherweise hat ein Grosskunde interveniert, sodass sie doch 
noch EINE Version produzieren in QFP und 10MHz.

Für mich war's allerdings eine gute Gelegenheit, dem Kunden ein 
Neudesign in SMD mit Mega32 zu empfehlen, heute ist er froh drüber.
Gast #773359
Lesenswert?

@Maxi

>SSCCON &= 0x00;    // deaktivierung ssi und alle bits auf 0
>SYSCON |= 0x07;   // setze das 6te bit für bidirectional port structur
>IP1 |= 0x08;  // setze 7te bit um mit DIR5 in output modus zu gehen
>DIR5 &= 0x00;  // output modus  Port5

Hier könnte das Problem liegen. DIR5 liegt im Mapped-SFR Block, IP1 im 
Standard-SFR Bereich. Schau Dir mal das RMAP Bit in SYSCON genauer an. 
So wie jetzt erreichst Du DIR5 nicht, musst erst noch RMAP setzen.

Und die die Initialisierung im MAIN darf nicht in die While-Schleife, 
wie schon geschrieben wurde.
OP #773398
Lesenswert?

danke erstmal an alle.
Ja meine Idee is der C515C auch nicht leider is der schon verbaut und 
wird nicht gewechselt werden.

Ich werd mal eure Tips befolgen und mich morgen melden. War schon mal 
sehr hilfreich.

Wie gesagt ich hab so ein Ding noch nie Programmiert, somit wusste ich 
dass mit der Endlosschleife nicht, danke nochmal.

Schönen Tag euch noch, maxi
#773805
Lesenswert?

C515C und C515, 80C5xx waren nicht pin-kompatibel. Der C515C ist auch in 
einer anderen Technologie gefertigt als die anderen 80C5xx und C515 war. 
Die ganzen abgekuendigten waren im 68-pin Gehaeuse, den C515C gab es 
nicht in diesem Gehaeuse, er ist in einem 80-pin QFP und der einzige 
dieser Reihe mit CAN.
Also schlicht und ergreifend dieser Baustein ist ein anderer als die 
abgekuendigten und das mit dem Grosskunden ist wahrscheinlich auch 
korrekt.

Robert

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren