Algoritmicka - pocitanie impulzov

Martin Záruba swz na volny.cz
Středa Únor 7 11:17:46 CET 2024


A nebo ještě lepší:

Založím proměnnou POCET_PULZU a vynuluji ji.

Založím proměnnou byte BUFFER a vynuluji ji.

Založím proměnnou byte INDEX a vynuluji ji.

Založím byte POLE[300] a vynuluji ho.

Náběžnou hranou pulzu vyvolám přerušení a v něm bude BUFFER++;

Každých 10mS vyvolám druhé přerušení a v něm bude:

POCET_PULZU-=POLE[INDEX];

POCET_PULZU+=BUFFER;

BUFFER=0;

INDEX++;

if (INDEX > 300) INDEX=0;


Nic nemusím sčítat, nic nemusí jít synchronně, není tam žádná smyčka. V 
POCET_PULZU je stále výsledek.

Martin Záruba

Dne 7.2.2024 v 10:52 Martin Záruba napsal(a):
>
> A nebo vylepšení:
>
> Udělám pole 300 byte.
>
> Náběžnou hranou pulzu vyvolám přerušení a v něm bude zvýšení 1 byte 
> bufferu o 1.
>
> Každých 10mS vyvolám druhé přerušení a v něm bude zvýšení indexu o 1 a 
> pokud je 300,  vynulování. Dále uložení obsahu bufferu z 1. přerušení 
> na pozici indexu a vynulování bufferu.
>
> V hlavním program cyklicky sčítám věechny buňky v poli.
>
> Rozlišení na 10mS zůstane zachované, ale v každ´m 10mS taktu může být 
> až 255 pulzů. Nyní se už těžko něco ztratí.
>
>
> Martin Záruba
> Dne 7.2.2024 v 9:56 Martin Záruba napsal(a):
>>
>> Fpga neznám, tak nevím, zda by šlo použít tento algoritmus:
>>
>> Vím, že pulzů může být maximálně 10 za sekundu.
>>
>> Udělám pole 300 bitů.
>>
>> Nevím, jak je pulz dlouhý, takže musím reagovat na náběžnou hranu.
>>
>> Náběžnou hranou pulzu vyvolám přerušení a v něm bude zápis 1 do 
>> bufferu na 1 bit.
>>
>> Každých 10mS vyvolám druhé přerušení a v něm bude zvýšení indexu o 1 
>> a pokud je 300,  vynulování. Dále uložení obsahu bufferu z 1. 
>> přerušení na pozici indexu a vynulování bufferu.
>>
>> V hlavním program cyklicky počítám kolik je 1 v poli.
>>
>> Má to jedinou vadu: Pokud bude sice za sekundu do 10-ti pulzů, ale 
>> třeba dva přijdou za sebou rychleji, než za 100mS, pulz se ztratí.
>>
>> Martin Záruba
>> Dne 7.2.2024 v 7:50 balu napsal(a):
>>> Takto na stredu by som mal algoritmicku otazku. Potrebujem najst 
>>> nejaku inspiraciu na zaciatok. Jednu metodu uz mam predvymyslenu, 
>>> ale viac inspiracie nikdy nue je na zahodenie.
>>> Majme impulzy, ktore prichadzaju s maximalnou frekvenciou 10Hz, cas 
>>> medzi nimi je ale nahodny a nie su synchronizovane na ziadne hodiny 
>>> spolocne s vyhodnocovacim obvodom.
>>> Potrebujem pocitat pocet impulzov za poslednych 30 sekund. Musi to 
>>> ale byt plavajuce okno, za poslednych 30 sekund. Nie fixne okno raz 
>>> za 30 sekund.
>>> Komplikacia je, ze sa to ma implementovat do fpga, takze sa nedaju 
>>> pouzit operacie typu for slucka a prejst cez pole niecoho.
>>> Ako na to?
>>> b.
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored bywww.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored bywww.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240207/91f3afa8/attachment.htm>


Další informace o konferenci Hw-list