Hoe moet ik precies de Interne Oscillator kalibreren ?

Volgens de datasheet


;Bank 1
Call      3FFh
Movwf     OSCCAL

Maar hiermee lijkt mijn programma vast te lopen !

Daar stopt het niet

je hebt misschien een programeerfout gemaakt!
Lees de note die eronder staat .

Ik had het al enkele keren gelezen, maar wordt er (nog) niet veel wijzer van !

Edit:
Programmeer fout is zeker mogelijk, maar zonder dit stukje werkt het progje wel.

[Bericht gewijzigd door MMSoft op ]

zoals ik die notelees:

vanuit de fabriek word een waarde in de pic geprogt op 3fff

deze haal je met die instruckties op en zet je in je oscal

maar als je de pic wist word de waarde op 3fff ook gewist en ben je de calibratie waarde kwijt dus de waarde in oscal klopt dan niet.

als de waarde op 3fff nu eens staat voor geen osc of totale stilstand

jne zou ipv call 3fff
een movlw xxh kunnen doen zodat de waarde van oscal in een geldige waarde verandert en je prog wel doorgaat

je moet voordat je die pic progt dus eerst de waarde van 3fff lezen dan weer in je eigen programma zetten zodat je progger deze weer terugzet.

Helaas, de PIC is al een keer opnieuw beschreven, en dus ook gewist !

Wordt een PIC eerst geheel gewist voordat er een klein progje in komt, of alleen het gedeelte dat nodig is ?

Wat zou een gemiddelde waarde zijn (zodat ik daar mee kan beginnen) ?

[Bericht gewijzigd door MMSoft op ]

Op 26 november 2005 17:35:52 schreef MMSoft:
Helaas, de PIC is al een keer opnieuw beschreven, en dus ook gewist !

Wordt een PIC eerst geheel gewist voordat er een klein progje in komt, of alleen het gedeelte dat nodig is ?

Wat zou een gemiddelde waarde zijn (zodat ik daar mee kan beginnen) ?

OSCAL gewoon niet schrijven, dan staat ie in het midden.
En de proggers overschrijven gewoon dat adres bij een erase.

Ik MOET de klok snelheid wel aanpassen, omdat ik een Timer heb gemaakt met een instelbare Aan en een instelbare Uit tijd (doormiddel van 2 instel Pot.meters).

Een Kristal wil niet niet gebruiken, omdat het zo klein mogelijk moet zijn en ook die nauwkeurigheid niet nodig heb.

Edit:
Nu loopt alles te snel !

Ik heb in een nieuwe PIC gekeken (het zelfde type en uit de zelfde bestelling, dus waarschijnlijk uit dezelfde serie).
Daarin staat de code: 3450

Kan ik dan gewoon zo doen ?


;Bank 1
MOVLW      3450
MOVWF      OSCCAL 

Het valt mij op dat de PIC 8 bits werkt, en de Registers
14 Bits zijn !

het zal mij niet verbazen dat 50 de hexcode is van RETLW en 36 de waarde.

Op 26 november 2005 17:28:43 schreef The Headhunter:
maar als je de pic wist word de waarde op 3fff ook gewist

een behoorlijke programmer leest die waarde voor het wissen en zet 'm daarna weer terug.

Op 26 november 2005 18:49:33 schreef The Headhunter:
het zal mij niet verbazen dat 50 de hexcode is van RETLW en 36 de waarde.

Zullen we het erop houden dat het net omgekeerd is, 0x50 dus. :)

@Wouter: en, is XWISP een behoorlijke programmer bij een erase? Ik heb het nooit gecontroleerd. Calibreer hem meestal zelf met een counter op Q/4 om de juiste waarde te bepalen.

Dit is een stukje (begin & einde) van het Flash memory


FLASH-Memory:
0000: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF
0008: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF
0010: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF

03F0: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF
03F8: 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3450

