Čítač inpulsu pro Pic 12F629

Já vím že se to dá logickými švábami například 7493 ale já to potřebuji testovat abych věděl kolik těch impulsů je ten správný počet ,na výstupu délka impulzu to taky ještě nevím to bych testováním musel taky zjistit díky

V tom případě bych postupoval tak,že bych vstup pulsů zapojiil na pin 5 (INT) a nakonfiguroval HW procesoru tak,aby při každým pulsu nastalo externí přerušení.V obsluze přerušení bych řešil inkrementaci globální proměnný (podle toho kolik pulsů to má načítat).Pokud by byl třeba výstupní puls konstantně dlouhej,řešil bych to časovačem.
Jde to řešit více způsoby.Pro inspiraci by to mohlo stačit.Pro řešení kódu programu je třeba znát všechny požadavky a vstupní parametry.

Asi tak mám doma skútr pro seniory bohužel nemá tachometr tak jsem si říkal že použiji něco takového mall.cz/tachometry/sigma-s- … discussion ale problém je v tom že na tak malé kolečka to není stavěný tak jsem si řekl že mezi senzor a cyklo počítač dám nějakou děličku a tu děličku jsem si chtěl na pic12f629 naprogramovat a potom testováním se přiblížit alespoň trochu k reálnému počtu ujetých kilometrů díky

některá ta Sigma se dá nastavit (obvod kola a počet pulsů).
Jinak tím 12F629 by to taky šlo alespoň přibližně nastavit.

O Sigmu která by se dala nastavit na tak malý průměr kola jsem nenarazil.Kdo by mě pomohl ten prográmek napsat nebo odkázat na linky na příklady pro mikroC PRO for PIC nebo HI-TECH PICC-Lite v krajním případě asm tak byl bych mu vděčen protože já a strýček Googl nejsme kamarádi :blush: díky

¨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