roboforum.ruТехнический форум по робототехнике. |
|
|
blindman писал(а):Так надо проверять флаг ошибки CRC перед тем как принятый пакет использовать
ПринятьДанные:
Text_priem = ""
'Переводим передатчик в режим IDLE
Команда = Команда_idle : Gosub ПослатьКоманду
'Обнулим FIFO RX
Команда = Команда_frx : Gosub ПослатьКоманду
'Обнулим FIFO TX
Команда = Команда_ftx : Gosub ПослатьКоманду
Команда = Команда_rx : Gosub ПослатьКоманду
Do
If Gdo0 = 1 Then Goto Zbend
Loop
Zbend:
Do
If Gdo0 = 0 Then Goto Zbend0
Loop
Zbend0:
'1 длина
'2 канал
'3-n пакет
Регистр = Регистр_rxbytes : Gosub ПрочитатьСтатус
If Статус = 0 Then Goto Zbok
Zb_cs = 0
Команда = Регистр_rxfifob : Статус = Spimove(Команда)
Статус = Spimove(Команда) ': Print Hex(Статус);
Длина = Статус - 1
Статус = Spimove(Команда) ': Print Hex(Статус) ; "-"; ' #1 ,
For I = 1 To Длина
Статус = Spimove(Команда) :
Text_priem = Text_priem + Chr(Статус): ' #1 ,данные
Ucsr0b.rxen0 = 0
Print Chr(Статус); ' #1 ,данные
Ucsr0b.rxen0 = 1
Next
'нужно ли переотправить код
If Text_priem = "+-*/*/+-++" Then
Isread = 0:
Text = Cpytext: 'копия строки для повторной отправки
'отправка сообщения
Gosub ОтправитьДанные:
Text = "":
Goto Zbok
End If
Ucsr0b.rxen0 = 0
Print
Ucsr0b.rxen0 = 1
Статус = Spimove(Команда) : 'Print Hex(Статус);
Статус = Spimove(Команда) : 'Print Hex(Статус)
Zb_cs = 1
'выборка из 7го бита CRC_OK
If Статус.7 = 0 Then
'запрос на переотправку сообщения
Isread = 0:
Text = "+-*/*/+-++" 'кодовое слово означающее переотправить сообщение
Gosub ОтправитьДанные
Text = "":
Goto Zbok
End If
Zbok:
Return
Do
If Gdo0 = 1 Then Goto Zbend
Loop
Zbend:
$prog &HFF , &HAD , &HD7 , &HF8 ' для мегаплаты
'$prog &HFF , &HE0 , &HDD , &HF9 ' для минибота 2.0
Config Pinb.1 = Output : Zb_cs Alias Portb.1 : Zb_cs = 1 ' для мегаплаты
'Config Pinb.0 = Output : Zb_cs Alias Portb.0 : Zb_cs = 1 ' для МиниБот 2.0
Const Регистр_freq2 = &H0D 'подстройка при калибровке платы
Const Регистр_freq1 = &H0E 'подстройка при калибровкеплаты
Const Регистр_freq0 = &H0F 'подстройка при калибровке платы
'Мощность приемо-передатчика
Число = &H44 : Gosub ЗаписатьВТаблицуМощностей '44 '46 'HBF 'FB
Вернуться в МиниБот — национальный класс роботов
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14