Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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: > <code>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; > }</code> > Hier gibts nämlich eine Unstimmigkeit mit den Angaben des Datenblatts. > > Versuch mal folgendes: > <code>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; > }</code> > > > > 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 \CC2\icdata\) > 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.