Initial commit

This commit is contained in:
Pascal Engélibert 2022-09-19 18:41:09 +02:00
commit 05cd190c53
Signed by: tuxmain
GPG key ID: 3504BC6D362F7DCA
155 changed files with 49378 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,64 @@
+++
title = "Aŭtonoma Atmega328P, paŝ-paŝe"
date = 2022-09-12
description = "Facila gvido por programi aŭtonoman Atmega328P-on kun Arduino."
[taxonomies]
tags = ["elektroniko", "Arduino"]
+++
Ĉ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 uzante unu [simpla ]
Si vous n'avez aucun condensateur de 22pF, vous pouvez en récupérer dans un vieil appareil (par exemple il y en a plein dans les magnétoscopes). Malheureusement les condensateurs traversants de cette valeur ont l'air assez rares, donc vous devrez peut-être récupérer plein de condensateurs montés en surface et trouver les bons en fabriquant un [capacimètre tout simple avec une Arduino](https://www.instructables.com/Capacitance-Meter/).
## Circuit
{{ float_img(alt="Circuit for programming the Atmega using an Arduino.", src="circuit.png", style="max-height:100vh;max-width:100%;") }}
La description des broches de l'Atmega328P peut être trouvée dans [sa fiche technique](atmega328p.pdf).
* 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 :
1. Ouvrez le programme d'exemple `ArduinoISP`.
1. Si vous utilisez une Arduino Uno, décommentez la ligne `#define USE_OLD_STYLE_WIRING`.
1. Choisissez votre carte dans le _Type de carte_ (_Arduino Micro_ pour moi).
1. Choisissez votre programmateur habituel (en général _AVR ISP_).
1. Envoyez le programme normalement.
Nous pouvons enfin programmer le microcontrôleur :
1. Ouvrez le programme voulu. (ou testez avec l'exemple `Blink`)
1. 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)
1. Choisissez le programmateur _Arduino as ISP_.
1. Si le microcontrôleur ne contient pas encore de bootloader, faites _Outils -> Graver la séquence d'initialisation_.
1. Envoyez le programme avec _Croquis -> Téléverser avec un programmateur_.

View file

@ -0,0 +1,62 @@
+++
title = "Atmega328P indépendant, pas à pas"
date = 2022-09-12
description = "Guide simple pour programmer un Atmega328P indépendant avec une Arduino"
[taxonomies]
tags = ["électronique", "Arduino"]
+++
Ce guide décrit comment programmer un microcontrôleur Atmega328P en utilisant une carte Arduino comme programmateur, et un oscillateur 16MHz externe. Il est le résultat de la frustration qu'ont provoqué chez moi toutes les tentatives infructueuses et les lectures de tutoriels incomplets. Maintenant que j'ai trouvé une méthode qui marche, je la publie ici afin de ne pas la perdre.
## Matériel nécessaire
* Atmega328P (le P change tout)
* Arduino board (j'ai utilisé une Arduino Micro)
* oscillateur 16MHz
* 2× condensateur 22pF
* résistance 10kΩ
* condensateur 100µF
### Note
Si vous n'avez aucun condensateur de 22pF, vous pouvez en récupérer dans un vieil appareil (par exemple il y en a plein dans les magnétoscopes). Malheureusement les condensateurs traversants de cette valeur ont l'air assez rares, donc vous devrez peut-être récupérer plein de condensateurs montés en surface et trouver les bons en fabriquant un [capacimètre tout simple avec une Arduino](https://www.instructables.com/Capacitance-Meter/).
## Circuit
{{ float_img(alt="Circuit for programming the Atmega using an Arduino.", src="circuit.png", style="max-height:100vh;max-width:100%;") }}
La description des broches de l'Atmega328P peut être trouvée dans [sa fiche technique](atmega328p.pdf).
* 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 :
1. Ouvrez le programme d'exemple `ArduinoISP`.
1. Si vous utilisez une Arduino Uno, décommentez la ligne `#define USE_OLD_STYLE_WIRING`.
1. Choisissez votre carte dans le _Type de carte_ (_Arduino Micro_ pour moi).
1. Choisissez votre programmateur habituel (en général _AVR ISP_).
1. Envoyez le programme normalement.
Nous pouvons enfin programmer le microcontrôleur :
1. Ouvrez le programme voulu. (ou testez avec l'exemple `Blink`)
1. 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)
1. Choisissez le programmateur _Arduino as ISP_.
1. Si le microcontrôleur ne contient pas encore de bootloader, faites _Outils -> Graver la séquence d'initialisation_.
1. Envoyez le programme avec _Croquis -> Téléverser avec un programmateur_.

View file

@ -0,0 +1,62 @@
+++
title = "Standalone Atmega328P guide"
date = 2022-09-12
description = "Simple guide to program a standalone Atmega328P using an Arduino."
[taxonomies]
tags = ["electronics", "Arduino"]
+++
This guide describes how to burn a program into an Atmega328P microcontroller, using an Arduino board as programmer and an external 16MHz oscillator. It's the result of the frustration that every single time I wanted to to this, it was a struggle because I couldn't find any _complete_ tutorial. At least, the following works for me.
## Materials needed
* Atmega328P (the P matters)
* Arduino board (I used an Arduino Micro)
* 16MHz oscillator
* 2× 22pF capacitors
* 10kΩ resistor
* 100µF capacitor
### Notes
If you don't have any 22pF capacitor, you can salvage some capacitors from an old device (e.g. there are plenty in videotape readers). Unfortunately through-hole capacitors with this value look pretty rare, so you may need to salvage a bunch of unmarked surface-mounted ones and [build a simple Arduino-based capacitance meter](https://www.instructables.com/Capacitance-Meter/) to find the wanted ones.
## Circuit
{{ float_img(alt="Circuit for programming the Atmega using an Arduino.", src="circuit.png", style="max-height:100vh;max-width:100%;") }}
Check Atmega328P's pinout [in the datasheet](atmega328p.pdf).
* Connect the MOSI, MISO, SCK(=SCLK) pins on the Arduino to the corresponding ones on the Atmega. (on Arduino Uno, they are respectively on pins 11, 12, 13)
* Connect Arduino pin 10 to Atmega's Reset pin.
* Connect each pin on the oscillator to the XTAL/TOSC pins on the Atmega, and place a 22pF capacitor between each of these two pins and the GND.
* Connect the GNDs together. Connect Atmega's VCC, Atmega's AVCC and Arduino's +5V together.
Triple-check the wiring. MOSI goes on MOSI and MISO goes on MISO, they are not swapped.
### For normal operation
The following connections are only needed when the microcontroller is disconnected from the Arduino.
* Place a pull-up resistor on the Reset pin (10kΩ resistor between Reset and VCC).
* Place a 100µF capacitor between GND and VCC.
* The oscillator and ceramic capacitors are still needed.
* VCC and AVCC still have to be connected.
## Program
I'm using the Arduino IDE.
First, we program the Arduino board to make it operating as a relay between the computer and the microcontroller:
1. Open the example sketch `ArduinoISP`.
1. If using an Arduino Uno, uncomment the line `#define USE_OLD_STYLE_WIRING`.
1. Choose your programmer board as board type (_Arduino Micro_ in my case).
1. Choose a regular programmer (typically _AVR ISP_).
1. Upload the sketch normally.
Now we can program the microcontroller:
1. Open the wanted sketch. (or start with the `Blink` example)
1. Choose _Arduino Uno_ as board type. (even if you're using another board as a programmer; it's because a standalone Atmega328P with a 16MHz oscillator behaves like an Arduino Uno)
1. Choose _Arduino as ISP_ as programmer.
1. If your microcontroller doesn't contain a bootloader yet, upload the bootloader using _Tools -> Burn bootloader_.
1. Upload the sketch using _Sketch -> Upload using programmer_.