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 | ||
| ||
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) |