roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 15:33

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 04 мар 2010, 20:13 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
а BAUD RATE компа и мк совпадают ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 04 мар 2010, 20:20 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Наверняка да.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 04 мар 2010, 20:21 
Не в сети

Зарегистрирован: 04 мар 2010, 16:00
Сообщения: 11
прог. языки: asm, C, php, paskal
поржал над своим прошлым кодом )).

Код:
si8:      
         ldi r16,'1'
         SBIS UCSRA,UDRE      
         RJMP si8
         sbi UCSRB, TXB8
         OUT   UDR, R16

aaa:      ldi r16,'2'
         SBIS UCSRA,UDRE      
         RJMP aaa
         sbi UCSRB, TXB8
         OUT   UDR, R16
         
bbb:      ldi r16,'3'
         SBIS UCSRA,UDRE      
         RJMP bbb
         sbi UCSRB, TXB8
         OUT   UDR, R16
         
                  ret


3k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k1
23k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k1
23k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k123k1
23k123k123k123k123k123k123k123k123k123k123k123k123k1љ3k123k123k123k123k123k123k1
23k123k123k123k123k123k123k123k1љ3k1љ3k1™3k1љ3k123k123k123k123k123k123k123k123k1
23k1™3k1™3k123k1™3k123k123k123k123k1љ3k123k1™3k123k1™3k1љ3k123k123k1™3k123k1™3k1
23k1™3k123k1љ3k123k123k123k123

Сделал с начало тагже тока reti попробовал вроде тагже тупила потом пенял на ret и если не глючит стал работать нормальней .. возможно что это изза кривова применениЯ reti ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 04 мар 2010, 20:22 
Не в сети
Аватара пользователя

Зарегистрирован: 20 сен 2007, 11:44
Сообщения: 491
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич
А чем тх комплит не приглянулся? тхв8 - это на случай девятибитной передачи, тогда именно нужно смотреть очистку удр и впихивать его туда
а передачу второго байта нужно делать по тхс=1 причем потом его зачистить надо - это если руцями, логичнее следующий байт слать по прерыванию тхс


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 04 мар 2010, 20:28 
Не в сети

Зарегистрирован: 04 мар 2010, 16:00
Сообщения: 11
прог. языки: asm, C, php, paskal
черт ,, ТОЧНО... так и есть надо слать по прирыванию txc а так он отсылает их но так быстро что терминал склеивает их вот и вылетают русские сиволы .. ладно убегаю на треньку вот досада не успеваю протестить, потом отпешусь..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 05 мар 2010, 00:33 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Хм. Все время для передачи пользовался UDRE на аврках - проблем не было никогда... Использование TXC уменьшит реальную скорость передачи - дырки могут появиться между байтами. Кстати, может в этом и дело, может там 2 стопбита надо?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 05 мар 2010, 01:21 
Не в сети

Зарегистрирован: 04 мар 2010, 16:00
Сообщения: 11
прог. языки: asm, C, php, paskal
Спасибо вам ребята выручили, отдельный респект Victorovych .

выкладываю конечный на 100% рабочий код может кому пригодится.

Код:
.include "m8def.inc"
         
         ;инициализация таблицы прерываний
rjmp init
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
rjmp t1      ;RXCIE(UCSRB)    RXC(UCSRA) Прерывания прием по USART завершен.
reti
reti
reti
reti
reti
reti
reti



;======================================================

init:       ;инициалищация уарт
         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

         ;разрешения режима sleep
         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,0      ; Скважность 0%
         OUT   OCR1BL,R16


         ;разрешения прерываний
         sei


         ; укладываем мк спать , подьём по прерыванию.
pause:      sleep
         rjmp pause

;=========================================================================================

t1:         in r16,UDR


uart_snt:   SBIS UCSRA,UDRE      
         RJMP uart_snt
         OUT   UDR, R16
            
         cpi r16,'k'
         breq si8

         cpi r16,'z'
         breq ledon

         cpi r16,'x'
         breq ledoff

         cpi r16,'+'
         breq plus

         cpi r16,'-'
         breq min
         
         cpi r16,'9'
         breq speed9
         
         cpi r16,'1'
         breq speed1

         cpi r16,'0'
         breq speed0

         cpi r16,'q'
         breq mot1left

         cpi r16,'w'
         breq mot1stop

         cpi r16,'e'
         breq mot1right

         cpi r16,'a'
         breq mot2left

         cpi r16,'s'
         breq mot2stop

         cpi r16,'d'
         breq mot2right         

                  
         reti
;============================================================================================

si8:      
         ldi r16,'1'
         SBIS UCSRA,UDRE      
         RJMP si8
         SBIS UCSRA,TXC
         RJMP si8
         sbi UCSRA, TXC
         OUT   UDR, R16

aaa:      ldi r16,'2'
         SBIS UCSRA,UDRE      
         RJMP aaa
         SBIS UCSRA,TXC
         RJMP aaa
         sbi UCSRA, TXC
         OUT   UDR, R16
         
bbb:      ldi r16,'3'
         SBIS UCSRA,UDRE      
         RJMP bbb
         SBIS UCSRA,TXC
         RJMP bbb
         sbi UCSRA, TXC
         OUT   UDR, R16
         
         reti



ledon:      ldi r16,0b00000010
         out PORTC,r16
         reti

ledoff:      ldi r16,0b00000000
         out PORTC,r16
         reti

plus:      in r16,OCR1BL
         inc r16      
         OUT   OCR1BL,R16
         reti

min:      in r16,OCR1BL
         dec r16      
         OUT   OCR1BL,R16
         reti

speed9:      LDI   R16,255      
         OUT   OCR1BL,R16
         reti

speed1:      LDI   R16,150   
         OUT   OCR1BL,R16
         reti

speed0:      LDI   R16,0
         OUT   OCR1BL,R16
         reti

mot1left:   cbi portC, 5
         sbi portC, 4
         reti

mot1stop:   cbi portC, 4
         cbi portC, 5
         reti

mot1right:   cbi portC, 4
         sbi portC, 5
         reti


mot2left:   cbi portC, 3
         sbi portC, 2
         reti

mot2stop:   cbi portC, 2
         cbi portC, 3
         reti

mot2right:   cbi portC, 2
         sbi portC, 3
         reti


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 05 мар 2010, 10:23 
Не в сети

Зарегистрирован: 04 мар 2010, 16:00
Сообщения: 11
прог. языки: asm, C, php, paskal
Люди киньте пожалуста куски кода, как вы реализивали эту задачу(отправка по uart нескольких символов).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти ошибку в коде (asm)
СообщениеДобавлено: 05 мар 2010, 11:12 
Не в сети
Аватара пользователя

Зарегистрирован: 20 сен 2007, 11:44
Сообщения: 491
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич
Тупо и цинично :D


Вложения:
nod.rar [1.25 КиБ]
Скачиваний: 7
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO