Forum: Mikrocontroller und Digitale Elektronik PIC18F23K22 Delay


von Svenson (Gast)


Lesenswert?

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!

von Teo D. (teoderix)


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

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
von Svenson (Gast)


Lesenswert?

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

von Volker S. (vloki)


Lesenswert?

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?

von Teo D. (teoderix)


Lesenswert?

Svenson schrieb:
> wie lange
> dauert das, bis ein Signal tatsächlich auf der Leitung ankommt?

Dabla ab Seite 449.

von Volker S. (vloki)


Lesenswert?

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
Noch kein Account? Hier anmelden.