Skip to main content

Použití samostatného čipu ATmega328P

Někdy se v projektu vyplatí použití samostatného čipu. Projekty pro realizování určitého projektu s malým odběrem, třeba pro CR2032 baterii. Samotný čip může pracovat i při 1MHz, bez použití čipu. Výhoda je pak nízký odběr. Samotný čip, pak ani nepotřebuje regulátor, když se dodrží, že bude třeba adaptér 5V. Když tedy se využije třeba ta baterie CR2032, tak čip bude funkční i když bude napětí klesat. Čip má v sobě krystal 8MHz, když nebudete v projektu potřebovat 16MHz, tak si vystačíte v čipu. Tím, že použijeme interní krystal, se nám sníží paměť z 32 256 bitů na pouhých 30 720, takže ztratíme skoro 2kB paměti, ale u menších projektů by to neměl být problém. 

Seznam součástek, pro provoz samotného čipu

ATmega328p

Kondenzátory 18-22pF (Když budeme chtít použít externí krystal)

Crystal od 8MHz do 20MHz

Odpor 10kOhm

Samotný čip je nastavený tak, že jde do něj nahrávat program bez použití krystalu. Čip sobě nemá bootloader, pro nahrávání programu ho budeme potřebovat, protože má sobě nastavení + po nahrání jde nahrávat program přes tx a rx, tím jde pak nahrát i na dálku přes bluetooth. Jako první si přidáme do arduino ide možnosti práce s čipem, kdyby byl čip pro provoz přes externí 16MHz, není potřeba nic dalšího, ale zde počítáme i z možnosti použití čipu na jiné frekvenci. Zde si stáhněte kody, nebo si v programu arduino ide nastavte ve vlastnosti „správce dalších desek URL:“ přidejte toto: https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json . Po přidání MiniCore je potřeba v manažer desek instalovat.

Předpokládá se, že máte u sebe jedno arduino uno. Přes které budeme nahrávat program do samotného čipu. Do arduino uno nahrajeme program ArduinoISP, ten najdeme v menu soubor – příklady – ArduinoISP, a nahrajeme do arduina.

Arduino UnoSamotný čip ATmega328P
Reset pin 10PIN 1 (PC6) RESET
MOSI pin 11PIN 17 (PB3) D11
MISO pin 12PIN 18 (PB4) D12
SCK pin 13PIN 19 (PB5) D13
VCCPIN 7 VCC
VCCPIN 20 AVCC
GNDPIN 8 GND
GNDPIN 22 GND
Důležitá informace

Když je čip nastavený na externí krystal, tak je potřeba vždy nahrávat a měnit pojistky jen za použití krystalu, když třeba budete mít nastaveno, že čip využívá externí krystal, tak nebude možné program ani změna pojistek provést, dokud nedáte správný krystal externí nebo nepoužijete pro reset 12 voltů. Při použití jiné frekvence, se může změnit i maximální rychlost komunikace.

jestli tedy máte vše správně připojené, tak je v arduino ide potřeba nastavit programátor Arduino as ISP, a v nastavení MiniCore si zvolíme frekvenci, jakou budeme potřebovat, třeba když máme krystal, tak zvolíme externí. Při použití krystalu vnitřního (Internal) , tak už není potřeba využití krystalu. Když budeme chtít využít malé napětí , třeba 1.8 voltů, tak je potřeba to nastavit v BOD, jinak když klesne napětí pod třeba 2.7 voltů, tak se čip vypne, u využití nízkého napětí je možné tuto kontrolu vypnout (disabled). A teď už stačí vypálit zavaděč. Jakmile je nahrán, je možné nahrávat programy jak přes ISP (nahrát pomoci programátoru), tak přes TX a RX (nahrát přes sériový převodník s podporou resetu).

Důležitá informace

Bootloader nese informaci nastavení frekvece, když je nastavený vnitřní krystal, a vy vypálíte nastavení 8MHz, ale pak se rozhodnete pro frekvenci 4MHz (ale už znovu nevypálíte nové nastavení), tak na rozdíl od externího vám program poběží, ale nebude vám vycházet čas.