Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Problem mit TLC549 Kategorie: Programmierung (von André H. - 22.07.2006 16:26)
Als Antwort auf Re: Problem mit TLC549 von Marc - 20.07.2006 10:56
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
Hallo Marc,

> Ich glaube nicht, dass da irgend eine Funktion meinen Programmablauf stört. Es scheint eher so, als wäre
> die CC II Unit zu langsam.

DaÃ? etwas zu langsam ist, glaube ich nicht.
Ich habe mir einmal das Datenblatt des ICs angesehen. Es scheint nicht so,
da� der TLC549 einen Mindesttakt benötigt.
Ich glaube eher, daÃ? der Fehler eher in der Routine read() liegt:
function read() returns int
{
 int cnt, val;
 cnt = 0; val=0;  //<= Das brauchst Du nicht
 ports.set(CLK,0b0);
 ports.set(CS,0b0);
 val = -ports.get(DATA);
 for cnt = 1...7
 {
  ports.pulse(CLK);
  val = (val shl 1) - ports.get(DATA);
 }
 ports.toggle(CLK);
 ports.set(CS,0b1);       //<=Und zwar hier
 ports.toggle(CLK);
 return val;
}

Hier gibts nämlich eine Unstimmigkeit mit den Angaben des Datenblatts.

Versuch mal folgendes:
function read() returns int
{
 int cnt, val;
 ports.set(CLK,0b0);
 ports.set(CS,0b0);
 val = -ports.get(DATA);
 for cnt = 1...7
 {
  ports.pulse(CLK);
  val = (val shl 1) - ports.get(DATA);
 }
 ports.pulse(CLK);
 ports.set(CS,0b1);
 return val;
}



> Wäre vlt. sinnvoll das Programm bzw. die Funktionen in ASM oder in C zu schreiben, um den Systemtakt
> voll ausnutzen zu können.
> Hätte da vlt. jemand eine Idee, wie ich möglichst simpel (ohne Timer) nen µ-Sekunden delay realisieren
> könnte? Am besten wär ein Delay von 0.4µsec, 0.8µsec und 17µsec.
> Ich hab schon im netz und im Datenblatt des C166 nachgeschaut, obs da ne Angabe für die benötigten
> Taktzyklen jeder Instruktion des Prozessors gibt. Bin allerdings nicht fündig geworden.

Das einfachste sind Schleifen.
Aber exakte Zeiten kommen hier nicht raus, da schlieÃ?lich eine Reihe von Interrupts
abgearbeitet werden.
Gehe aber mal davon aus, da� alles, was im Nano-Sekunden-Bereich an nötigen
Delay gemacht werden mü�te, hier ignoriert bzw. mit einem nop erledigt werden kann.
Die CC2 arbeitet mit 20MHz. Die meisten Befehle benötigen 2 Taktzyklen.
Durch den externen Bus, an dem der Flash und der RAM hängen, wird es etwas langsamer.
AufschluÃ? sollte das Kapitel 4.3 Instruction State Times im C164CI Manual geben.
(Auf der CC2-CD unter CC2icdata)
Da die CC2 mit einem 16-Bit-MUX-Bus arbeitet, benötigen alle Befehle bestehend aus
2 Byte, auÃ?er Multiplikation, Division und ein paar Sprungbefehle, 3 Takte.
Bei 4Byte-Instruktionen entsprechend 6 Takte.
Beachte aber, da� sich wegen der 4-Stage-Pipeline die Zeiten etwas ändern,
wenn Sprungbefehle enthalten sind.

Aber eine ganz blöde Frage:
Warum nimmst Du nicht einfach den AD-Wandler der CC2 ?
Sind alle AD-Eingänge schon belegt, oder brauchst Du eine andere Referenzspannung?

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Problem mit TLC549 (von Marc Priggemeyer - 25.07.2006 20:48)
    Re: Problem mit TLC549 (von André H. - 31.07.2006 8:59)