Stránka 2 z 2

Napsal: 10 bře 2010, 20:07
od xxxEDISONxxx
tohle je jenom pracovní verze ve které se samotný snímač zkoušel jistě že se to bude počítat v době mezi načítáním dat akorát že v extrémních případech na to nebude čas a pro to chci nejdřív vyřadit ty zbytečné zdržováky a to je to if bohužel se nám to nepodařilo prokopnout přes a = ...

Napsal: 10 bře 2010, 20:40
od popopepe
Co je to pomalu a rychle je relativní -
2 vzorky na mikrometr, 2000 do milimetru, a 600mm za sekundu je datový tok 1 200 000 bitů za sekundu. Nebo se pletu, myslel jsi to nějak jinak?
Pokud ne, tak se obávám, že bude li to plynulý tok v této rychlosti, tak to stejně nebude stíhat, ať děláš co děláš, jenom zápis na LCD bude trvat mnohem déle.. tohle je asi moc..
Zkus to možná přes přerušení, hodinama CLK taktovat INT0, a uvnitř přerušení jenom inkrementovat proměnou, pokud je datový bit roven 1. Ale stejně budeš mít 1 2000 000 přerušení za sekundu...každé přerušení bude trvat několik taktů, a ani oscilátor 24MHz ti nebude stíhat... musíš ubrat na té rychlosti vstupních dat..

On Int0 pricti:

pricti:
disable int0
if pinx.1 = 1 then
incr A
enable int0
gifr=64
return
a v hlavní smyčce podle stavu toho CSn pak spočítej co potřebuješ.

Napsal: 10 bře 2010, 21:07
od AB1
A co použít oscilátor 8 MHz ?
I s těmi "if" to pak bude rychlejší než asembler při 1 MHz.

Napsal: 11 bře 2010, 10:17
od xxxEDISONxxx
jinak psal jsem 10vzorků na 1 mm s přesností na 0,5um asi jsem to blbě pochopil.6000vzorků/s x 18bit=108Kbps
Kdo ti říkal že to půjde na lcd jako souvyslý datový tok to by oko stejně vidělo jako 8888888 je to nutné pro uchování apsolutní informace o poloze těch 600mm/s je důležité aby se to nezbláznilo při nárazu nebo velmi krátkým zavybrování.ty přerušení jsou pěkný nápad ale já jsem jen chtěl zjistit jestli někdo neznáte způsob jak načítat ty informace bez použití if pokud ano tak ho sem písněte třeba jako kus kódu v Asm

druhá odpověď
ten 1MHz je tam kvůli bascomu se sofem v procesoru to nemá co dělat tam je nastavená jiná freg.

moc děkuji za Váš zájem pokud by byl nápad jak to zrychlit co se týče kódu pak sem s tím

Napsal: 11 bře 2010, 10:26
od Andrea
A už jsi aspoň zjistil, jestli tomu čidlu vadí 24 clk pulsů místo 18? A jakou max. frekvenci clk to čidlo zvládne? Nebo jen čekáš, až ti řešení spadne samo do klína?

Napsal: 11 bře 2010, 16:19
od AB1
Tady je kód který přečte 18 bitů

Kód: Vybrat vše

Dim Pozice As Long
   $asm
   push r16
   push r17
   push r18
   push r19
   ldi r16,18

   Cti:
   cbi porta,2
   lsl r17
   rol r18
   rol r19
   sbic pinc,0
   sbr r17,1
   sbi porta,2
   dec  r16
   brbc 1, Cti

   sts {pozice},r17
   sts {pozice}+1,r18
   sts {pozice}+2,r19

   pop r19
   pop r18
   pop r17
   pop r16
   $end Asm
Ale připadá mi to celé nějaké zmatené.
Co má ta záhada vlastně dělat?
je to nutné pro uchování apsolutní informace o poloze těch 600mm/s je důležité aby se to nezbláznilo při nárazu nebo velmi krátkým zavybrování
Mám tomu rozumět tak, že pokud nepřečtu hodnotu každých 0,1mm tak se čidlo zblázní?
Nebo se má přesně zaznamenat křivka pohybu čidla?
Ale kam se bude ukládat ta absolutní informace o poloze, těch 18 kilobajtů za vteřinu?

Napsal: 11 bře 2010, 22:39
od xxxEDISONxxx
Předně děkuji za odpověď má to odměřovat vzdálenost na nějakém lože.Ty data se mají vyhlodnocovat takto aby se zaručilo že inkrementální hodnota neodstřelí od apsolutní... .To čidlo má max freg clk 2Mhz jinak nejsem doma a se šroubovákem to asi nezjistim.taže někdy o výkendu.