Re: Problem mit TLC549 Kategorie: Programmierung (von Marc Priggemeyer - 25.07.2006 20:48) | ||
Als Antwort auf Re: Problem mit TLC549 von André H. - 22.07.2006 16:26 | ||
| ||
> 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; > } > Hm. So hab ich es vorher auch schon probiert. Allerdings auch mit nem schlechten Ergebnis. Wäre ja theoretisch möglich das die beiden vorletzten Zeilen Code ports.pulse(CLK); ports.set(CS,0b1); die Probleme machen, wenn die C-Control nach dem pulse von CLK einen anderen Thread abarbeitet (Ich hab zwar selbst keinen festgelegt, aber da gibts bestimmt irgendwelche Systemfunktionen oder Interrupts). Würde es vlt. helfen hier die Priorität auf die höchste zu Stellen und alle Interrupts (au�er reset) zu deaktivieren? Im AVR-µC läufts nämlich (in einer 1zu1 �bersetzung) einwandfrei. > > 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. Ich werd nochmal ins Datenblatt schauen. > 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? Ich brauch eine höhere Wandlungsgeschwindigkeit von analog zu digital. Ich hab hier ein CCD-Modul aus ner Gameboy-Camera, das ich gerne Abfragen möchte. Wäre aber vlt. auch sinnvoll dafür eine Steuerungselektronik aufzubauen, welche dann die Pixel- Daten der Kamera abfragt, Funktionen zum sezten der Einstellungen des CCD bereitstellt und quasi als Schnittstelle zwischen CC2 und CCD fungiert. Dann könnte ich die C-Control zur Verwaltung der Bilder einsetzen. Ich möchte nämlich gerne mehrere Kameras (min. 6)verwalten. Hast du da vlt. irgendwelche Vorschläge? | ||
Antwort schreiben Antworten: Re: Problem mit TLC549 (von André H. - 31.07.2006 8:59) |