Ĉi tiu gvido priskribas kiel programi aŭtonoman mikrokontrolilon Atmega328P uzante karton Arduino, kaj exteran oscilatoron je 16MHz. Ĝi rezultas el mia frustro kaŭzita de ĉiuj miaj malsukcesaj provoj, kaj de legoj de malkompletaj instruiloj. Nun mi trovis funkciantan metodon, mi ĝin publikigas tie por ne perdi ĝin.
§Necesa aparataro
- Atmega328P (la "P" gravas)
- karto Arduino (mi uzis unu Arduino Micro)
- oscilatoro 16MHz
- 2× kondensiloj 22pF
- rezistilo 10kΩ
- kondensilo 100µF
§Komento
Se vi ne havas kondensilon je 22pF, vi povas trovi iujn en malnovaj aparatoj (ekzemple, videosurbendigiloj enhavas multan). Malfeliĉe la trairantaj kondensiloj je tiu valoro ŝajne malabundas, do vi eble devos malveldi multajn surfacajn kondensilojn kaj trovi la bonaj per simpla faradmetron, kion vi povas konstrui facile.
§Cirkvito
Trovu la priskribon de la stiftoj de la Atmega328P en ĝia lernolibro.
- Connectez les broches MOSI, MISO, SCK(=SCLK) de l'Arduino aux broches correspondantes de l'Atmega. (sur l'Arduino Uno, ce sont respectivement les broches 11, 12, 13)
- Connectez la broche 10 de l'Arduino à la broche Reset de l'Atmega.
- Connectez les deux pôles de l'oscillateur aux broches XTAL/TOSC de l'Atmega, et placez un condensateur de 22pF entre ces pôles et le GND.
- Connectez les GNDs. Connectez les VCC de l'Atmega, AVCC de l'Atmega et +5V de l'Arduino.
Vérifiez bien les branchements. Le MOSI va sur le MOSI et le MISO sur le MISO, ils ne sont pas échangés.
§En production
Les branchements suivants sont nécessaires seulement quand le microcontrôleur n'est pas connecté à l'Arduino.
- Placez une résistance pull-up sur Reset (une résistance de 10kΩ entre Reset et VCC).
- Placez un condensateur de 100µF entre GND et VCC.
- L'oscillateur et les petits condensateurs sont toujours nécessaires.
- VCC et AVCC doivent toujours être reliés.
§Programmation
J'utilise l'IDE Arduino.
D'abord, programmons l'Arduino pour en faire une sorte de relais entre l'ordinateur et le microcontrôleur :
- Ouvrez le programme d'exemple
ArduinoISP
. - Si vous utilisez une Arduino Uno, décommentez la ligne
#define USE_OLD_STYLE_WIRING
. - Choisissez votre carte dans le Type de carte (Arduino Micro pour moi).
- Choisissez votre programmateur habituel (en général AVR ISP).
- Envoyez le programme normalement.
Nous pouvons enfin programmer le microcontrôleur :
- Ouvrez le programme voulu. (ou testez avec l'exemple
Blink
) - Choisissez le type de carte Arduino Uno. (même si vous utilisez une autre carte comme programmateur ; c'est parce qu'un Atmega328P seul avec un oscillateur 16MHz se comporte comme une Arduino Uno)
- Choisissez le programmateur Arduino as ISP.
- Si le microcontrôleur ne contient pas encore de bootloader, faites Outils -> Graver la séquence d'initialisation.
- Envoyez le programme avec Croquis -> Téléverser avec un programmateur.