Vous êtes sur la page 1sur 63

AVR

81130033
81130010
81130013

AVR
AVR 8 .
RISC .
.

.
c , BASIC :
.

AVR
TINYAVR
AT90S or AVR
MEGAAVR

TINYAVR
ATTINY10,ATTINY 11,ATTINY 12
ATTINY15L
ATTINY26, ATTINY26L
ATTINY28, ATTINY28L

AT90S or AVR
AT90S1200
AT90S2313
AT90S2343, AT90S2323
AT90S8515
AT90S8535

MEGAAVR
ATMEGA323
ATMEGA32
ATMEGA128
ATMEGA163
ATMEGA8
ATMEGA8515
ATMEGA8535

ATMEGA32
AVRRISC .
- .

131 .
32*8 . - 16MIPSA 16MHZ

ATMEGA32

32K FLASH . :FLASH 1000

1024 EEPROM . : EEPROM 100000

2K SRAM - FLASH .EEPROM

ATMEGA32

- 8 - 16 4 PWM 8 8 1 WATCHDOG SPI . SPI MASTER SLAVE- )(TWO-WIRE

ATMEGA32



CMOS
RC
6 : SLEEP
(POWERDOWN,IDLE,POWERSAVE,
STANDBY,ADC NOISE REDUCTION,
)EXTENDED STANDBY

ATMEGA32

4.5V - 5.5V


0MHZ - 16MHZ

I/O
32 - /

Pin Configurations

Pin Descriptions
VCC Digital supply voltage.
GND Ground.
Port A (PA7..PA0) Port A serves as the analog
inputs to the A/D Converter
Port B (PB7..PB0) Port B is an 8-bit bi-directional
I/O port with internal pull-up resistors
Port C (PC7..PC0) Port C is an 8-bit bi-directional
I/O port with internal pull-up resistors
Port D (PD7..PD0) Port D is an 8-bit bi-directional
I/O port with internal pull-up resistors

Pin Descriptions
RESET Reset Input. A low level on this pin for longer
than the minimum pulse length will generate a reset,
even if the clock is not running.
XTAL1 Input to the inverting Oscillator amplifier
and input to the internal clock operating circuit.
XTAL2 Output from the inverting Oscillator
amplifier.
AVCC AVCC is the supply voltage pin for Port A and
the A/D Converter. It should be externally
connected to VCC, even if the ADC is not used. If
the ADC is used, it should be connected to VCC
through a low-pass filter.
AREF AREF is the analog reference pin for
the A/D Converter.

ATMEG32
ATMEG32 2
.
FLASH
ERASE

.

(FUSE HIGH BYTE)


FUSE HIGH BIT NO
BYTE
OCDEN
7
JTAGEN

SPINE

CKOPT

DESCRIPTION DEFAULT
VALUE
ENABLE OCD
1
ENABLE JTAG

ENABLE SERIAL
PROGRAM AND
DATA DOWNLOAD
4
OSCILLATOR
OPTION

(FUSE HIGH BYTE)


FUSE HIGH
BYTE

BIT DESCRIPTION
NO

DEFAULT
VALUE

EESAVE

EEPROM MEMORY
IS PRESERVED
THROUGH THE
CHIP ERASE

BOOTSZ1

SELECT BOOT SIZE

BOOTSZ0

SELECT BOOT SIZE

BOOTRST

SELECT RESET
VECTOR

: BOOTRST BOOT
0000
.
(. )BOOTSZ1,0
BOOT
RESETADD

BOOTSZ1 BOOT SZ0 BOOT SIZE PAGE

$3F00
$3E00

4
8

256 WORD
512 WORD

1
0

1
1

$3C00

16

1 1024 WORD

$3800

32

0 2048 WORD

(FUSE LOW BYTE)


FUSE HIGH BIT
NO
BYTE

DESCRIPTION

DEFAUL
T
VALUE

BODLEVEL

BODEN

SUT1

BROWN OUT DETECTOR


TRIGGER LEVEL
BROWN OUT DETECTOR
ENABLE
SELECT START-UP TIME

SUT0

SELECT START-UP TIME

1
1

(FUSE LOW BYTE)


FUSE HIGH BIT
NO
BYTE

DESCRIPTION

DEFAUL
T
VALUE

CKSEL3

SELECT CLOCK SOURCE

CKSEL2

SELECT CLOCK SOURCE

CKSEL1

SELECT CLOCK SOURCE

CKSEL0

SELECT CLOCK SOURCE

BROWN-OUT :BODEN
.

BODEN,BODLEVEL

BROWN-OUT DETECTION

11

DISABLE

10

DISABLE

01

ATVCC=2.7V

00

ATVCC=4.0V

Clock Distribution

ATMEG32
: CLKcpu AVR
:CLKI/O I/O
SPI,USART .
: CLKFLASH FLASH .
CPU .
:CLKASY 32768HZ
SLEEP.
ADC: CLKADC CPU,I/O
) (HALT
.

ATMEG32
ATMEG32
)( .
DEVICE CLOCKING OPTION

CKSE3
0
EXTERNAL CRYSTAL/CERAMIC RESONATOR 1111-1010
EXTERNAL LOW-FREQUENCY CRYSTALIC
EXTERNAL RC OCSILLATOR

1001
1000-0101

CALIBRATED INTERNAL RC SCILLATOR

0100-0001

EXTERNAL CLOCK

0000

: WATCHDOG
CPU POWER-DOWN POWER-SAVE

) (START-UP
WATCHDOG .

:

XTAL1,XTAL2 .

) (START-UP CKSEL0,SUT10

:
32.768KHZ CKSEL
1001 .
XTAL1,XTAL2 .
CKOPT
.
.

RC:
RC XTAL1 .
) f=1/(3RC .
22PF.
CKOPT
36PF XTAL1 GND
. .

4 :


SUT :

RC :
RC 1,2,4,8MHZ
5V .
CKSEL
.
CKOPT
.

RC :


SUT :

:

XTAL1 .
CKSEL 0000 .
CKOPT
36PF XTAL1 GND .


SUT :

/:
ATMEGA32
TOSC1 TOSC2 /
.
32.768MHZ
.

/ 0 2
.


10

65-260
FREESINGLE
SINGLE
. )( GETADC .
ADC FREE ADC
UPDATE.

ADC

ADC BASCOM
ADC :BASCOM
CONFIG ADC = SINGLE/FREE,PRESCALER = AUTO
,REFRENCE=OPTIONAL

:CONFIG ADC= SINGLE/FREE SINGLE


FREE
:PRESCALER = AUTO ADC . PRESCALER
= AUTO

ADC .
:REFRENCE=OPTIONAL .
:OPTIONAL
: OFF .
: AVCC AVCC .
:INTERNAL
AREF .

)(: GETADC
) (0-7
)Var=GETADC(channel
.
Var channel 0 7.

)( START )(STOP
ADC START ADC ADC .
STOP ADC ADC .
ADC ADC
ADC .

)(AIN0
) (AIN1 .

) (AC0 .
.
CAPTURE
/ .

BASCOM

BASCOM

CONFIG ACI =ON/OFF, COMPARE = ON/OFF, TRIGGLE=TOGGLE,RISING/FALLING

: CONFIG ACI = ON/OFF


.
:COMPARE = ON/OFF AC0 ON
CAPTURE/ .
: TRIGGLE=TOGGLE,RISING/FALLINGl
.

: FALLING
.
: RISING
.
: TOGGLE
.

SPI
FULL-DOPLEX
SLAVE/MASTER
MSB LSB

SPI
SCK MASTER SLAVE
SPI CPU MASTER SPI
MOSI MASTER MOSI
SLAVE .
MASTER SPI
.

SPI
[SPI CONTROL REGISTER]SPCR-SPI

[SPI STATUS REGISTER]SPSR-SPI

[SPI DATAREGISTER]SPDR-SPI

[SPI CONTROL REGISTER]SPCR-SPI


: SPIE7 SPI
: SPE-6 SPI .
DATA ORDER : DORD-5
LSB .
MSB .

: MSTR-4 SLAVE/MASTER
CLOCK POLARITY : CPOL-3

SPI SCK
.

CLOCK PHASE : CPHA-2


SPR0SPI CLOCK SELECT : SPR1
MASTER .

SPI
CPOL CPHA


OSC

[SPI STATUS REGISTER]SPSR-SPI


: SPIF
.WRITECOLLISIONFLAG : WCOL-6

SPDR .

: 1..5 .
DOUBLE SPI SPEED BIT : SPI2X-0
MASTER .

[SPI DATAREGISTER]SPDR-SPI
SPI /
.
SPI .

.

SPI BASCOM

SPI :BASCOM

= CONFIG SPI = HARD,INTERRUPT=ON/OFF,DATA ORDER = LSB/MSB,MASTER


YES/NO,POLARITY=HIGH/LOW,PHASE=0/1,CLOCK
RATE=4/16/64/128,NOSS=0/1

INTERRUPT=ON/OFF
:DATA ORDER = LSB/MSB

:MASTER = YES/NO MASTER


YES . NO

: POLARITY=HIGH/LOW SPI
HIGH .
:CLOCK RATE=4/16/64/128 . SPI

NOSS=0/1

: ON.

LSB LSB MSB

: MASTER /SS
SLAVE .

EEPROM
: WRITEEEPROM

var ADDRESS EEPROM


WRITEEEPROM var , ADDREESS
.

: READEEPROM

EEPROM ADDRESS
var BYTE .
READEEPROM var , ADDREESS

SLEEP
.1 : IDLE
CPU .

SPI, ANALOG CAMPARATOR,


ADC TIMER/COUNTER,WATCHDOG
.

. 2 :ADC NOISE REDUCTION


FLASH,I/O,CPU .
ADC
.
ADC .
ADC
ADC .
ADC
INT2 WATCHDOG 2
EEPROM .

. 3 :POWER- DOWN
.
WATCHDOG
.
WATCHDOG
INT2 BROWN-OUT
INT0 INT1
.

. 4 :POWER- SAVE
POWER-DOWN .
:
/
AS2 ASSR
.
/
POWER-DOWN .

. 5 :STANDBY

.
POWER-DOWN .
:
. 6 .

. 6 :EXTENDED-STANDBY

.
POWER-SAVE .
:
. 6 .

: 4*4 BASCOM

LCD 16*2 .
)( GETKBD
15 LCD
.

4536565654211121
564321564

42

31 2 1

ON

PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0

PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0

D7 D6 D5 D4 D3 D2 D1 D0 E RW RS

VEE VDD VS

5V

$regfile = m32def.dat

$crystal = 8000000

Config LCD = 16*2

Config Kbd = portc

Dim Row AS Byte , Column AS Byte


Column = 1: Row = 1

Main:

A = Getkbd()

If A > 15 Then Go to Main

Locate Row ,Column

LCD A

Waitms 500

Incr Column

If Column>15 Then

Column = 1: Incr Row

End If

If Row >2 Then

Cls : Row = 1

End If

Jmp Main

End

Vous aimerez peut-être aussi