Hoe is dit opgebouwd, ik dacht namelijk dat een PIC 8 bits
(1 Byte) per adres kon opslaan, maar hier staan 14 bits getallen.

Op 26 november 2005 20:15:31 schreef MMSoft:
Hoe is dit opgebouwd, ik dacht namelijk dat een PIC 8 bits
(1 Byte) per adres kon opslaan, maar hier staan 14 bits getallen.

Welkom in de wondere wereld van de "Harvard" architectuur. Programma-geheugen is dus los van Data-geheugen en kunnen dus verschillende breedtes (hier 14 en 8 bit) hebben.
En ja, ik weet dat ik Harvard nu heel simplistisch weergeef.. (Voordat iedereen daar weer op reageert)

Graag een beetje uitleg...

En, mag ik dit zo doen ?


;Bank 1
MOVLW      3450
MOVWF      OSCCAL

Edit:
Hoeveel Bits heeft een Register ?

Hex getallen geef ik zo weer: 0xff (dus Decimaal 255 D'255')

Wat staat hier: 3450 ?
en moet ik dat zo schrijven 0x3450 ?

[Bericht gewijzigd door MMSoft op ]

Oh, is het zo opgebouwd !
Kan ik ergens een lijst met Instruktie codes vinden ?

Als ik het goed begrijp, dan is instruktie code
0x34 --> RETLW ?

Edit:
Als ik de OSCCAL waarde hoger maak, wordt de klok snelheid dan sneller of langzamer ?

[Bericht gewijzigd door MMSoft op ]

Op 26 november 2005 19:58:06 schreef JoWi:
@Wouter: en, is XWISP een behoorlijke programmer bij een erase?

ja

Op 26 november 2005 20:58:50 schreef MMSoft:
Kan ik ergens een lijst met Instruktie codes vinden ?

in de datasheet?

Op 26 november 2005 20:58:50 schreef MMSoft:
Als ik de OSCCAL waarde hoger maak, wordt de klok snelheid dan sneller of langzamer ?

Welk woord in het datasheet begrijp je niet, dat van maximum frequency of dat van minimum frequency?? >:)

Eenmaal gewist, ben je de waarde echt kwijt. 12f675 heeft namelijk hetzelfde 'probleem'. Weet er alles van. Iedere pic heeft af fabriek een min of meer unieke osc waarde. Kopieeren van een andere pic heeft dus niet zoveel zin.Het beste wat je nu nog kunt doen is er zelf een waarde in programmeren, instellen op osc out, en even met een scoop meten. Wijkt de osc te veel af, een andere waarde erin. Is dit alles te veel werk, een crystal erop.

Ik heb een nieuwe 676 gepakt, deze werkt prima.
De tijden kloppen nu.

Nadat ik eerst de waarde had genoteerd, heb ik deze nog enkele keren opnieuw beschreven, hierbij bleef de waarde in het laatste adres bewaard.

Ik had waarschijnlijk bij de eerste keer wissen de progger nog ingesteld staan op PIC16F876A (vorige project)

Dus een goede raad lijkt mij, noteer altijd eerst de Kalibratie waarde bij PICs die hierover beschikken.

Als er iemand een lijstje heeft met PIC types, die over dergelijke registers beschikt, dan zou ik dat graag ontvangen :)

Iedereen bedankt...

Op 27 november 2005 10:48:49 schreef MMSoft:
Ik had waarschijnlijk bij de eerste keer wissen de progger nog ingesteld staan op PIC16F876A (vorige project)

wat voor progger gebruik je?

Op 27 november 2005 12:25:36 schreef MMSoft:
De K8048 van Velleman

niet erg slim dat die dan gaat programmeren zonder eerst te checken of de chip die jij opgeeft wel klopt :(

Tja, dat krijg je als je een paar PIC besteld, en deze maar niet binnen komen !

Je gaat dan zolang maar oefenen op een ander type PIC, en als dan eindelijk de bestelde PICs binnen zijn, wil je snel testen of de code goed werkt...

:) :) :)