C: reverzne cykly
Pavel Hudeček
edizon na seznam.cz
Středa Červenec 31 10:23:42 CEST 2024
Sedmisegmentovky v kombinaci s MCU používám často. Skončil jsem u toho,
že segmenty zapojím na nějaký port v náhodném pořadí jak to vyjde na
nejsnazší routování. Společný konce zapojím zas náhodně. Program pak má
pro dané rozložení segmentů vygenerovaný písmenka a používá tabulku na
překlad z indexu číslice na hodnotu portu, nebo index bitu.
PH
Dne 31.07.2024 v 0:02 Miroslav Šinko napsal(a):
> 1. som rad, ze sa moje riesenie s otacanim indexu pacilo
>
> 2. asi je lepsie zacat vlakno tymto, citujem "najprv napisem o co sa
> jedna"
>
> Ked ide o to, ze plosak je optimalizovany otocenim adresovania
> segmentov, tak v SW sa to niekde prejavit musi. Moze to byt na nizsej
> urovni (driver, HAL), kde do toho moj "aplikacny" kod nevidi. Alebo ak
> mam kod jednoduchy, tak si dam ten komentar a vobec si nevycitam, ze
> robim nieco zle. No a ked som odporca komentarov a za kazdu cenu chcem
> mam samopopisny kod, tak napr. takto.. Za zaklad pouzijem svoj priklad
> a este zmenim MAX na CNT, aby som v podmienke cyklu pouzil < namiesto <=
>
> #define CNT_SEGMENTS 4
>
> //tu moze byt uplne lubovolne mapovanie, nielen otocenie
> unsigned char remapSegmentsDueToOptimizedPCB(unsigned char i)
> {
> return CNT_SEGMENTS - 1 - i;
> }
>
> for(unsigned char i = 0; i < CNT_SEGMENTS; i++)
> {
> unsigned char index = remapSegmentsDueToOptimizedPCB(i);
> }
>
> miro
>
> On 30.7.2024 21:22, Jan Waclawek wrote:
>> [preposielam]
>>
>> Ahojte,
>>
>> najprv napisem o co sa jedna. Ide o 7-segmentovy display, ktory ma
>> DP_1000
>> (3) .... DP_1 (0). A ako na potvoru hardwarovo je to kvoli jednoduchemu
>> plosaku navrhnute zprava dolava. Takze ked som napisal jednoduchy test
>> displaja s pocitanim 0->3, ten isiel zprava dolava, dalo sa na to
>> pozerat,
>> ale je to pre nas europanov take neprirodzene, kedze mi citame zlava
>> doprava. A tak zacala story okolo pocitania od 3 -> 0 a dolezite je,
>> ze to
>> musi prebehnut este aj v tej 0. Druhy faktor je ten ten, ze pocitadlo sa
>> sucasne pouziva ako index v poli zobrazovanych znakov, takze by bolo
>> dobre
>> zostat pri unsigned char alebo unsigned int. Z tych rieseni, ktore tu
>> zazneli sa mne najviac paci to s otocenim indexu (index=DP_1000 - i) a
>> pocitanim od 0 -> 3 (DP_1....DP_1000). Druha moznost je pouzit index
>> i-1 a
>> pocitat od 4 do 1. V kazdom pripade je treba obetovat prehladnost na
>> ukor poznamky v kode, o aky cyklus sa vlastne jedna.
>>
>> Tymto by som rad este raz podakoval vsetkym za odpovede a inspirativne
>> navrhy a aj za odpovede v predchadzajucom vlakne o statickych
>> premennych.
Další informace o konferenci Hw-list