upc eetac_1


Project P9: Introducing the microcontroller (μC)


Commercial devices, IDE, program flow in C and basic I/O

1. Specifications

- The aim of this project is to solve a combinational circuit 4-bit BCD adder (Adder_BCD_1digit) using a microcontroller μC). This goal implies:

1) getting in touch with a commercial device from Microchip, for instance the PIC18F4520, learning how to compile a C language code and simulate the project using Proteus. And also:

2) pay attention on how the C code is organised and how to configure digital inputs and outputs.


Fig 1. The symbol of the 1-digit BCD adder indicating where to connect the input and output ports.

Solve yourself the truth table of this device which is very similar to the classic chip MC14560  represented in Fig. 2.

You may wonder why an error signal is required in this chip.

Fig 2. The classic chip MC14560 that we try to recreate as a way to learn on digital inputs and outputs and code organisation in a microcontroller. This chip is not new for you because it could have been proposed in P3 as another arithmetic circuit, thus we'll concentrate our efforts in the new μC technology to implement it.

Learning materials and tutorials:

Indeed, Let's go to the laboratory to discover the new set of tools to work with micrcocontrollers running a tutorial on a similar combinational circuit. The teaching method will be as usual in CSD, the project-based learning (PBL) designing practical examples. Even of you find it confusing or somewhat disorganised we can tell you that there is nothing like learning by doing practical examples and at the same time studying the required theory. This is the tutorial:

-  Dual_MUX4 (PIC18F4520 / PIC16F877A / ATmega8535).

- Commercial devices: For instance: Microchip PIC16F/PIC18F and AVR ATmega architectures, the integrated development environment (IDE), C language compiler, microcontroller simulation (Proteus - VSM) and training and prototyping boards (PICDEM2 plus, AVR mega 16/32 starter development board, Arduino, etc.).

Atmel AVRPIC's

Fig 3. Families of Microchip microcontrollers. Atmel has become a Microchip division with all its microcontroller portfolio embedded in Microchip web.

- Preferred devices and IDE tools (depending on the semester) already installed and tuned in our Ravada computer:

  • Atmel Studio. Recommended the v.6.2 SP2 already available in our labs. Now, MPLAB X v.5.0 also supports AVR μC.

  • MPLAB X)

This is a list of some more introductory topics on microcontrollers. Pay attention to the idea of tri-state gates and bidirectional wires and busses. How to set the direccion (TRISn) of a pin as input or as output?


2. Planning

1) Project locations and file names:


2) Organise the hardware. Draw your circuit in a sheet of paper and discuss where to connect: Reset (CD), crystall oscillator and digital I/O.

3) Organise the code as in Fig. 4 using a program flowchart: Init_system(), read_inputs(), algorithm, truth table or data processing, and write_outputs(). Pay attention on hardware-dependent functions (input, output and set-up) and software (or platform independent) functions (the truth table) which is drawn using a different colour. Define the internal variables that will allow the processing of the truth table without regarding the way the PORT pins have been read or written.

 Coding the applications in C in our own CSD style. Some initial notes.

Fig. 4.  Software organisation for this simple example.

Fig. 5.  Convenient variables "Var" that will allow the processing of information in truth_table() independently of the microcontroller hardware. 

Variables will be stored in RAM memory addresses and so, they are volatile.

Bitwise operations. This is example of how you can organise the reading of a variable. And these (1) - (2)  are examples on how to write a given variable using bitwise C instructions. 


4) Plan a sequence for building and debugging the application: the idea is "plan & develop & test" step by step introducing a few lines of code at a time. For instance: 1) solve the code for reading only the Cin pin, compile, run and test the Var_Cin variable using the watch window; 2) add the code for reading only the operant A, run and test it, etc.

3. Development

1) Draw the schematic of the application in Proteus copying an example or tutorial which already contains the microcontroller that you have to use. Here you are an Atmega8535 version in which you can replace the Atmel chip by the PIC16F877A (or the PIC18F4520) and rewire the pins.


Fig. 6. The Adder_BCD_1digit symbol and electrical connections as captured in Proteus.

Below you can see the internal architecture (child sheet) based on the PIC16F877A.


2) Run the microcontroller's IDE to develop and compile the C code copying and adapting an example code: PIC18F4520 / PIC16F877A / ATmega8535. Do it section by section according to your plan, testing if it works before adding new code.

For example, as indicated in the planning above, complete the operations for watching the Var_Cin variable; then repeat it all for watching the variable Var_A, and so on. Use tutorial examples to copy and adapt the C source file. Remember that, as usual, C code is not valid unless you are translating a flow chart.


4. Testing 

) Run the Proteus simulator. Do it in step by step mode while watching variables and placing break points..

Fig. 7.  The circuit in "run" mode while monitoring the variables in the "watch" window.

5. Report

Having solved this introductory project, also means that you are able to answer most of the questions listed here.

Do you become fully aware now on how designing an example also means learning the "theory" ?:

Having solved the project in paper, you are always in time to publish your project report using a word processor: scanned figures, file listings, docx , pptx, or any other resources.  

Remember that in class you'll be required to explain any section of your project individually or in group.


6. Prototyping

You're invited to download the application to a given training board an verify that it works as expected and the same as in the simulator.


Other similar projects on sequential circuits

Books, web pages, etc.

By the way, the Arduino platform is another microcontroller which has become famous, so that you can program it using "*.ino" source files and its development environment, or instead using "*.c" files and Atmel Studio IDE. Remember that here at the EETAC we have the license to simulate Arduino boards and applications in Proteus. Hence, you are invited to try your own projects. This is a sample.

- Exams, questions, problems and projects


Other materials of interest

Indeed, there are thousands of resources in books and through the internet to learn the basics on microcontrollers (microprocessor, program memory, RAM memory, I/O, peripherals, etc.). For instance (1), from where this image in Fig. 7 is taken:


Fig. 8.  The idea of a microcontroller (or microcomputer) integrating many dedicated peripherals, memory and a microprocessors in a single chip.