Hi, ich habe hier einen PIC18F23K22, der auf 16 MHz läuft. Ein daran angeschlossener DAC will zwischen zwei Schreibzyklen die /SYNC-Leitung getoggelt haben, diese muss dabei für mindestens 15 nsec auf HIGH sein. Jetzt bietet der PIC maximal eine Funktion __delay_us(), welche viel zu lange warten und dabei jede Menge Zeit verschwenden würde. Wie geht es besser? Einfach Output setzen und sofort wieder Löschen, weil das beim PIC eh' lange genug dauert, um die 15 nsec einzuhalten? Oder ist ein NOP dazwischen nötig? Danke!
Svenson schrieb: > Wie geht es besser? Einfach Output setzen und sofort wieder Löschen, > weil das beim PIC eh' lange genug dauert, um die 15 nsec einzuhalten? > Oder ist ein NOP dazwischen nötig? Na aber.... Wen interessiert's schon, wie die 15ns zustandekommen... Wenn's so eng ist setze ich noch ein angst NOP ein.
Svenson schrieb: > ich habe hier einen PIC18F23K22, der auf 16 MHz läuft. 16MHz Oszillatorfrequenz oder schon 1/(instruction cycle)? (wäre hier natürlich egal...) Svenson schrieb: > Einfach Output setzen und sofort wieder Löschen, > weil das beim PIC eh' lange genug dauert, um die 15 nsec einzuhalten? > Oder ist ein NOP dazwischen nötig? Kannst du das nicht selber ausrechnen? Versuche es doch mal und poste dein Ergebnis... Svenson schrieb: > Ein daran > angeschlossener DAC will zwischen zwei Schreibzyklen die /SYNC-Leitung > getoggelt haben, diese muss dabei für mindestens 15 nsec auf HIGH sein. Ist wohl ein DAC mit SPI Interface? Welcher?
:
Bearbeitet durch User
Volker S. schrieb: > Kannst du das nicht selber ausrechnen? > Versuche es doch mal und poste dein Ergebnis... Ausrechnen kann ich mir das, ich weiß aber nicht, was der PIC beim Setzen und sofortigen Löschen eines Outputs macht. Ist das ohne Delay zu schnell und der Pin bleibt einfach gelöscht? Ist eine GPIO-Schreiboperation generell irgendwie "langsam" - wenn ja, wie lange dauert das, bis ein Signal tatsächlich auf der Leitung ankommt? > Ist wohl ein DAC mit SPI Interface? Welcher? Es ist der AD5663
Svenson schrieb: > Ausrechnen kann ich mir das, ich weiß aber nicht, was der PIC beim > Setzen und sofortigen Löschen eines Outputs macht. Wie soll das "sofortige Löschen" denn vonstatten gehen? Wenn es optimal läuft, wird in einem Zyklus wird gesetzt und im nächsten gelöscht. Nehmen wir der Einfachheit halber mal an es dauert (am Pin) genau gleich lang wenn das Signal von Low nach High geändert wird wie umgekehrt. (Laufzeiten, Last am Pin...) Das Signal wäre dann mindestens einen Zyklus lang High. Wie lang wäre das?
Svenson schrieb: > wie lange > dauert das, bis ein Signal tatsächlich auf der Leitung ankommt? Dabla ab Seite 449.
Für den /SYNC eher (TioR, TioF): FIGURE 27-8: CLKOUT AND I/O TIMING TABLE 27-10: CLKOUT AND I/O TIMING REQUIREMENTS
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.