zobrazení obsahu čítačů
Moderátor: Moderátoři
Proc potrebujes refresh displeje po 10ms. Ani po 100ms tam stejne nic nerozpoznas pokud se ti budou cisla rychle hybat. Ale i za tech 10ms tohle musi s prehledem zvladnout jakykoliv mcu, klidne i ten pic bez instrukci deleni nebo pitome arduino kdyz se ti nechce investovat do vyvojovych prostredku. PICy nepouzivam, ale i ty "jednocyklove" x51 rady LP od atmelu maji za 10ms 200.000 cyklu. Nedovedu si predstavit jak moc blbe by musel byt napsan soft aby to nestihal. Klavesnice a displej jsou nejpomalejsi veci, na ty je vzdycky casu dost a neni to nijak poznat. Zobrazovani prece nemusi byt synchronni se zbytkem stroje, pokud se ti hodnota meni vic jak cca 5x za sekundu, stejne nema zadny vyznam ji vubec zobrazovat.
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
Jedna instrukce např. 16F84 trvá 4 cykly hodin. Takže při krystalu 20MHz je to "jen" 5 milionů instrukcí za sekundu. Za 10ms je to už jen 50.000 instrukcí. Jestli je to moc nebo málo pro ten převod, to nevím.termit256 píše:.... PICy nepouzivam, ale i ty "jednocyklove" x51 rady LP od atmelu maji za 10ms 200.000 cyklu. ...
PF
- petula
- Příspěvky: 836
- Registrován: 22 kvě 2016, 02:00
- Bydliště: Čelákovice / Brandýs n.L / Stará Boleslav
- Kontaktovat uživatele:
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
Tak tu každý úspěšně vyjádřil svoji dojmologii, a nikdo se ho pořádně nezeptal jednak na to, co má přesně na stole za PIC (třeba PIC18F mají také HW děličku, ZdeňkuHQ) a jednak na to, jestli tím spojováním čítačů myslí HW čítače/časovače, tedy TMRx (ty spolu spojit nejdou jsou nezávislé), nebo jestli tím čítačem myslí SW čítání, tedy nějaké místo v paměti, které nějak obsluhuje. Ty samozřejmě spojit i převést na desítkovou soustavu a někam odeslat samozřejmě jdou a je to celkem jednoduché. Takže:
1. Co máš přesně za PIC?
2. Jde o SW čítání? O čítání čeho jde (tedy jak rychlé jsou ty impulsy)?
3. Kam a přes co to chceš odesílat?
4. Vzhledem k té zmatlanině coby příklad tvého kódu - děláš to v C nebo v ASM?
Edit: Když jsem si rozklikal ty odkazy, tak jsem z toho (nevím jestli správně) pochopil, že chceš čítač (měřící přístroj), realizovaný pomocí mikrokontroléru? PIC je v tom případě vhodnější volba než ATmega, protože má nastavitelnou předděličku už před vnitřním čítačem a díky tomu dosahuje vyšších frekvencí měření, PIC sám o sobě asi 50 MHz naprosto bez problémů i ty nejstarší typy (které ale nepoužijeme, použijeme zřejmě něco z PIC18F rodiny, a nebo můžeme použít něco z PIC16F161x, které mají SMT jednotku, tedy pokud na to máš programátor, který tento nový typ podporuje). Napíšeš, jak si to představuješ přesně?
Edit2: LPC2146 má 32bit timer/counter s nastavitelnou předděličkou, je to poměrně obstarožní kousek hardware (ARM7TDMI), píše se na to většinou v C v Keil-u, ale hlavně je to 3V3 brouk! Opravdu je ten pravý?
Projekt čítače mě zajímá, sám mám totiž taky v plánu ho stavět, ale já tam budu mít na 100 % 8bit PIC.
1. Co máš přesně za PIC?
2. Jde o SW čítání? O čítání čeho jde (tedy jak rychlé jsou ty impulsy)?
3. Kam a přes co to chceš odesílat?
4. Vzhledem k té zmatlanině coby příklad tvého kódu - děláš to v C nebo v ASM?
Edit: Když jsem si rozklikal ty odkazy, tak jsem z toho (nevím jestli správně) pochopil, že chceš čítač (měřící přístroj), realizovaný pomocí mikrokontroléru? PIC je v tom případě vhodnější volba než ATmega, protože má nastavitelnou předděličku už před vnitřním čítačem a díky tomu dosahuje vyšších frekvencí měření, PIC sám o sobě asi 50 MHz naprosto bez problémů i ty nejstarší typy (které ale nepoužijeme, použijeme zřejmě něco z PIC18F rodiny, a nebo můžeme použít něco z PIC16F161x, které mají SMT jednotku, tedy pokud na to máš programátor, který tento nový typ podporuje). Napíšeš, jak si to představuješ přesně?
Edit2: LPC2146 má 32bit timer/counter s nastavitelnou předděličkou, je to poměrně obstarožní kousek hardware (ARM7TDMI), píše se na to většinou v C v Keil-u, ale hlavně je to 3V3 brouk! Opravdu je ten pravý?
A dál:6.15General purpose timers/external event counters
The Timer/Counter is designed to count cycles of the peripheral clock (PCLK) or an
externally supplied clock and optionally generate interrupts or perform other actions at
specified timer values, based on four match registers. It also includes four capture inputs
to trap the timer value when an input signal transitions, optionally generating an interrupt.
Multiple pins can be selected to perform a single capture or match function, providing an
application with ‘or’ and ‘and’, as well as ‘broadcast’ functions among them.
The LPC2141/42/44/46/48 can count external events on one of the capture inputs if the
minimum external pulse is equal or longer than a period of the PCLK. In this configuration,
unused capture lines can be selected as regular timer capture inputs, or used as external
interrupts.
tedy budeš dělat všechno, co se dělá na ARMech - řádně nastavit buses (AHB/APB), řádně nastavit I/O (asi devět registrů) atd atd... Jinými slovy, je to dle mého názoru overkill, se kterým zabiješ moře času, když to jde udělat snadno skoro s jakýmkoliv 5V osmibitem.6.19.9APB bus
The APB divider determines the relationship between the processor clock (CCLK) and the
clock used by peripheral devices (PCLK). The APB divider serves two purposes. The first
is to provide peripherals with the desired PCLK via APB bus so that they can operate at
the speed chosen for the ARM processor. In order to achieve this, the APB bus may be
slowed down to 12 to 14 of the processor clock rate. Because the APB bus must work
properly at power-up (and its timing cannot be altered if it does not work since the APB
divider control registers reside on the APB bus), the default condition at reset is for the
APB bus to run at 14 of the processor clock rate. The second purpose of the APB divider
is to allow power savings when an application does not require any peripherals to run at
the full processor rate. Because the APB divider is connected to the PLL output, the PLL
remains active (if it was running) during Idle mode.
Projekt čítače mě zajímá, sám mám totiž taky v plánu ho stavět, ale já tam budu mít na 100 % 8bit PIC.
- petula
- Příspěvky: 836
- Registrován: 22 kvě 2016, 02:00
- Bydliště: Čelákovice / Brandýs n.L / Stará Boleslav
- Kontaktovat uživatele:
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Vedle toho chci měřit periodu a časové úseky s rozlišením min 100 nanosec. Opakuji měřit, nikoliv vypočítávat.
Mikropočítač chci použít pro přepočet binárního kódu v délce 32, resp. 40 bit, na BCD kód, který mikropočítač pak odešle k zobrazení na displej. Ten 32, resp. 40 bitový binární kód si miikropočítač načte z hardwarového čítače. Přičemž nejspodnějších 8 bitů je z ECL 8-bit synchronního binárního čítače, který funguje až do 2200 MHz. Za ním následuje klasický 32 bitový synbchronní binární čítač. Hardware mi funguje. Jen neumím převést takto dlouhý binární kód na číslice pro displej. Přece jen odpočítávat 40 LED diod v řadě a z toho která svítí a nesvítí počítat na kalkulačce naměřený kmitočet, to není jaksi dobré.
- petula
- Příspěvky: 836
- Registrován: 22 kvě 2016, 02:00
- Bydliště: Čelákovice / Brandýs n.L / Stará Boleslav
- Kontaktovat uživatele:
A ten 8-bitový PIC bude měřit kmitočet? Oni ty interní "counter/timer" v těch mikropočítačích nefungují moc vysoko, to za prvé. Za druhé, ty čítače/časovače v mikropočítači vyžadují obdélníkový signál s žádoucí ampllitudou, určitě ne sinus. A za třetí, a to je nejpodstatnější, krystal nebo hodinový signál v mikropočítači nemá potřebnou stabilitu, takže ve finále mikropočítačový "čítač" není použitelný k měření kmitočtu. Časová základna pro měřič frekvence je dosti komplikovaná a náročná věc. A nákladná, bohuželMahoney píše: ...
Projekt čítače mě zajímá, sám mám totiž taky v plánu ho stavět, ale já tam budu mít na 100 % 8bit PIC.
![Sad :(](./images/smilies/icon_sad.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Hele já nejsem 🤐, nepochopil jsem co přesně potřebuješ, protože jsem to tu v tomto vláknu nenašel nikde přesně popsané, proto jsem položil doplňující otázku (přiznávám se, že jsem ta vlákna z odkazů tady na fórum neprojížděl celá, jen jsem nahlédl). Aspoň už víme, co je potřeba.
Když budu stavět čítač jako přístroj, tak samozřejmě bude mít všechno co je potřeba, tj. HF předděličku, tvarovače atd atd. Ale o mě se starat nemusíš, já si poradím (jinými slovy, ty máš 40 bitů a nevíš co s nimi, ne já… Snažím se ti pomoct).
Otázka: Když máš HW čítač, proč tam řešíš nějaký MCU na odčítání a rovnou tam nedáš dekodéry na klasický LED displej (nic proti, jen se ptám)? Jestli to potřebuješ převádět třeba na RS232 a posílat někam po sériovce tak to chápu, ale dávat tam MCU jen a pouze kvůli tomu, abych data z HW čítače zobrazil na HD44780 kompatibilním znakovém displeji je, kulantně řečeno, přinejmenším nepraktické (česky řečeno "prostě blbost"). Ještě drobná poznámečka: Když máš HW counter, tak kdybys použíl čítače dekadické místo binárních, nemusel jsi převádět vůbec nic, viz předchozí o dekodérech v tomto odstavci… ale nevadí, obecně můžeš buď sčítat, nebo dělit, to je celý princip převodu.
Přesto přijímám tvůj požadavek tak, jak jsi ho zadal. Vyplývá z toho to, že mezi tím HW counterem co máš a MCU bude ještě multiplexer, který si ten MCU bude řídit sám a pomocí kterého bude odečítat ta data, to je jedna (obvyklá) možnost, druhá možnost (poněkud neobvyklá) je, že místo multiplexeru opravdu můžeš použít MCU "s hodně nožičkama" a udělat to tak. Nevýhoda té druhé možnosti je, že takový MCU rozhodně nebude v DIP/DIL pouzdře… a rozhodně bych v obou případech tak jako tak použil nějaký 5V MCU, tedy za předpokladu, že ten tvůj HW counter je na 5V (to jsem ještě nestudoval).
Otázka zní: Jak tam máš navržený ten multiplexer (případně jakou variantu hodláš při konstrukci použít)?
Edit: Ještě by šly použít PISO registry místo multiplexeru. A ještě něco - na "Marečku, podejte mi pero" nehraju, buď řekneš na rovinu co tam máš a budeš mít a podle toho to napíšem, a nebo ne, tvoje věc, ale já na blbiny okolo nemám čas.
Když budu stavět čítač jako přístroj, tak samozřejmě bude mít všechno co je potřeba, tj. HF předděličku, tvarovače atd atd. Ale o mě se starat nemusíš, já si poradím (jinými slovy, ty máš 40 bitů a nevíš co s nimi, ne já… Snažím se ti pomoct).
Otázka: Když máš HW čítač, proč tam řešíš nějaký MCU na odčítání a rovnou tam nedáš dekodéry na klasický LED displej (nic proti, jen se ptám)? Jestli to potřebuješ převádět třeba na RS232 a posílat někam po sériovce tak to chápu, ale dávat tam MCU jen a pouze kvůli tomu, abych data z HW čítače zobrazil na HD44780 kompatibilním znakovém displeji je, kulantně řečeno, přinejmenším nepraktické (česky řečeno "prostě blbost"). Ještě drobná poznámečka: Když máš HW counter, tak kdybys použíl čítače dekadické místo binárních, nemusel jsi převádět vůbec nic, viz předchozí o dekodérech v tomto odstavci… ale nevadí, obecně můžeš buď sčítat, nebo dělit, to je celý princip převodu.
Přesto přijímám tvůj požadavek tak, jak jsi ho zadal. Vyplývá z toho to, že mezi tím HW counterem co máš a MCU bude ještě multiplexer, který si ten MCU bude řídit sám a pomocí kterého bude odečítat ta data, to je jedna (obvyklá) možnost, druhá možnost (poněkud neobvyklá) je, že místo multiplexeru opravdu můžeš použít MCU "s hodně nožičkama" a udělat to tak. Nevýhoda té druhé možnosti je, že takový MCU rozhodně nebude v DIP/DIL pouzdře… a rozhodně bych v obou případech tak jako tak použil nějaký 5V MCU, tedy za předpokladu, že ten tvůj HW counter je na 5V (to jsem ještě nestudoval).
Otázka zní: Jak tam máš navržený ten multiplexer (případně jakou variantu hodláš při konstrukci použít)?
Edit: Ještě by šly použít PISO registry místo multiplexeru. A ještě něco - na "Marečku, podejte mi pero" nehraju, buď řekneš na rovinu co tam máš a budeš mít a podle toho to napíšem, a nebo ne, tvoje věc, ale já na blbiny okolo nemám čas.
- petula
- Příspěvky: 836
- Registrován: 22 kvě 2016, 02:00
- Bydliště: Čelákovice / Brandýs n.L / Stará Boleslav
- Kontaktovat uživatele:
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Vaše otázka: Když máš HW čítač, proč tam řešíš nějaký MCU na odčítání a rovnou tam nedáš dekodéry na klasický LED displej
Odpověď: je ve vláknu "digitronový čítač" na konci z posledních dní. Jednoduše proto, že vznikne deska 5" x 6.5" a ta je výrobně dnes dost nákladná. Krom toho, jak jsem už právě psal, obecenstvo si žádá LCD displej ...
Vaše otázka: Když máš HW counter, tak kdybys použíl čítače dekadické místo binárních, nemusel jsi převádět vůbec nic
Odpověď: ano to je výborný nápad, jenže v ECL se dekadický čítač dělal naposledy před 40-50 roky u firmy Plessey a fungoval tak někam k 500 MHz. Byl to BCD čítač, jedna dekáda. Dnes je to muzeální kousek v DIL těžko sehnatelný. BCD čítače obecně se blbě konstruují pro vyšší kmitočty. Zkoušel jsem před mnoha lety udělat BCD čítač, jednu dekádu z tranzistorů a dostal jsem se k 700 MHz. Na druhou stranu binární čítače se vyrábí stále v ECL a to jako synchronní a ty "komerční", tedy dostupné fungují až okolo 2000 MHz. Ty nekomerční, nedostupné fungují až k 10 GHz (jsou na GaAs a Bůh ví čem...)
Převod binárního kódu na BCD lze udělat buď softwarově v mikropočítači nebo hardwarově z hradel. Při rostoucím počtu bitů binárního kódu obojí naráží na problémy. V případě konstrukce z hradel, pro 40 bitů to lze řešit reálně v CPLD. Perspektivně na to dojde. U projektu čítače pro místní komunitu řeším převod jen nejvyšších 8 bitů a to dělám pomocí starého CPLD v pouzdru DIL24.
Otázka: Jak tam máš navržený ten multiplexer
ve stávajícím projektu pro místní obecenstvo (viz vlákno "digitronový čítač", ačkoliv digitronový není ...) jsem nahrál na ukázku ráno plošný spoj čítače. Ten je na malé destičce (101 x 52mm), cenově též "ne právě zadarmo". Toto řešení je bez interface k displeji, ale má 10 a půl dekády výstup v BCD přes 3-stavové drivery. Na ně lze napojit přímo dekodéry displeje nebo sběrnici mikropočítače, anebo mikropočítač s expandery (například toto: http://www.jplabs.co.uk/projects/bh3368a.html )
Dnes odpo jsem začal dělat druhou verzi, která se bude lišit těmi výstupními budiči. Ty budou pospojeny do 8 bitové datové sběrnice, vždy dekáda lichá a sudá (tj 0 a 1, pak 2 a 3, 4 a 5, 6 a 7, 8 a 9 a v poslední dekádě pouze QA výstup dekády 10) tedy 5x 8bitů. Každá dvojice dekády bude mít vlastní /CS. Tím pádem MCU na 6 čtení přečte po dvou dekádách. Nejvyšší dekáda má digitt 11 rovný nule a digit 10 může mít stav buď nula nebo jedna na QA. Toto je stále v BCD kódu. Zobrazení je možné stále bez MCU na multiplexovaný displej třeba LED nebo přes MCU. Anebo načtením do MCU a dále výstup kamkoliv. Výhodou je, že v bedně může být více těchto desek čítačů.
Pokud by jsi byl ochoten řešit program pro převod 40-bit binárního kódu do BCD, pak to bude skvělé, Dostaneš gratis jednou v budoucnu 1 kus plošňáku pro ECL čítač). Hardwarově to bude asi takto:
ECL binární 40 bitový čítač , jeho výstupy v PECL logice se převede přes převodníky PECL-TTL na TTL. Těchto 40 bitů se přivede na 8-bitové expandery latche (5 kusů) do kterých se zapíší hodnoty z výstupu čítačů po ukončení hradování. Po zápis dat do latche je může odečít MCU na 5 čteních po 8 bitech... Dál je to na tobě
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Alternativou k MCU s programem, který přepočte 40-bit binární hodnotu na BCD je jen hardwarové řešení v nějakém CPLD. Kolik buněk v CPLD to však zabere, to zatím netuším. To je nutno navrhnout, testovat ... běh na dlouhou trať, protože konstrukce postavená z hradel třeba TTL na prkénku a tatáž konstrukce převedená do CPLD se chová zásadně odlišně. Není to tak, že schema nakreslím do návrhového systému pro CPLD a ono to bude fungovat. Kdysi jsem si to myslel, ale není to tak. Návrh se píše v matematických rovnicích ve Verilogu ...
Ta odkazovaná destička interface s PIC18F45K22 je v podstatě víceméně dost podobná tomu jak jsem si to představoval… dává dost možností co s tím dál (GPIB doufám nechcete
)
CPLD je patrně zbytečný, program jsem ochoten řešit proto sem píšu, předchozí vlákno osazenstva o čítačích číst nehodlám když už vím o co jde, a beru to tak že interface a program pro převod stačí a co si na to kdo navěsí dál za zobrazovadla je na něm (LED a digitrony to mají stejně a LCD znakový displej v podstatě taky, když se zájemce o tento druh zobrazování podívá na ASCII tabulku tak mu to dojde)
Řekni mi prosímtě, co to bude přesně za latche (jinými slovy, proč 5x8 a ne 1x40)? Strobe do latchů si dělá čítač sám, nebo to má udělat MCU (a jestli je ten signál někde k dispozici, pokud ho MCU sám nebude dělat)? Jde mi o to, že jestli si MCU nemůže udělat strobe sám, tak potřebuju vědět, kolik času je na vyčtení, převod atd (a doufám že nedostanu odpověď "Podle časové základny na vstupu", to by nemuselo dopadnout dobře
)?
Ještě podotýkám že 40 bitů v BIN je 12 míst v BCD, to jste trochu ujeli, ne?![Laughing :lol:](./images/smilies/icon_lol.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
CPLD je patrně zbytečný, program jsem ochoten řešit proto sem píšu, předchozí vlákno osazenstva o čítačích číst nehodlám když už vím o co jde, a beru to tak že interface a program pro převod stačí a co si na to kdo navěsí dál za zobrazovadla je na něm (LED a digitrony to mají stejně a LCD znakový displej v podstatě taky, když se zájemce o tento druh zobrazování podívá na ASCII tabulku tak mu to dojde)
Řekni mi prosímtě, co to bude přesně za latche (jinými slovy, proč 5x8 a ne 1x40)? Strobe do latchů si dělá čítač sám, nebo to má udělat MCU (a jestli je ten signál někde k dispozici, pokud ho MCU sám nebude dělat)? Jde mi o to, že jestli si MCU nemůže udělat strobe sám, tak potřebuju vědět, kolik času je na vyčtení, převod atd (a doufám že nedostanu odpověď "Podle časové základny na vstupu", to by nemuselo dopadnout dobře
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Ještě podotýkám že 40 bitů v BIN je 12 míst v BCD, to jste trochu ujeli, ne?
![Laughing :lol:](./images/smilies/icon_lol.gif)