www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik suche "delay" für PIC(C18) alternative zu GCC


Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

suche für mein C18 PIC Projekt eine alternative, wie man es aus dem GCC 
kennt.
die "Delay1KTCYx(42)" ist für mich sehr umständlich.

die Funktion delay_ms(500) oder __delay_us(1000) wäre sehr gut.

danke in voraus
gruß Siegfried

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include "delays.h"                       // für die Warteschleife

Wir benutzen die Funktion Delay10KTCYx() aus der delay-Library. Da wir 
am Programmanfang die Header-Datei dieser Library eingebunden haben, 
kennt der Compiler diese Routine, und ihren Übergabeparameter. Die 
delay-Library ist eine fertig compilierte Lib-Datei im lib-Unterordner.

Die Funktion Delay10KTCYx() ist eine Warteschleife, ihre Laufzeit ist 
10000 Zyklen x übergebenem Wert. Da wir 100 als Wert übergeben, ergibt 
sich eine Laufzeit von 100x10000=1000000 Zyklen. 1 Million Zyklen sind 4 
Millionen Takte. Bei 20 MHz Takt ergibt sich 1/5 Sekunde Wartezeit.


    Delay10KTCYx(100);


Weiter Möglichkeieten:

Delay1TCY Delay one instruction cycle.
Delay10TCYx Delay in multiples of 10 instruction cycles.
Delay100TCYx Delay in multiples of 100 instruction cycles.
Delay1KTCYx Delay in multiples of 1,000 instruction cycles.
Delay10KTCYx Delay in multiples of 10,000 instruction cycles.

Alles andere ist eigentlich Compilerabhänging z.B. ob des Delay_ms() 
oder Ähnliches gibt. Ich kann dir leider nicht beantworten ob der C18 
das schon kann.

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
soweit verstanden. "delays.h" habe ich zur zeit eingebunden. wollte es 
nur einfacher haben.


     Delay100TCYx(1);

versuche mal ein Beispiel, hoffe das es in ordnung ist.

  1 x 100 = 100 Zyklen  entspricht 400 Takte

  bei 20MHz ist das 50.000 entspricht 0,00002s / 20ns

ups....   schreibfehler
              0,00002s  /  20µs
gruß
siegfried

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siegfried Saueressig schrieb:
> hallo,
> soweit verstanden. "delays.h" habe ich zur zeit eingebunden. wollte es
> nur einfacher haben.

Hallo siegfried,

warum schreibst du dir nicht einfach ein mydelay ?

Gruss Reinhard

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

Delay100TCYx(  XXX  );

wie groß darf der Wert " XXX " in der Delay100TCYx(xxx) Funktion sein?

bis 255  oder 65536 ?

gruß Siegfried

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.