Serial port and Max232 to ensure ATMega can talk to pc, receiving the compiled code and eventually outputting some results when specified.
Note the AutoReset voice near the port: when ATMega receives code, first of all it needs a reset command to shut any other operation down; so it frees the resources to write the new binary code into its flash memory.
By short-circuiting with a jumper we enable automatically this signal every time new communications from pc start, so avoiding to press the button every time it's required.
The picture above shows the position of AutoReset pins on the board.
The serial port (or the USB/Serial) is not the only way to communicate with the ATMega on Arduino.
Let's see the other ways.
We have the ICSP headers too, which support only one-way signals: from outside to ATMega.
In the series of articles related to the boot-load burning, we talked about how to use them to write a small program into flash memory to let the ATMega make bunch of things of which to communicate through a USB or serial port.
Furthermore, the more visible headers, which can be divided into:
- power (6 pins, analogic), of which we talked above about the regulators output voltages;
- input (6 pins, analogic), to give ATMega the input signals which it will treat;
- input output (8 + 8 pins, digital), which to get input and output signals from.
Far away from being an exhaustive explanation, we're trying to guide you into a compact vision of the first part of the design, where every needed piece is interconnected.
So we finish noting the last three main components:
- the external clock (crystal oscillator, or ceramic resonator) which gives the timing for the micro-controller's activity;
- the momentary switch button;
- The ICSP Headers, for external programming or burning of the micro-controller.
By pressing the button we short-circuit the reset pin (pin 1) of ATMega to ground, while normally it is separated from ground by a resistor: in logical speech, we give a low signal in input which resets the controller (reset pin is negated, so low input will give high output, that is here a reset command).
That's all for now.
We summarize all these aspects in the presentation video below.
See you on next article.