Hoi,
Weet iemand misschien hoe je de interne oscillator kan calibreren van de PIC16F887 in PICBASIC?
Alvast bedankt.
Fredjuhh
"Ben nog een N00B, maar dat is al aan het veranderen ;)
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 
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
887 heeft geen OSCCAL maar een OSCTUNE register, en dat is normaal al af fabriek op beste resultaat ingesteld...
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?
OK, dat wist ik niet. Kijk hier eens BLZ_63 en 64.
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
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
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
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 snelheidIn 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
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
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
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