PARALLEL PORT PROGRAMMER FOR ATMEGA 16/32

fiercebunElectronics - Devices

Nov 2, 2013 (3 years and 10 months ago)

183 views

PARALLEL PORT PROGRAMMER FOR

ATMEGA 16/32


In
-
system programmer means we can design a programmer circuit using simple parallel
port interfacing such that our controller can be directly burned with the program while in the
designed system or circuit
board.

Following pins of Atmega16 is used in programmer circuit
-


Pin NO.

Description

6

MOSI (SPI Bus Master Output/Slave Input

7

MISO (SPI Bus Master Input/Slave Output)

8

SCK (SPI Bus Serial Clock)

9

Reset

10

Vcc

11

Ground

Table
-
Atmega16 Pins


SCK


Port B, Pin 7

SCK: Master Clock output, Slave Clock input pin for SPI channel. When the SPI is
enabled as a Slave, this pin is configured as an input regardless of the setting of
DDB7.When the SPI is enabled as a Master; the data direction of this pi
n is controlled
by DDB7. When the pin is forced by the SPI to be an input, the pull
-
up can still be
controlled by the PORTB7 bit.

• MISO


Port B, Pin 6

MISO: Master Data input, Slave Data output pin for SPI channel. When the SPI is
enabled as a Master, th
is pin is configured as an input regardless of the setting of
DDB6. When the SPI is enabled as a Slave, the data direction of this pin is controlled by
DDB6. When the pin is forced by the SPI to be an input, the pull
-
up can still be
controlled by the PORTB
6 bit.

• MOSI


Port B, Pin 5

MOSI: SPI Master Data output, Slave Data input for SPI channel. When the SPI is
enabled as a Slave, this pin is configured as an input regardless of the setting of DDB5.
When the SPI is enabled as a Master, the data direction
of this pin is controlled by
DDB5. When the pin is forced by the SPI to be an input, the pull
-
up can still be
controlled by the PORTB5 bit.

• RESET
-
Pin 9

Reset Input. A low level on this pin for longer than the minimum pulse length will
generate a reset, e
ven if the clock is not running.

• VCC
-
Pin 10

Digital supply voltage(+5V).

•GND
-
Pin
-
11

Ground.

Parallel Port
-

Parallel Port interfacing is the simplest method of interfacing. Parallel Port’s are
standardized under the IEEE 1284 standard first released in

1994. It has data transfer
speed up to 1Mbytes/sec. Parallel port is basically the 25 pin Female connector (DB
-
25)
in the back side of the computer (Printer Port). It has 17 input lines for input port and 12
pins for output port. Out of the 25 pins most p
ins are Ground and there is data register
(8 bit), control register (4 bit) and status register (5 bit).




Fig
-
Pin diagram of Parallel
Port

Following Pins are used in parallel port
-

Pin No.

Description

7,8,9

Data pins

10

Status pin

19

Ground

Table
-

Parallel Port Pins

Interfacing
-

In programmer circuit pins of parallel port which are above described has to interface
with pins of ATmega16 microcontroller which are responsible for in
-
system
programming. The parallel port can be interfaced directly with microcontroller. To avoid
revers
e current we can use Schottkey diodes as safety precaution for pc motherboard.

Following pins of Parallel Port and ATmega16 are to be interfaced
-

Parallel Port

Atmega16

Pin 7

Reset (Pin 9)

Pin 8

SCK (Pin8)

Pin 9

MOSI (Pin6)

Pin 10

MISO(Pin7)

Pin 19

Ground(Pin11)

Interface Connections



Fig
-
Circuit Diagram of ATmega16 Programmer

SOFTWARES USED
:

WinAVR


WinAVR is open source package in which we use two sub
-
programs


Programmers Notepad & Mfile.

Version
-


2.0.8.718
-
basic

Creator
-


Simon Steele

Purpose
-


1. To write code.




2. To compile coding.




3. To generate Hex Code.


4. To burn Hex code

Steps for Compiling and Burning Process
-

1.

Open Programmers Notepad [WinAVR] from “Start

All programs


WinAVR
-
20090313”, write the code. Save the program into a specified folder whose name is
same as the File name.

2.

Open MFile [WinAVR] from “Start

All programs


WinAVR
-
20090313” apply
following steps
-

I.

Select Microcontroller type which is Atmega16 or A
tmega32 whichever you
are using.



(CLick To Enlarge)

II.

Select output format as “ihex”.

III.

Select Debug format as “avr
-
ext
-
COFF (AVR Studio 4.07+, VMLAB3.10+).



(CLick To Enlarge)

IV.

Select programmer option as “bsd”.

V.

Select output port as lpt1
because we are using Parallel port (0X378 is the
address of Parallel port).

VI.

Save As the file as Mfile format in the same folder where the program file is
saved. Name of the Mfile should me kept Makefile only; don’t change it to any
other name.

VII.

Reo
pen the saved Mfile in Notepad.exe and correct F_CPU to 1 MHz and
write the target name same as Program file name. Save the Mfile.



(CLick To Enlarge)

3.

Open programmer Notepad select Tools

[WinAVR] Make All option to compile
and create hex code Hex co
de.

4.

After successful compilation the hex file is saved automatically into the same folder
in which the program file and the Makefile are already saved.

5.

Connect parallel port of burner to the CPU of your PC and select Tools

[WinAVR]
Program option to

burn Hex code.

6.

Below is the snapshot of the output window which displays all the actions
being taken and their status.



(CLick To Enlarge)

COMMON ERRORS ENCOUNTERED

First Error

avrdude: AVR device not responding

avrdude: initialization failed, rc=
-
1

Double check connections and try again, or use
-
F to override

this check.

avrdude done. Thank you.

make.exe: *** [program] Error 1

Second Error:

avrdude: Device Signature=0xffffff.

avrdude: Yikes! Invalid device Signature.

Double check connections and try
again, or use
-
F to override

this check.

avrdude done. Thank you.

make.exe: *** [program] Error 1




Hello friends ,

here is a small video tutorial on how to communicate to
devices connected to our PCs parallel port using MATLAB
programming. A large number of applications can be thought of using
MATLAB as a platform in robotics. The digital bit data obtained at the
para
llel port can be utilized for driving DC motors or Stepper motors or
other actuators
.


%Code to transmit bits to the Parallel Port.

%The output1 & output2 matrix bits are transmitted sequentially.


parlport = digitalio('parallel', 'LPT1');

line = addline(p
arlport, 0:3, 'out');

output1 = [0 0 0 1; 0 0 1 1; 0 1 1 1; 1 1 1 1; 0 0 0 0];

output2 = [1 0 0 0; 1 1 0 0; 1 1 1 0; 1 1 1 1; 0 0 0 0];

for m=1:5


for x = 1:5


pval1 = output1(x,:);


putvalue (parlport, pval1);


pause(0.3);


end


for

y = 1:5


pval2 = output2(y,:);


putvalue (parlport, pval2);


pause(0.3);


end

end