ATMEGA32 port imput pin output
Moderátor: Moderátoři
- xxxEDISONxxx
- Příspěvky: 273
- Registrován: 01 kvě 2006, 00:00
- Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...
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š.
- xxxEDISONxxx
- Příspěvky: 273
- Registrován: 01 kvě 2006, 00:00
- Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...
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
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 AsmCo 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?
- xxxEDISONxxx
- Příspěvky: 273
- Registrován: 01 kvě 2006, 00:00
- Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...