Forum: Mikrocontroller und Digitale Elektronik Programmierung C515C


von Maxi M. (keksii)


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++);
}

von Bensch (Gast)


Lesenswert?

Dsa Hauptproblem ist, das Teil ist schon lange nicht mehr lieferbar. Wer 
dafür noch kommerzielle Programme schreibt, dem ist wohl kaum zu 
helfen....

von Michael Wilhelm (Gast)


Lesenswert?

Unüblich eine Initialisierung in die Endlosschleife zu setzen.

MW

von Robert T. (robertteufel)


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

von Bensch (Gast)


Lesenswert?

Sprechen wir über den SAB-C515 ? Der wird seit 2 Jahren nicht mehr 
produziert- die ganze Familie ist tot.

von Tobi (Gast)


Lesenswert?

Hi!

Das interne SRAM wird wohl nicht freigegeben. Evtl. brauchst du das ja.
SYSCON&=0xFC aktiviert des interne SRAM

von Peter D. (peda)


Lesenswert?

Bensch wrote:
> Sprechen wir über den SAB-C515 ? Der wird seit 2 Jahren nicht mehr
> produziert- die ganze Familie ist tot.

Bei Infinoen steht aber noch "in production"

http://www.infineon.com/cms/de/product/channel.html?channel=ff80808112ab681d0112ab6b813c0863


Peter

von Bensch (Gast)


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.

von Matthias (Gast)


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.

von Maxi M. (keksii)


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

von Robert T. (robertteufel)


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

von Maxi M. (keksii)


Lesenswert?

hallo zusammen,

leider funktioniert es immer noch nicht, es sind sowohl EN1 als auch 
DIS1 auf high und ich bekomm DIS1 nicht auf low.
Habt ihr noch ein paar tips für mich?

Vielen Dnak, maxi

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.