Chapter 1: Hello Embedded World - Programming 16-bit

advertisement
Chapter 1
The First Flight
Creating the first project and saying
“Hello to the Embedded World”
Part 2
Debugging and the Watches window
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
I/O ports
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Debugging PORTA
int main( void)
{
PORTA = 0xff;
TRISA = 0;
return 0;
}
// all PORTA pins output
 Debugging
functions:
Build Project for debugging and enter Debug Mode:
 Exit Debug Mode
 Step Over
 Run (Debug Mode)

Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Configuring the PIC24
/*
** config.h
**
** "Flying PIC24" projects device configuration
*/
#include <xc.h>
_CONFIG1(
&
&
&
&
JTAGEN_OFF
GCP_OFF
GWRP_OFF
ICS_PGx2
FWDTEN_OFF)
//
//
//
//
//
disable JTAG interface
disable general code protection
disable flash write protection
ICSP interface (2=default)
disable watchdog timer
_CONFIG2(
&
&
&
IESO_OFF
FCKSM_CSDCMD
FNOSC_PRIPLL
POSCMOD_XT)
//
//
//
//
two speed start up disabled
disable clk-swithcing/monitor
primary oscillator: enable PLL
primary oscillator: XT mode
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Creating an Include folder
Create a folder called “include” at the top
level of your working directory (Flyingpic24)
 Save the config.h file in it
 Example:

FlyingPIC24/

include/

config.h

1-HelloWorld.X/

Hello1.c

nbproject/

...

Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
To calculate a path, start from
the nbproject folder:
../../include
Add the Include Path

Add the Include Path to the project properties
1-Select the xc16-gcc options
2-Select the Preprocessing and
Messages options
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
3-Provide a path to the Include
folder
Hello2.c – Using config.h
/*
** Hello Embedded World
**
** Hello2.c controlling PORTA pin direction
*/
#include <config.h>
// set the configuration bits
int main( void)
{
PORTA =
0xff;
TRISA =
0;
return 0;
}
// configure all PORTA pins as outputs
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Hello3.c – Using Port B
/*
** Hello Embedded World
**
** Hello3.c Testing PORTB, another surprise!
*/
#include <config.h>
int main( void)
{
PORTB =
0xff;
TRISB =
0;
return 0;
}
// configure all PORTB pins as outputs
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
AD1PCFG register
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Hello4.c – Port B under Control
/*
** Hello Embedded World
**
** Hello4.c learning to control the Analog Pins
*/
#include <config.h>
int main( void)
{
PORTB
= 0xff;
AD1PCFG = 0xffff;
TRISB
= 0;
return 0;
}
// all PORTB as digital
// all PORTB as output
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Notes for Assembly Experts


You can still take a look at the assembly code
generated by the compiler
Learn to trust it!
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Meet the Dashboard

All the information about your project at a
glance
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Tips and Tricks

Interfacing to 5V input and output signals is
possible with some caution:
Digital Input pins are 5V tolerant
 Digital Output pins can be configured as Open Drain
 Use the ODCx registers to configure an output pin for
Open Drain mode.
 Watch Out! Pins that are multiplexed with analog
functions are NOT 5V tolerant!

Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Suggested Excercises

To test the PORTB example (Hello4.c):


Connect a Voltmeter to pin RB0
Watch the needle move as you single step through the code.
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Recommended Readings
Kernighan, B. & Ritchie, D.
The C Programming Language
Prentice-Hall, Englewood Cliffs, NJ




When you read or hear a programmer talk
about the “K&R” … they mean this book!
Also known as “the white book”, the C
language has evolved quite a bit since the
first edition was published in 1978!
The second edition (1988) includes the
more recent ANSI C standard definitions
of the language
The MPLAB C32 compiler adheres to the
ISO/IEC 9899:1990 (also known as C90)
standard
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Online Resources

http://en.wikibooks.org/wiki/C_Programming
This is a Wiki-book on C programming and as such it
is a bit of a work in progress. It’s convenient if you
don’t mind doing all your reading online.
 Hint: look for the chapter called “A taste of C” to find
the omnipresent “Hello World!” example.


http://publications.gbdirect.co.uk/c_book/

This is the online version of The C Book, second
edition by Mike Banahan, Declan Brady and Mark
Doran, originally published by Addison Wesley in
1991. This version is made freely available.
Di Jasio – Programming 16-bit Microcontrollers in C (Second Edition)
Download