Разработка системы сбора и обработки данных на базе МК AT90S2313, страница 2

По теоретическому заданию наша система из вне получает некоторые управляющие сигналы, на основании которых принимает соответствующее решение управлениями 5 устройствами. Ядром системы является микроконтроллер AT90S2313. Особенностью данного микроконтроллера является то, что он имеет 15 портов ввода/вывода. Для простоты понимания и реализации будем использовать только 8 разрядные порты B, этого будет вполне достаточно для реализации задания, остальные порты ввода/вывода, во избегания ошибочных данных или управляющих сигналов, заземлим. Из восьми портов, 3 работаю на вход, 5 на выход. На вход подаются некоторые сигналы (например, компьютер соединенный через COM порт), на выходе управляем устройствами. Управление устройствами осуществляется при помощи биполярного (n-p-n) транзистора. Транзистор подбираем таким образом, чтобы он соответствовал заданным теоретическим условиям.

Iк=0,2 Uкэ=24.7 Iбэ=5

Всем этим условиям наш транзистор соответствует с запасом.

При подаче напряжение Vu=5 (напряжение логической «1») транзистор открывается. При Vu=0 (уровень логического «0») транзистор находится в закрытом состоянии, поэтому ток через него не течет, устройство не работает.

Необходимый ток Iб для открытия транзистора формирует резистор R.

Для биполярного транзистор  из этой формулы при минимальном значении («40») Iб=0,005А, при максимальном значении («100») Iб=0,002А.

Определим параметры резистора. .  Из этой формулы значения резистора можно выбирать в пределах от 860 до 2150 Ом. В данной схеме, я думаю будет достаточно если R=1 кОм.

Принципиальная схема

Микроконтроллер

Обозначение

Тип

Примечании

МК

AT90S2313

Резистор

Обозначение

Тип

Примечании

R1

С2-29В, 1кОм + 0,1%

Транзистор

Обозначение

Тип

Примечании

VT

2Т929А

Программареализациимикроконтроллера

. INCLUDE "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\2313def.inc"

.CSEG

.org 0

rjmp Reset    

rjmp INT_0

rjmp INT_1

rjmp Timer1_capt1

rjmp TIM_COMP1

rjmp Timer1_OVF1

rjmp Timer0_OVF0

rjmp UART_RX

rjmp UART_UDRE

rjmp UART_TX

rjmp ANA_COMP 

INT_0:

INT_1:

Timer1_capt1:

Timer1_OVF1:

Timer0_OVF0:

UART_RX:

UART_UDRE:

UART_TX:

ANA_COMP:

reti

Reset:             

            sei 

            clr r0

            clr r16 

            ldi r16,0xF8 

            out $17,r16     .

            ldi r17,0b01000000  

    out TIMSK,r17

            ldi r17,0b00000010

    out TCCR1B,r17

            ldi r17,0x06

    out OCR1AL,r17

            ldi r17,0x00   

    out OCR1AH,r17

;/////////////////////////////////

            ldi r17,0x03

            ldi XH,0x00

            ldi XL,0x43

            st X+,r16

            st X,r17

;////////////////////////////////

start:                          

            in r16,$16  

            inc r0 ;

            cpi r16,0x00

            breq z11

            cpi r16,0x04

            breq z12

            cpi r16,0x02

            breq z13

            cpi r16,0x01

            breq z14

            cpi r16,0x05

            breq z15

            rjmp start

z11:

            ldi r16,0x80

            out $18,r16

            clr r16

            out $18,r16

            ldi r17,0x04

            out $16,r17

            rjmp start

z12:

            ldi r16,0x40

            out $18,r16

            clr r16

            out $18,r16

            ldi r17,0x02

            out $16,r17

            rjmp start

z13:

            ldi r16,0x20

            out $18,r16

            clr r16

            out $18,r16

            ldi r17,0x01

            out $16,r17

            rjmp start

z14:

            ldi r16,0x10

            out $18,r16

            clr r16

            out $18,r16

            ldi r17,0x05

            out $16,r17

            rjmp start

z15:

            ldi r16,0x08

            out $18,r16

            clr r16

            out $18,r16

            ldi r17,0x00

            out $16,r17

            rjmp start

rjmp start  

TIM_COMP1:           

     ldi r17,0x00           

    out TCNT1H,r17

    out TCNT1L,r17

            ldi r18,0x11

            ldi r19,0x00

            out EEAR,r19

            ldi XH,0x00

            ldi XL,0x41

loop:   

            ld r20,X+

            ldi r21,0x04

            out EECR,r21

            ldi r22,0x02

            out EECR,r22

            out EEDR,r20

            inc r19

            dec r18

            cpi r18,0x00

            brne loop

reti

 
Литература

  1. Квеглис С.В.  Микроконтроллеры AVR: Методическое пособие – Новосибирск: Изд-во НГТУ, 2003 – 56с
  2. Описание микроконтроллера AT90S2313 (Английская версия)
  3. www.cec-mc.ru
  4. www.analog.com
  5. www.amtel.ru
  6. www.chipinfo.ru
  7. www.shema.ru