Stránka 3 z 4
Napsal: 19 kvě 2007, 11:16
od Modemo
luccas píše:jo a mám to
while PORTB.0 = 0 do nop;
i:=i+1;
while PORTB.0 = 1 do nop;
jednoduché ale účiné

No vidis, staci porozmyslat

Napsal: 19 kvě 2007, 12:13
od Houmer_other
Když tak na to koukám,tak mě napadá dotaz.Co je rychlejší ,jestli i:-i+1 nebo Inc(i).Jak to ten kompilátor vyoptimalizuje?
Napsal: 19 kvě 2007, 12:36
od Modemo
Neviem ako konkretne mikropascal, ale napr avrgcc co viem, je fakt dost hnusne inteligentny...... a pouziva (teda snazi sa) co najlepsi preklad. Myslim ze dany pripad je mu jedno, nahradi to vzdy tym istym.... sak si kuknite asm, pre oba pripady

Napsal: 19 kvě 2007, 13:19
od Houmer_other
Zkoušel jsem to a i v mikdopascalu je to jedno.V obou případech to přeloží jako "INCF _i, 1"
Napsal: 19 kvě 2007, 18:45
od luccas
Tak jsem na jedno řešení přišel. Ale opět je díky mé neznalosti velice prasácké. Ukazuje to +/- tu rychlost. Ale! vím, že je chyba v tom způsobu.
Kód: Vybrat vše
procedure interrupt;
begin
brojac := brojac + 1;
TMR0 := 96;
INTCON := $20;
end;
begin
OPTION_REG := $84;
TRISB := 0;
PORTB := $FF;
trisb.7 := 1;
brojac := 0;
TMR0 := 96;
INTCON := $A0;
Lcd_Init(PORTC);
Lcd_Cmd(LCD_CLEAR);
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(1, 1, ('Rychlost: '));
Lcd_Out(1,13,' KMh');
polomer:=0.3;
repeat
begin
if brojac >= 3000 then
begin
v:=0;
byteToStr(v,txt_vys);
Lcd_Out(1,10,txt_vys);
end;
if portb.7 = 1 then
begin
t:=brojac/1000;
mereni;
Lcd_Out(1,10,txt_vys);
brojac := 0;
while PORTB.7 = 1 do nop;
end;
floattostr((brojac/1000),tt);
Lcd_Out(2,7,tt);
end;
until 0=1;
end.
Já ten čas mezi dvěma impulzy počátám tak, že ten čítač přičte cca. 1000 za 1s. a s toho vycházím. Ale nejhlavnější problém je ten, že to zjišťuji a počítám a nuluji v programu. takže když někde hodím spoždění 0,5s tak končím. protože nemám šanci odchytit výstup. Proto se prosím ptám, nevíte někdo jak nastavit časovač tak aby mi na impuls sepnul a na další impuls vyhodil čas, vynuloval se a znova?

já už fakt na víc nepříjdu než to co jsem napsal. děkuji
Napsal: 19 kvě 2007, 20:07
od luccas
a když nad tím tak přemýšlím tak jsem došel k závěru, že mi to vyhovuje. Ale potřeboval bych pomoct alespoň s tím, jak udělat aby mi ten časovač napočítal do 1000 přesně za 1s. ???

pak to bude super. Díkes.

Napsal: 19 kvě 2007, 20:37
od DMF
Timer se dá nastavit na spouštění třeba náběžnou hranou.Atmely to umí na sto procent,PICy určitě taky.Koukni do manuálu.
Napsal: 19 kvě 2007, 21:55
od luccas
DMF píše:Timer se dá nastavit na spouštění třeba náběžnou hranou.Atmely to umí na sto procent,PICy určitě taky.Koukni do manuálu.
jo tak to kdybych věděl jak

. Já vím, že to tak udělat jde ale nevím jak to tak udělat. Manuál mi moc nepomohl
Napsal: 20 kvě 2007, 00:36
od DMF
například u picu 12F675 se nastavuje přerušení při změně na konkrétním portu IOC
1=povoleno přerušení při změně GPIO
0 = zakázáno (maskováno) při změně GPIO
INTEDG: bit výběru aktivní hrany pro přerušení
1 – náběžná hrana signálu vývodu GP2/INT je aktivní
0 – sestupná hrana signálu vývodu GP2/INT je aktivní
Napsal: 20 kvě 2007, 10:04
od DMF
Zkus kouknout do tohoto datasheetu na ten timer (možná ho máš):
http://www.copsu.cz/mikrop/download/ok.php?link=16F87xA
Napsal: 20 kvě 2007, 22:04
od tominekk
Sorry chlapy, nedá mi to a musím poukázat na dvě videa z youtube.
Na jednom jede frajírek prej přes 400kmh-1 a na druhým jde docela pěkně vidět digitální tachometr - pro inspiraci autora.
Kód: Vybrat vše
http://www.youtube.com/watch?v=qaYcvN5yNGg&mode=related&search=
http://www.youtube.com/watch?v=k51irq9QiPg&mode=related&search=
Napsal: 21 kvě 2007, 14:21
od luccas
http://im.lide.cz/photo/big/28/09/1782100-16152809.jpg
takže asi takto to vypadá. Program sem použil ten co jsem ukázal. prostě zapnu čítač, který napočítá 1000 cca. za 1s. a když se mihne snímač tak hodnotu přečtu, spočtu ukážu a vynuluji. a pořád dokola. Když se signál neoběví do 3s tak zobrazím nulu. A rychlost se zobrazuje tedy každou otočkou. když jedete rychleji tak jse to teoreticky obnovuje vícekrát ale má to svou logiku. Tak prakticky vzato jsem potěšen

Sice je možnost vylepšit ten engin o to přerušení tak jak by mělo být ale na moji motorku či kolo to stačí
Ještě krom parametrů. Dokáže to měřit do 255Kmh z důvodu použíté proměné byte která může nabírat hodnot od 0 do 255.
toť asi vše.
Napsal: 21 kvě 2007, 16:54
od caven
A nehodíš jsem schéma a program ??? Vypadá to zajímavě
Napsal: 26 kvě 2007, 15:40
od luccas
caven píše:A nehodíš jsem schéma a program ??? Vypadá to zajímavě
Musím to ještě všechno dodělat

takže až to bude tak se ozvu.
Napsal: 26 kvě 2007, 16:01
od DMF
Zkus tam použít ten timer.Mužeš mu nastavit předděličku a měřit počet impulsů za delší čas.Měření by bylo přesnější. Existuje řada principů ,jak to řešit.