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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » А как вы принимаете по UART (COM порту)?


А как вы принимаете по UART (COM порту)?

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

1

Доброго времени суток, форумчане!

В очередной раз играясь с atmega и UART, возник интерес, а как вы принимаете данные по UART?

Пример:
Необходимо принять 3 байта данных, и разбить из в соответствующие переменные;
Сделать "фильтрацию", чтоб принимались только первые 3 байта из посылки, а остальные не воспринимались;
Прием по прерыванию.

Пример моего кода
Код:
' ========================================================================
'                                                                       МК
' ========================================================================
$regfile = "m8adef.dat"
$crystal = 8000000
' ========================================================================
'                                                                     UART
' ========================================================================
$baud = 9600
On Urxc Priem Nosave

Dim Буфер(3) As Byte
Dim Цикл As Byte
Dim Прием As Bit

Do
   If Прием = 1 Then Gosub Razbor
 nop

Loop

Priem:
Disable Interrupts
   Буфер(1) = Waitkey()
   Буфер(2) = Waitkey()
   Буфер(3) = Waitkey()
   Do
      Мусор = Inkey()
   Loop Until Мусор = 0
   Прием = 1
Enable Interrupts
Return

' ========================================================================
' == разбор принятых данных
' ========================================================================
Razbor:
If Буфер(1) = &H00 Then Nop                                                   ' что нужно выполнить
If Буфер(2) = &H01 Then Nop                                                   ' что нужно выполнить
If Буфер(2) = &H02 Then Nop                                                   ' что нужно выполнить


Буфер(1) = 0
Буфер(2) = 0
Буфер(3) = 0

   Прием = 0
Return

Делитесь своими наработками!

Иногда этот код дает сбои, хочу посмотреть что у вас.

0

2

Да каждый раз по разному, когда приправим CTS, когда добавим бит чётности, иногда смакуем кварцем под нестандартную частоту для 100% передачи данных UART.
Бывает с прерываниями, бывает просто при наличии чего либо в буфере.
Эх... сколько собак на форуме съедено  :rolleyes:
Тайны баяна Uart в бубен храме Bascom
Настройка Uart В Bascom Avr

0

3

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

Делитесь своими наработками!

Да пожалуйста

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » А как вы принимаете по UART (COM порту)?