Действительно, проблемы некоторые присутствовали
Например, старый исходник ( из версии 1.11.9.8 ) термометра с динамической индикацией на 7-сегментниках и Тиньке26 не хотел дружить с новой версией компилятора, в частности с 2.0.5.0. Да и не только он. Вообще, любой проект, где присутствовали прерывания таймеров и ADC - отказывались работать в железе, хотя компилились без лагов! После установки 2.0.7.1 - глюки сами собой рассосались. Скорее всего версия 2.0.5.0 - просто кривая была . Кстати сказать, и USB-программатор с ней не работал, а с 2.0.7.1 -работает!
У меня была обратная история - когда разбирался с библиотекой от дисплея Nokia 1100, программа, использующая ее, нормально компилировалась только в 2050 (2071 у меня тогда не было), а в безглючной 1.11.9.8 лезли ошибки.
Gordon Shumway писал(а):У меня была обратная история - когда разбирался с библиотекой от дисплея Nokia 1100, программа, использующая ее, нормально компилировалась только в 2050 (2071 у меня тогда не было), а в безглючной 1.11.9.8 лезли ошибки.
Я в "безглючной" 1.11.9.8 совсем недавно словил один некислый глюк. А именно если в тексте программы было задано Config Printx = PortX.Y, компилятор это намертво запоминает и последующее удаление этой строчки ни на что не влияет. После перепрошивки PortX.Y остаётся в режиме, привязанном к соответствующему UART!
Я так сдуру сделал, хотел один из светодиодов устройства назначить индикатором активности UART (своего рода аналогом индикатора Act на сетевых картах ). Его работа не впечатлила, захотел перенастроить его под другие нужды. Ан нет, намертво прилип к UART'у и не слушался! Помогло только копирование текста программы в новый файл, перезапуск баскома и полное стирание чипа перед перепрошивкой.
Даже остановленные часы два раза в сутки показывают правильное время.
zero648 , передача меня меньше всего интересует . Никак не могу придумать как посчитать кол-во байт кот. пришло , знаю что как-то можно(где-то читал про это) , но вот как сделать программно ? не представляю .
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Во-первых, наверное, надо знать настройку протокола передачи устройства, от которого принимаете данные. Во-вторых если передается целый пакет, то пользоваться лучше не USART-м, а программно принять пакет с помощью внешних прерываний, а затем анализировать его.
Протокол , формат , это всё известно . Более того девайс давно собран и работает , но не полностью . Некоторые команды я не прописывал по известной причине .
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Тогда вобще не понятно в чем проблема, или передавайте шапку вначале, где указываете сколько длина пакета, либо после приёма каждого байта увеличиваете счетчик какой нибудь.
Девайс формирующий ответные пакеты , может отвечать по разному. В зависимости от того что конкретно в момент запроса он выполняет и будит сформирован ответ. Который может состоять из 3-х байт а может из 100 . Как мне узнать какой длины пакет идёт ?
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
dimon-790 писал(а):Который может состоять из 3-х байт а может из 100 . Как мне узнать какой длины пакет идёт ?
Я иду вдоль забора, неизвестной длины. Как мне узнать, когда забор кончится? Задача не формализуется. Надо уходить от понятия длина. Она из области неизвестных.
Обычно есть такое понятие, как таймаут между символами в потоке. Если выставить его соотвественно вашим условиям, то вам надо отловить момент, когда этот самый таймаут превысится. Принимать надо исключительно по прерываниям с накоплением в приемный буфер. С момента фиксации таймаута можно считать, что в буфере находится принятый пакет. Как это делается? Читайте литературу.
selco писал(а):Кто знает,как сделать на 3310 логарифмическую шкалу
Как вариант сделать серию изображений от пустой шкалы до заполнения (какая дискретность, столько и рисунков), измеряем уровень на АЦП и в зависимости от уровня через Select case выводим нужный рисунок.