ATMEGA32 port imput pin output

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#16 Příspěvek 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 = ...

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

#17 Příspěvek 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š.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#18 Příspěvek 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.

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#19 Příspěvek 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

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#20 Příspěvek 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?

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#21 Příspěvek 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?

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#22 Příspěvek 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.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“