Схема предстовляет из себя 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(на уровне терминала) для связи с мк и сам мк с несложным обвесом.
Планируется усовршеснтвовать прогу на делфи чтобы она использовала своего рода списки, где каждая строчка содержит информацию какому мотору надо крутится и сколько , эти строки ( команды) будут отправлятся на мк он в совю очередь будет подсчитывать сколько оборотов сдел указанный движок и сообщать о результатах обратно.
А списки будут создаватся путем ручного перемещения манипулятора и сохранения кардинат всех осей.

 
 
 
 


 
 
