ATTINY4313 výstupy a propojení čítačů

No jo, jenže když nastavíš normální režim a ne CTC, tak z čítače nedostaneš tech 125 Hz, ale 122,0703125 Hz.

Jinak z věty “Můj problém s pamětí spočívá hlavně v mé lenosti naučit se pořádně Céčko.” mi plyne, že “nejsou lidi a hlavně buňky.” asi nebude úplně pravda, protože jak můžeš vědět, že nejsou buňky, když nejsou lidi a je lennost.

[code] TCCR0A=0b00010010;
OCR0A=249;
OCR0B=249;
TCCR0B=0b00000100;

        TCCR1B=0b00000110;

[/code]
Výše zmíněný kód jsem zkoušel v AVR Studiu a tváří se, že normálně funguje.

[code] TCCR0A=0b01010010;
OCR0A=249;
OCR0B=249;
TCCR0B=0b00000100;

        TCCR1B=0b00000110;

[/code]
A tenhle druhý kmitá oběma pinama.
Oba kódy slouží jako zdroj hodin pro Timer 1. Jen musíš počítat s tím, že hodiny pro Timer 1 mají poloviční kmitočet - tedy 62,5 Hz. Musíš upravit hodnoty OCR0x, abys dostal požadovaný kmitočet.

Na reálném mcu jsem to zatím nezkoušel, ale chodilo jak v AVR Studiu, tak i v simulátoru, který používám při vývoji zařízení.

Mimochodem - stejně si myslím, že softwarové čítání Tě bude stát pár bytů, bude mnohem jednodušší, ušetříš pin a časovač. Kromě toho, když v tom přerušení budeš i načítat tlačítka, pak máš velmi jednoduše ošetřené zákmity, rozlišené dlouhé a krátké stisky apod.


A teď ke zbytku :

"Taková knihovna pro ovládání displaje spolkne snad 1KB, knihovna pro OneWire je to samé, interní fce Delay také není žádný drobek. Nejspíš mi teď poradíš abych si naprogramoval lepší rutiny, jenomže nejsou lidi a hlavně buňky. Ale kdybys měl nějaký tip odkud ty rutiny importovat, tak se zlobit nebudu."

Funkci Delay se vyhybej jako čert kříži. Tu používej maximálně na čekání v jednotkách ms a i to je pro mcu věčnost.

Stahováním knihoven se nic nenaučíš. Ovládání znakovýho LCD není vůbec nic složitýho a zabere jenom minimální místo v paměti. Když si vezmeš k ruce datasheet, máš všechny funkce řadiče naprogramovaný za odpoledne a ještě se něco naučíš. Ovládání 7-segmentových čísel je jenom o malinko složitější, než blikání LEDkou. Totéž platí i pro 7-segmentové LCD displeje. Obzvlášť pro ty, které mají jenom jednu BP.

OneWire je také jednoduché - obzvlášť, pokud bys měl připojené jenom jedno čidlo na pinu. Algoritmus pro zjištění počtu čidel je o něco složitější, ale komunikace je shodná, jako když komunikuješ jenom s jedním. Jde jenom o data… Ale opět to chce vzít do ruky datasheet a testovat.

Pro zajímavost :
1-wire knihovna + ovládání 1-wire teploměru (2 knihovny dohromady)

  • se čtením počtu a kódů 1-wire zařízení = 934 bytů - hlavně kvůli vyhledávacímu algoritmu a při čtení se data rozhazují podle toho, z jakého čidla se četlo.
    Pro čipy, které mají instrukci “mul” (čipy ATmega) je to méně - u ATtiny4313 (a myslím, že u všech ATtiny) se musí násobení dělat softwarově.
  • pro jeden 1-wire teploměr na pinu = 386 bytů

Knihovna pro znakový LCD :
Délka překladu se liší podle použité komunikace s displejem (podmíněný překlad)

  • 8-bitová komunikace : 156 bytů
  • 4-bitová komunikace : 226 bytů
  • SPI interface 1 (8-bitová data přes 74595 + signály WR a EN ) : 186 bytů
  • SPI interface 2 (8-bitová data přes 74595 včetně WR a EN - vlastní modul) : 278 bytů
  • I2C interface (SW I2C pro čip PCA9555) : 618 bytů

Nějak tedy nevidím důvod, proč používat pro LCD knihovnu, která zabere 1 kB, když si mohu napsat svojí a ještě se něco naučit. Kdybych tenkrát při prvním použití displeje sedl k Internetu a hledal knihovnu, tak bych do dneška lepil zapojení podle knihovny. To, co jsem vypsal jsou jenom ty způsoby komunikace, které jsem už použil.

Je mi jasný, že namítneš “Proč bych měl programovat něco, co se dá někde najít a stáhnout.”.
Na to já odpovídám : "Aby ses něco naučil."

Věř mi, že pokud uvidíme snahu, pak pomůžeme/poradíme. Nebudeme tady ale řešit domácí úkoly, což na nás tady více či méně zaobaleně také někteří zkouší - poradíme, nasměrujeme, ale neřešíme.