PIC18F23K22 Delay

Gast #5176955
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!
#5176968
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?
Gast #5176974
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
#5176979
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren