Čítač inpulsu pro Pic 12F629

¨S prográmkem bych mohl pomoct v PMP Pascalu (je free).

Tak to nastav na desetinásobek a desetinnou čárku domaluj rukou, nebo třeba nalep proužek izolačky.

Pokud nepůjde, tak než se matlat s děličkou, tak už rovnou udělat celej tachometr, ne? Přece nejsme žádný béčka.

Kdybys vzal tužku a papír, tak si ten potřebný dělící poměr spočítáš a nic neexperimentuješ. A omezovat na celá čísla taky nemusíš. Naprogramovat se dá i neceločíselná dělička a to velice snadno :wink:

Meloun1 > program máš v SZ.

Sender: To seš moc hodnej, ale:

[code]Pravidlo 14

Dotazy pokládejte na fóru a nepište jej přímo lidem z fóra (ať už soukromou zprávu, email nebo instant messaging), protože odpovědi mohou zajímat i jiné čtenáře fóra. Pokud obdržíte odpovědi od uživatelů přímo do emailu nebo jako soukromou zprávu, vytvořte shrnutí, “FAQ” a umístěte jej do diskuse.[/code]

[code]Pravidlo 23

Znáte-li odpověď na kladené technické otázky, pak ji poskytněte.[/code]

Jinými slovy, je tu zájem na tom, aby řešení byla veřejná a přístupná všem.

Dále tu platí jakési nepsané pravidlo o tom, že neservírujeme řešení na stříbrném podnosu, ale tazatel by měl napřed projevit nějakou vlastní snahu a tázat se na konkrétní zádrhele vzešlé z té snahy, které se pak řeší konkrétně. Důvod je ten, že si tu bez tohoto pravidla středoškoláci nechávali hromadně vypracovávat domácí úkoly z elektroniky, programování apod. (i za úplatu), aniž by se tématu vůbec nějak dotkli a látka jim něco dala. Smyslem fóra primárne je šířit vzdělání a technické povědomí a také učit samostatnosti, ne nabízet inzertní či obchodní příležitosti. Když se mnozí leckdy ani neobtěžují před položením dotazu použít Google či prohledat fórum, tak je to prostě špatně.

Nejsem admin, ale každý by měl tak nějak chápat, že pravidla tu prostě máme a důvody k jejich existenci jsou zcela reálné, bez nich fórum pozbývá významu.

Děkuji za pochopení.

Mahoney> OK omlouvám se. já ty pravidla fóra ani moc nečet. :slight_smile: Nemám problém se zveřejněním kódu,ale ten kód je neodzkoušený a je spíchnutý na rychlo.Vzhledem k možnostem PNP pascalu jsem použil část kódu,který PMP (snad) chápe správně.Pokud by někldo chtěl tento kód použít do XC8,jde to napsat jinak.Celkově princip jsem použil ten nejjednodušší (pro příklad,inspiraci).Efektivnější je použít způsob,při kterém inkrementace i vyhodnocení probíhá na HW úrovni (s minimem prtogramového kódu). Je na tazateli samotném,aby kód přehodnotil a případně upravil podle svého.Fakt je že tazatel ani nenapsal jak se kód chová a jestli stíhá.

Takže program bez záruky funkčnosti:

[code]
(* for PMP Pascal compiler 2.1.4.111
http://www.pmpcomp.fr/
*)
program delicka;

{$PROCESSOR PIC12F629}
{$FREQUENCY 4 MHz}
{$CONFIG FOSC = INTRC_OSC_NOCLKOUT , CP=OFF ,CPD=OFF ,BOREN=OFF, MCLRE=OFF ,PWRTE=OFF ,WDTE=OFF}

var
Cykl: byte;
Vstup:boolean @ GPIO.GP2; //pin 5
Vystup:boolean @ GPIO.GP0;//pin 7

(Hlavní program)
begin
CMCON:=7; //zákaz komparátoru
VRCON := 0; // vref vypnuta
WPU:=0; //pull-up zakázáno
TRISIO.TRISIO2:=true; // GP2(pin 5) konfigurován jako vstup
TRISIO.TRISIO0:=false; //GP0(pin 7) konfigurován jako výstup
GPIO:=0; //nastavení IO portu do log 0
Cykl:=0; //pro jistotu
(* hlavní (nekonecná) smycka hlavního programu *)
while(1) do
begin
while(not vstup)do ; //ceká se na pulz
inc(Cykl); //inkrementace pocadla
if Cykl=10 then
begin
Vystup:=true; //zapnutí pulzu výstupu
// Delay(20); //Délka pulzu výstupu v mikrosekundách -použít podle potreby
// vystup:=false; //vypnutí výstupu -použít podle potreby
end;
while(vstup)do ; //ceká se až pulz skoncí
vystup:=false; //vypnutí výstupu -pokud je pouzita cast kódu Delay(20); tak neni treba
if cykl>=10 then cykl:=0; //nulování pocítadla v pomeru 10:1

end;

end.[/code]

:020000040000FA
:020000000528D1
:080008000900BF01073083125B
:1000100003139900831699019501051505108312A4
:100020008501A00183120313051D1228A00A2008D0
:100030000A3A031905148312031305191B28051026
:1000400020080A3C3E14031D031C3E103E181228D3
:06005000A00112280628A1
:08400000803F803F803F803FBC
:02400E00943FDD
:00000001FF

Tak saze otravuji já asi zůstanu u HI-TECH PICC-Lite a pokusím se něco naučit :wink: protože jak se říká “moc psů zajícova smrt” ale co mě znepokojuje je toto viz příloha.Zadal jsem to do googlu a našel jsem par odkazů ale nejsem s toho moc moudrý díky

Edit : já se omlouvám za pozdní reakci ale i když mám nastaveno upozornění na nový příspěvek tak mě to sice dojde do emailové schránky kde to mám přeposláno do další schránky( tady asi bude někde chyba) kde mám nastaveno upozornění po SMS(prostě toho mám moc) a nestíhám :smiley:

U procesorů 12F675 i 12F629 je před programováním potřeba si zazálohovat kalibrační hodnotu (je úplně na konci programovýho místa).Pokud se přepíše při programování,rozhodí se takt interního oscilátoru.
Existují jakési regenerátory a údajně to umí obnovit PicKit 2 možná i PicKit 3.

Ale jak to udělat prakticky ? nějaký příklad by pomohl :blush: díky

picprojects.org.uk/projects/recal/recal.htm
Autor programu pro rekalibraci oscilátoru uvádí kód na výše uvedeném webu pod GNU licencí.

Co jsem se zběžně díval na ten odkaz tak je kdyzpozici hex soubor ke stažení ale zatím jsem nepřišel jak to použít :blush: předem díky za schovívavost

v tomhletom programu je to jedno, dej tam treba neco kolem stredu ,
pokud mas jeste jinej uP precti to z nej a pouzi
poripade si napis program co generuje signal a upravuj konstantu dokat to nebude sedet,
sezen si PICkit2 ten to umi
a navic tohle je simulator proteus,mas snad ICD ? ne ,ten by si s tim mel poradit …

Mám to chápat tak že když do toho švábu jsem nahrál takto zmršený nebo nějaký jiný program tak tu kalibrační hodnotu která je tam při výrobě nastavena tak je definitivně fuč ,a pomůže jen to udělátko na těch stránkách s tím kódem tak pomocí těch signalizačních ledek se to nastaví. díky

Mám klon programátoru SCPD2 -kompatibilní s ICD 2

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 ?