Схема предстовляет из себя Atmega8 + L293D(пара калекторных электроматоров) + max232 . Работает таким образом, я отправляю через терминал символ, мк отправляет его обратно и выполняет подпрограмму этого символа( скважность шим , управления драйвером моторочиков). Все в общем работало как надо, но когда я в подпрограмме (si8:) указал отправить на пк символ (t) в терминал приходит кракозябра (єієіє»єkt·єµ) а должны приходить (kt). Не как не могу понять почему это происходит, вед отправка осуществляется тока после проверки на пустой UDR . Темболие этот-же код отправляет символ обратно и все работает без сбоев.
Компилятор - AvrStudio
- Код: Выделить всё
.include "m8def.inc"
rjmp init
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
rjmp t1
reti
reti
reti
reti
reti
reti
reti
;================================
init:
;инициализация uart
LDI r16, low(47)
OUT UBRRL,r16
LDI r16, high(47)
OUT UBRRH,r16
ldi r16,0b11111000
out UCSRB,r16
ldi r16,0b10000110
out UCSRC,r16
ldi r16,0b11111111
out DDRB,r16
ldi r16,0b00000000
out PORTB,r16
ldi r16,0b11111110
out DDRC,r16
ldi r16,0b00000001
out PORTc,r16
ldi r16,0b00100000
out MCUCR,r16
; SBI DDRB,1
SBI DDRB,2
LDI R16,(0<<COM1A1)|(1<<COM1B1)|(1<<WGM10) ; Инициализация PWM
OUT TCCR1A, R16
LDI R16,(1<<WGM12)|(1<<CS10) ; Режим Fast PWM
OUT TCCR1B, R16
LDI R16,100 ; Скважность 0%
OUT OCR1BL,R16
sei
; и понеслась
pause: sleep
rjmp pause
;=========================================================================================
;t1- срабатывает по приходу символа
t1:
in r16,UDR
;отправляю символ обратно
uart_snt:
SBIS UCSRA,UDRE
RJMP uart_snt
OUT UDR, R16
;поиск подпрограммы, их в оригенале больше просто чтобы не отнимать ваше время сократил код.
cpi r16,'k'
breq si8
reti
;============================================================================================
si8:
ldi r16,'t'
SBIS UCSRA,UDRE
RJMP si8
OUT UDR, R16
reti
Если когонебудь из начинающих интерисует данная тема обращайтесь буду рад помоч ICQ 2003751 .
В данный момент реализованна программа на Delphi7(на уровне терминала) для связи с мк и сам мк с несложным обвесом.
Планируется усовршеснтвовать прогу на делфи чтобы она использовала своего рода списки, где каждая строчка содержит информацию какому мотору надо крутится и сколько , эти строки ( команды) будут отправлятся на мк он в совю очередь будет подсчитывать сколько оборотов сдел указанный движок и сообщать о результатах обратно.
А списки будут создаватся путем ручного перемещения манипулятора и сохранения кардинат всех осей.