PIC16F887: Interne oscillator calibreren in PICBASIC

Hoi,

Weet iemand misschien hoe je de interne oscillator kan calibreren van de PIC16F887 in PICBASIC?

Alvast bedankt.

Had je al op picbasic les 4 gekeken? :

OSCCAL (= oscillator callibration)
De snelheid van een PIC die loopt op zijn interne oscillator is dus lang zo nauwkeurig niet dan een PIC die draait op een kristal of resonator, maar nauwkeurigheid is ook niet altijd nodig.
Bij sommige PIC types is de interne oscillator te kalibreren (= fijner af te regelen) (helaas niet mogelijk bij de 16F628A).
Let op, dat is wat anders dan de besproken instelbare snelheid van interne oscillatoren die sommige PIC types hebben.
Het afregelen (kalibreren) gebeurt met OSCCAL = ?, waarbij op de plaats van het vraagteken een waarde van 0 ... 255 kan worden ingevuld.
Zodoende is de onnauwkeurige interne oscillator van de PIC fijner af te regelen.
Let wel, voor iedere PIC kan die waarde anders zijn omdat deze instructie er juist voor is om de toleranties bij de PIC's onderling op te vangen.
Met OSCCAL kun je de frequentie iets hoger of lager instellen om op (bijna) precies 4MHz uit te komen.

Lees deel 4 eens door ;)

887 heeft geen OSCCAL maar een OSCTUNE register, en dat is normaal al af fabriek op beste resultaat ingesteld...

Maar hoe moet ik dit dan in de fuses zetten?

CONFIG OSCTUNE ... ?

Om de PIC op 8MHz te laten werken.

Volgens mij draaien ze intern allemaal op 4MHz, of heb ik het mis.

Dus als je hoger wil moet dat met een X-tal.

Maar de 16F887 heeft een programmeerbare interne oscillator..

Ik weet niet goed welke fuses ik hiervoor moet zetten, kan iemand mij misschien helpen?

Op 31 december 2009 14:57:49 schreef FMtransmitter:
Maar hoe moet ik dit dan in de fuses zetten?

CONFIG OSCTUNE ... ?

Om de PIC op 8MHz te laten werken.

Het nut van OSCCAL en OSCTUNE ontgaat je nog helemaal. Daar stel je geen oscillator mee in maar bij.

Als je in je pdf viewer de index aanzet dan spring je binnen een paar tellen naar het juiste hoofdstuk van de datasheet.

hallo,

en hoe moet je deze dan juist ingeven in basic?
en hoe moet je de rest hiervan configureren?

fmtransmitter en ik werken hieraan samen.

alvast bedankt
jean

Zie datasheet, nog steeds diezelfde pagina's.
-Config op interne osc zetten
-OSCCON register zetten voor 8 MHz.

[Bericht gewijzigd door Henry S. op (16%)]

en hoe moet je deze config dan instellen?

osccon = 8 of osccon = 111 welke moet ik hiervoor gebruiken?

jean

Op 2 januari 2010 20:24:21 schreef elektrojean:
en hoe moet je deze config dan instellen?

Zie datasheet, sorry hoor maar dit is de eerste stap om met deze µC te kunnen werken. Anders meer oefenen met een simpeler model.

osccon = 8 of osccon = 111 welke moet ik hiervoor gebruiken?

Net als andere registers, zoveel mogelijk in binair, wijst zich vanzelf: REGISTER 4-1: OSCCON: OSCILLATOR CONTROL REGISTER

ik kan goed genoeg een pic programeren maar bijdeze loopt het fout bij de configbits.

jean

Post dan eens wat je hebt aan config

het enige wat ik kan programeren zonder fout meldingen is
osccon = 111

vanaf ik config gebruik geeft hij de fout : ...argument out of range

wat moet ik hierjuist aan doen?

jean

Op 2 januari 2010 20:40:17 schreef Henry S.:
Post dan eens wat je hebt aan config

En post OSCCON in binair...

Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
osccon = 111
of bedoel je
osccon = 1110101

dat is wat ik heb maar dan met vorige fout

[Bericht gewijzigd door elektrojean op (12%)]

Dat is een 16F628 config... wat is dat toch wat...
Even zoeken

kan jij me dan een geven voor de 887?

kan er niet meer aan uit.

Je moet dus niet OSCCON gebruiken, want daarmee stel je in of je de interne oscillator op 125kHz, 4MHz, 8MHz, enz. wilt laten draaien.
Als je OSCCON niet opgeeft dan draait de 16F887 op 4MHz (default).

Maar jij wilt de interne oscillator kalibreren.
En dat doe je met OSCTUNE.
Zoek dus in de datasheet naar OSCTUNE.


OSCTUNE = %00001111  ;Hoogst mogelijke bijgeregelde snelheid
OSCTUNE = %00001110
           ........
           ........
           ........
OSCTUNE = %00000001
OSCTUNE = %00000000  ;PIC draait op fabrieks gekalibreerde snelheid
OSCTUNE = %00011111
           ........
           ........
           ........
OSCTUNE = %00010000  ;Laagst mogelijke bijgeregelde snelheid

In PICBasic geef je dus simpel op:
OSCTUNE = %00000001 om de PIC iets sneller te laten lopen dan de fabrieks kalibratie.
Of OSCTUNE = %00000010 om de PIC nóg iets sneller te laten lopen, enz.
Tot OSCTUNE = %00001111 de maximaal mogelijk bijregeling naar boven.
Naar beneden bijregelen werkt net zo.

OSCCON hoef je dus niet op te geven als je vindt dat de PIC op 4MHz intern snel genoeg draait.

ok ik zal dit straks eens proberen

hoe moet dann de volledige config van deze pic er gaan uitzien?

device 16F887
............

alvast bedankt
jean

doe zelf eens een poging ;)
leer je t meest van

heb al vanalles geprobeert
vanaf ik de regel config gebruik zit er een fout in.

hoe het wordt uitgelegd in die data sheet over de oscilator kan ik gewoon niet aan uit.

jean

Het beste kun je de fuse configurator eens installeren.
Ik weet namelijk niet wat de wensen allemaal zijn en hoe jij je PIC in wilt stellen.
Die zijn helemaal afhankelijk van hoe jouw project opgebouwd is.
Ik zal proberen of ik vanmiddag op picbasic.nl iets over de fuse configurator kan plaatsen, geduld dus.

ok dat van die fuse configurator ga ik zeker instaleren.

mar kan het goede nieuws melden dat de pic eindelijk werkt en we verder kunnen met programeren.

zo ziet het er nu uit:

Device 16F887
@CONFIG_REQ
@__CONFIG _CONFIG1, DEBUG_OFF & LVP_OFF & FCMEN_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON & WDT_OFF & INTRC_OSC_NOCLKOUT 
@__CONFIG _CONFIG2, WRT_OFF & BOR21V

iedereen bedankt
jean