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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Часы с GPS по UART


Часы с GPS по UART

Сообщений 31 страница 38 из 38

31

Waitkey() подразумевает ожидание символа в буфере. Если бы его не было, остальная часть кода и не работала бы. Хотя с Инкей() та же фигня.
Нет, глюк где-то в массиве кроется.
А как вообще отследить причину зависания?

Код:
   Do
      B = Waitkey()                                         ' берем символ из буфера в формате ASCII

        If B = 36 Or B = 46 Then                            ' $=36 ascii  начало строки
            Z = 0
            Buf_count = 0
'            Reset Watchdog
         End If

        If B = 82 Then Z = 1                                'нашли букву R (82 ascii)

           If Z = 1 Then Incr Buf_count

           If Buf_count = 5 Or Buf_count > 6 Then S = Chr(b)
           If Buf_count = 6 Then Sh = S + Chr(b)

              Varval = Val(sh) + 3                          ' для добавления часового пояса
           If Varval > 23 Then Varval = Varval - 24

              I(1) = Varval / 10
              I(2) = Varval Mod 10

           If Buf_count = 7 Then I(3) = Val(s)
           If Buf_count = 8 Then I(4) = Val(s)
           If Buf_count = 9 Then I(5) = Val(s)
           If Buf_count = 10 Then I(6) = Val(s)

   Loop

0

32

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

Waitkey() подразумевает ожидание символа в буфере. Если бы его не было, остальная часть кода и не работала бы. Хотя с Инкей() та же фигня.

Inputbin пробовали ?
Или - мимо пролетело ? ;)

0

33

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

Inputbin пробовали ?
Или - мимо пролетело ?

Не пробовал. А что это даст? Символы принимаются без проблем.
Куском кода If Buf_count = 5 Or Buf_count > 6 Then S = Chr(b)
я вообще вырезал из строки кусок, где только время, то есть цифры.. Маловероятно, что где-то поймался какой-то код или мусор..

0

34

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

Не пробовал. А что это даст?

Чтоб увидеть, что это даст - надо попробовать или почитать тут https://avrhelp.mcselec.com/
Ничего не даст только "ничегонепробование"... ;)

0

35

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

А что это даст?

Вопрос в способе приема.
Inputkey и Waitkey работают с ASCII кодами, Inputbin - просто с байтами.
Принципиально (побитно) разницы нет, но тем не менее...

Я уже сказал ранее, что это дало в моем случае...
Например, при отправке 0 принималось 48, 13, 10...
В разной последовательности. Можно было "словить", например - 10, 13, 10, 48, 13...
Были пропуски команд.

После замены на Inputbin все встало на свои места, четко и железно.
Причем, отправляется все, как ранее - Print, код передатчика не переписывался.

0

36

Inputbin не помог. Глюк, как оказалось, что при переполнении переменной Buf_count МК просто останавливается.. Прописал ей вместо Byte - Integer или Word, тогда появилась надежда, что до переполнения она раньше сброситься в 0.
Ну или для Byte
вписал принудительное обнуление от переполнения
Incr Buf_count : If Buf_count > 100 Then Buf_count = 20   
Вообще странно. При переполнении переменной Byte до 255, она должна обнулятся. А вместо этого микроконтроллер просто тупо останавливается.. Причем не просто останавливался, но еще И ЕЕПРОМ умудрялся обнулять..

Отредактировано goldskif (Вчера 12:27:11)

0

37

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

Вообще странно. При переполнении переменной Byte до 255, она должна обнулятся. А вместо этого микроконтроллер просто тупо останавливается.. Причем не просто останавливался, но еще И ЕЕПРОМ умудрялся обнулять..

Первый раз такое слышу. Такого просто не может быть. Ищите ещё глюки, они есть точно.

0

38

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

Inputbin не помог. Глюк, как оказалось, что при переполнении переменной Buf_count МК просто останавливается..

Да ну... Что-то тут не так... Чудес не бывает... ;)
sva-don правильно говорит - "ищите женщину"... ;)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Часы с GPS по UART