Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Вопрос по теме Исследование USART


Вопрос по теме Исследование USART

Сообщений 1 страница 6 из 6

1

sasha_1973 у меня вопрос по  теме "Исследование USART"
а именно "Связь по USART 4 х Atmega2560"

там при передаче пакета USART "сьедает" нулевой байт в пакете. как побороть эту беду?

0

2

Penumbra написал(а):

там при передаче пакета USART "сьедает" нулевой байт в пакете. как побороть эту беду?


Вы имели ввиду, byte = 0 или самый первый байт или что-то ещё ?

0

3

извиняюсь, был в командировке , не было возможности ответить..
все вроде решил:
в коде отправки в usart

......
Loadadr Usart_3_output_buffer_str , X
   !add R26 , R16
   !clr R16
   !adc R27 , R16

   !ld R16 , X
   !cpi R16 , 0
   !BRNE Transmitter_sumbol_usart_3

   !lds R16 , Ucsr3b
   !andi R16 , &B_1101_1111
   !sts Ucsr3b , R16

   !rjmp Exit_transmitter_data_usart_3

Transmitter_sumbol_usart_0:

..............

завенил  на

......
   !sts {Usart_3_count_transmitter} , R16

   If Usart_3_count_transmitter = N_byte Then Goto Ttt2

   Loadadr Usart_3_output_buffer_str , X
   !add R26 , R16
   !clr R16
   !adc R27 , R16

   !ld R16 , X
   !jmp Transmitter_sumbol_usart_3
   !cpi R16 , 254
   !BRne Transmitter_sumbol_usart_3
Ttt2:
   !lds R16 , Ucsr3b
   !andi R16 , &B_1101_1111
   !sts Ucsr3b , R16

   !rjmp Exit_transmitter_data_usart_3
....
и все  заработало, теперь посылка ограничивается не символом chr(13)  а колвом байт N_byte

0

4

Penumbra написал(а):

и все  заработало, теперь посылка ограничивается не символом chr(13)  а колвом байт N_byte


Чудненько, НО есть маленькое, или ОГРОМНОЕ    НО !!!

Использовать синтаксис Bascom там, где используется инструкция Nosave, не совсем правильно, точнее, совсем не правильно.

Вам просто повезло, что Bascom использовал регистр "R16" для "If Usart_3_count_transmitter = N_byte Then Goto Ttt2", в другой раз, везение закончится и начнётся геморрой.

0

5

ага, а можно примерчик как правильно? я уже ломал голову но я в асме не очень ..

0

6

Penumbra написал(а):

а можно примерчик как правильно?

Один из вариантов

'===============================================================================
  Usart_3_output_data:
'-------------------------------------------------------------------------------
    !Push R16
    !In R16 , Sreg
    !Push R16

    !in R16 , RAMPZ
    !Push R16

    !push R26
    !push R27

    !lds R16 , {Usart_3_count_transmitter}
    !inc R16
    !sts {Usart_3_count_transmitter} , R16

    'If Usart_3_count_transmitter = 10 Then Goto Ttt2
    !lds R26 , {N_byte}
    !cp R16 , R26
    !BREQ Ttt2       'Перейти если равно

    Loadadr Usart_3_output_buffer_str , X
    !add R26 , R16
    !clr R16
    !adc R27 , R16
    !ld R16 , X
    !jmp Transmitter_sumbol_usart_3
    !cpi R16 , 254
    !BRne Transmitter_sumbol_usart_3

   Ttt2:
    !lds R16 , Ucsr3b
    !andi R16 , &B_1101_1111
    !sts Ucsr3b , R16

    !rjmp Exit_transmitter_data_usart_3

   Transmitter_sumbol_usart_3:
    !sts udr3 , R16

   Exit_transmitter_data_usart_3:
    !pop R27
    !pop R26

    !pop R16
    !out RAMPZ  , R16

    !pop R16
    !Out Sreg , R16
    !Pop R16

    !reti
'-------------------------------------------------------------------------------
  Return
'===============================================================================

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Вопрос по теме Исследование USART