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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.