Čítač inpulsu pro Pic 12F629

kdyz ji prepises tak je fakt fuc
ne,pomuze toho vic ale tobe bych poradil at si koupis novej…
co tam mas za hodnotu ?

vyprdni se na uP a dej tam posuvnej registr

Ještě se zeptám když se děla něco v asm tak je vše v pořádku ale když se to dělá ve vyším programovacím v C nebo tak to je problém ? platí to jen pro tyto dva nebo pro všechny? díky

Je uplne jedno v com pises stejne z toho bude hex,
Plati to pro vsechny co maj kalibracni konstantu ulozenou ve flash pameti,

Koukam ze to budes resit asi jeste hodne dlouho co?

Ahoj. Ta rekalibrace z odkazu funguje. Na adresu 3FFF nahraješ nějakou střední hodnotu nebo pokud Ti to programátor neumožní, tak hodnotu z hexu ze stránek. Zapojíš to dle schématu a až to bude hotové, tak se rozsvítí zelená led a je to hotové. Hodnota pro oscilátor je uložena v eeprom na prvních dvou pozicích. Tudíž vyndáš PIC, načteš programátorem (stačí obsah eeprom) a poznačíš si konstantu, kterou potom nahraješ na správnou pozici (3FFF). Já používám Presto, kde lze nastavit, aby se mi tato konstanta při programování nepřepisovala. Nevím, co máš za programátor a zda to jde u něj také řešit. Použil jsem to zapojení celkem dvakrát a pokaždé úspěšně.

U toho Presta tuším nedojde k přepsání když je nastaveno 3FFF.Je na to ještě nějaká finta ?

to jak neprit o tu konstantu je nekolik: (netyka se to jen Presta)
nez zacnes programovat precist a zapsat na nozicky permanentnim fixem
pouzivat Pickit 2, nesmaze ji a kdyz si ji smazes sam tak ji umi obnovit
pokud s tim programator neumi :
zapsat konstantu do programu pomoci ORG
nebo zapsat rovnou do OSCCAL
obe varianty ale maj nevyhodu ze zmenou uP musis tu hodnotu taky zmenit v kodu

Ono psát to do programu je dost riziko.Pokud člověk změní uP a zapomene na to,tak je chyba.
To presto umí zálohovat pojistky.Pokud to člověk udělá při prvním spojení s uP,tak je to v pohodě.
Jak to řeší PKit 2.Když to umí obnovit,tak to nějak vyčte z uP,nebo je to jinak ?

PK2 to meri a meni konstantu a porovnava,kdyz uP ohreju staci na chvily prstem tak se ta konstanta meni,takze si ji v ten danej momen kalibruje…

Ta konstatna je z výroby nastavena pro každý konkrétní čip při teplotě 25 stupňů. V datashetu píšou cosi o střední hodnotě teploty od 0-50. Nezapomeň, že oscilátor je typu RC, 4MHz, 1%, tudíž s teplotou se vždy bude měnit jeho frekvence. Myslel jsem si, že by se hodnota OSCCAL neměla měnit s teplotou, ale je možné, že je navázana na nějakou teplotní zpětnou vazbu nebo se mění vlastní hodnota toho R a C. Nevím. Pro opravdu přesný oscilátor bude lepší krystal nebo krystalový oscilátor a ještě lépe termostatovaný. Pokud použiješ 20MHz, “zjemní” se Ti instrukce z 1ms na 200ns. Ale přijdeš minimálně o 1 či 2 nohy.

U PIC12F629/675 a podobných osminohých opravdu nemá význam používat cokoliv jiného, než interní oscilátor - těch nožiček je u těchto typů opravdu zoufale málo na to, aby se s nimi plýtvalo.

PK2 software a programátor konstantu nikdy samy nesmazaly - ani při programování HEXu, ani při mazání čipu ani při čemkoliv jiném. Jediný způsob jak ho k tomu donutit byl ručně přepsat přímo tu adresu (poslední adresa ve flash paměti, jak tu již někdo psal - není to vždy 3FFh, např. 12F683 má paměť větší, nové typy se čtyřmístným kódem - jako např. 12F1572 apod - zpravidla také). Co se týče zálohování, nejjistější je konstantu vyčíst a vyškrábnout ji na brouka zespod pouzdra nějakým hrotem (v nouzi stačí např. kružítko), tak jsem to tedy aspoň provozoval a zatím jsem o žádnou kalibrační konstantu nepřišel.

Změna frekvence pomocí toho OSCCAL registru je taková, že když ji máte na maximum, tak je frekvence oscilátoru okolo 5MHz. Jinak pro zajímavost - kdo má čítač, může to provést také tak, že nastaví brouka aby měl aktivní CLKOUT výstup (GP4 / OSC2 / CLKOUT) a programově pak mění OSCCAL tak dlouho, až bude mít na onom výstupu 1 MHz (platí fosc / 4, takže 1MHz výstupu je 4MHz frekvence oscilátoru).