Forum: Mikrocontroller und Digitale Elektronik MPLAB delay und xtalfreq richtig benutzen


von Max M. (Firma: FOS FFB) (richtigguteszeug)


Angehängte Dateien:

Lesenswert?

Hallo,
Beim Programmieren fällt mir auf, dass sich der delay größer wird wenn 
ich die Frequenz größer einstelle obwohl beides mal die angegeben Anzahl 
an ms abgewartet werden sollte. Welche Einstellungen muss man treffen um 
einen richtigen delay zu erhalten. Benutze PIC16F1939. Angegen ist ein 
breites Spektrum an Frequenzen.

von Volker S. (vloki)


Lesenswert?

_XTAL_FREQ  stell gar nichts ein!

Damit sagst du dem Compiler lediglich was du für einen internen 
Oszillatortakt eingestellt, bzw. was du für einen externen 
Oszillator/Quarz/Resonator angeschlossen hast.

Aufgrund deiner "korrekten" Angabe kann dann der Compiler dann die 
erforderlichen Zählschleifen für die im Code aufgerufenen _delay... 
Makros berechnen.

von Max M. (Firma: FOS FFB) (richtigguteszeug)


Lesenswert?

Danke für die Antwort. Aber wie mache ich das ohne Fehler zu erhalten? 
Ich kann das Programm nicht auf den PIC-Controller pressen wenn keine 
_XTAL_FREQ eingestellt ist.

von Teo D. (teoderix)


Lesenswert?

Max M. schrieb:
> Danke für die Antwort. Aber wie mache ich das ohne Fehler zu erhalten?
> Ich kann das Programm nicht auf den PIC-Controller pressen wenn keine
> _XTAL_FREQ eingestellt ist.

Hää... Was ist "das" und "Programm pressen"?-O

Geh mal in dich und formuliere zumindest irgend was verständliches!

Max M. schrieb:
> Welche Einstellungen muss man treffen um
> einen richtigen delay zu erhalten.

_XTAL_FREQ einen korrekten Wert geben. Also die Frequenz mit der der µC 
arbeitet.
100% genau wird __delay_xy(fu) aber nie, ist immer nur so ungefähr die 
eingestellte Zeit.

von Volker S. (vloki)


Lesenswert?

Max M. schrieb:
> Aber wie mache ich das ohne Fehler zu erhalten?

Max M. schrieb:
> Angegen ist ein
> breites Spektrum an Frequenzen.

Falls du noch gar keine eingestellt hast, dann mach das mal zuerst. 
Danach kannst du deine Einstellung mittels dem _XTAL_FREQ Makro dem 
Compiler übermitteln.

von Toxic (Gast)


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

Max M. schrieb:
> Ich kann das Programm nicht auf den PIC-Controller pressen wenn keine
> _XTAL_FREQ eingestellt ist.

Deshalb sollst du _XTAL_FREQ auf den Wert setzen, mit der dein µC läuft.

von Max M. (Firma: FOS FFB) (richtigguteszeug)


Lesenswert?

> Hää... Was ist "das" und "Programm pressen"?-O
>
> Geh mal in dich und formuliere zumindest irgend was verständliches!
> _XTAL_FREQ einen korrekten Wert geben. Also die Frequenz mit der der µC
> arbeitet.
> 100% genau wird __delay_xy(fu) aber nie, ist immer nur so ungefähr die
> eingestellte Zeit.

Ich meinte, damit dass ich von MPLAB ein Fehlermeldung bekomme und das 
Programm nicht auf den MCU laden kann, wenn keine _XTAL_FREQ eingestellt 
ist

von Max M. (Firma: FOS FFB) (richtigguteszeug)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> Max M. schrieb:
>> Ich kann das Programm nicht auf den PIC-Controller pressen wenn keine
>> _XTAL_FREQ eingestellt ist.
>
> Deshalb sollst du _XTAL_FREQ auf den Wert setzen, mit der dein µC läuft.

Welchen Wert muss ich dafür einstellen? Keine der im Datenblatt 
angegebenen Frequenzen führt zu einem vernünftigen Delay.

von Volker S. (vloki)


Lesenswert?

Guggschd du:

5.6 Register Definitions: Oscillator Control
...
0111 = xxx xHz xF (default upon Reset)


Da kann man sehen, man was eingestellt ist solange man selber nicht
dazu in der Lage ist, es nach seinen Wünschen zu ändern...

von Wolfgang (Gast)


Lesenswert?

Max M. schrieb:
> Welchen Wert muss ich dafür einstellen? Keine der im Datenblatt
> angegebenen Frequenzen führt zu einem vernünftigen Delay.

Du musst nicht ins Datenblatt, sondern auf deine Platine gucken.

von Volker S. (vloki)


Lesenswert?

Wolfgang schrieb:
> Du musst nicht ins Datenblatt, sondern auf deine Platine gucken.

Steht auf der Platine wie der interne Oszillator eingestellt ist?

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.