Перейти к содержанию

Bugrim

Members
  • Постов

    235
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Bugrim

  1. Проектирую энкодер (когдато отпавшуя необходимость). Скотострельности одного PICa не хватает, поэтому один использую как датчик - преобразовунт входные сигналы и записывает в счетчик, второй (интересующий) считывает данные сумирует с предыдущим результатом и выводит на индикатор. В протеусе без входных сигналов на индикаторе время от времени выскакивает число 6665, вместо 0000. Что это - ошибка "датчика", "индикатора", схемы (обвязки), или глюк протеуса. Так вот что бы в этом разобраться решил отследить когда произойдет изменение в считаных данных.

    Привожу проект, хотя он скуден коментариями.

    encoder.rar

  2. По первому вопросу, разобрался своими силами - создал новый проект, на базе обновленого MPLABа, откомпелировал, правда теперь нужные регистры заново надо ввести, нк да ладно не велика потеря.

    По второму воросу. Моделирую в MPLAB+протеусе, проходит несколько секунд и данные изменяются, хотя команды для этого не было, соответственно, тот момент когда происходит "сбой" программа проходит полный цикл раз 100 как минимум, так что ловить ее расставив брекпойнты везде, где возможна модификация регистра слишком долгое занятие.

    Может в протеусе такая возможность существует?

  3. Добрый день. Прошу помощи по настройке MPLAB.

    1 После обновления MPLAB 7.30 на MPLAB 8.63 не могу в окне 'Watch' в колонке 'Simbol name' увидеть название переменных и функция 'Add simbol' не активна. Хотя константы установлены ( например cikl equ 2dh) и программа отрабатывается. В чем дело - подскажите.

    2 Как сделать точку останова по условию, например, если в регистре установился заданый бит.

  4. У меня, конкретно, директива list имела вид "list p=p16f676", ее дано было исправить на "list p=16f676", каким образом туда "p16f676" туда дзакралась не знаю, но всетаки в этом вся проблема. Что у тебя - не знаю.

  5. Ув. форумчане помогите, не пойму в чем проблема, вроде бы моделирует, из под MPLAB симулирует, а вот при попытке "Компелировать все", протеус, выдает такие ошибки, толи модель PICa не видит то ли...:

    Error[131] : Processor type is undefined.

    .

    Message[301]: MESSAGE: (Processor-header file mismatch. Verify selected processor.)

    .

    Error[131] : Processor type is undefined

    .

    Error[122] : Illegal opcode (PORTA)

    И т.д.

    Кто сталкивался, в чем проблема?

    Вот исходникиencoder.rar

  6. Я не большой специалист, и многое мне в этиой программе и не только в ней не понятно. Даташит читал?

    Start

    clrf LATB ; Чистим все порты B

    clrf TRISB ; Установка всех портов B на вывод

    Команда на очистку порта вроде бы правильная, однако чистиш не то надо чистить PORTB а ты - LATB. Настройка порта на вывод - правильно, только надо переключится на 1-й банк (что это такое смотри даташит). Ну а дальше - мне тяжело разобрать.

    Такие веши надо отлаживать, для этого необходимо вооружиться хотябы MPLAB. А если тебе лабораторку надо сделать, то так и напиши, тебе хоть и с демоплатой изготовят - любой каприз за Ваши деньги.

    А если более серьезно, вот эту "ВАТУ" которую ты скачал почитай, тем более если не имееш навыков в цифровой схемотехнике + даташит (первоисточник описания МК), для начала возьми PIC16F628A на дего даташит на руском можно найти.

  7. ... только одну фазу, на двух таймерах синтезировать еще две, да еще и с возможностью произвольной задержки генерируемых событий относительно каждого перехода через ноль по каждой фазе отдельно.

    Можно по подробнее?

  8. Доброго всем суток. Прошу Вашей помощи в выборе МК. Основная задача моего устройства - реализация СИФУ. Я так полагаю, что для этого должна быть синхронизация начала по каждой фазе, и незафисимые таймеры, которые отсчитывают включение тиристоров. Может для этих целей существуют специализированые МК?

  9. Доброго Всем времени суток!

    Решил создать тему, потому что в поисковой системе не могу найти такого материала в достаточном объеме.

    Напимер ссылка, подпрограмма для перевода двоичного числа в двоично-десятичное очень пригодилась, а таких подпроограмм можно придумать уйму: деление, умножение, вычитание, с разной точностью, програмная реализация I2C, 1-wirte и т.д. Хотя такие библиотеки уже наверняка собраны где - то в одном месте, кто знает подскажите.

  10. Проблем нет замены на параллельную EEPROM, даже на последовательную (I2C освоил), вот толь маленькая неувязочна: микросхема стоит на плате БОСИ в стойке ЧПУ типа 2С42. Сия плата состои из десятка таких микросхем + десятка других. Замена на другую микросхему влечет за собой перерезание дорожек, перепайку и вообще поиск места, которого мало, где расположить эту замену. Тем более, что легкий путь вродебы просвечивается - микруху мне пообещали, прошивка есть, сняли с аналогичного устройства, так что осталось только принцип программирования узнать более подробно.

    Удивительно, что про нее вспомнили в 2010 г.

    А ЧПУ какраз гдето 86 года рождения, и на наших производствах такая древность есче работает. К сожолению.

  11. Добрый день! Ув. форумчане подскажите принцип программирования 155РЕ3 или где об этом можно почитать. Существуют ли аналоги данной микросхемы из серии ЭППЗУ так чтоб распиновка подходила. За ранее всем благодарен.

  12. Если прверять результат таймера перед его обнулением, то его значения время от времени меняются. При обработке прерывания я не меняю значения аккумулятора, а что касается регистра статуса, то это влияло бы на индикацию а у мкня к ней притензий, прока, нет.

    Непонятно зачем выкрутасы с переключением на вход. Разве не достаточно читать таймер на лету и сбрасывать его на старте счета?
    .

    Может это и будет следующий шаг, если не разберусь с этой проблемой.

  13. 1 Включение выключение таймера произвожу переключением синхронизации от внутреней частоты на внешний тактовый сигнал (RA4). (bcf/bsf option_reg,t0cs).

    2 После сброса таймера происходит пауза, таймер не работает, и эти два фронта погоды не делают.

    3 Сохранение контекста на данном этапе не важно. Нет нужды сохранять данные когда они пляшут.

  14. Добрый день.

    Прошу Вашей помощи. Желаю сделать тахометр. RB0 - внешнее прерывание, первым импульсом запускается TMR0, вторым - выключается TMR0. Некое число делим на результат - получаем измеряные обороты. RB1-RB7 - для вывода семисегментного кода. Порт A - для зажигания сегмента.

    Программу написал, однако результат, при одной и той же частоте на входе меняется, в довольно таки больших пределах, т.е. значение TMR0 - пляшет. Убираю части программы чтобы определить откуда идет погрешность, оставляю для обработки прерывания только внешнее прерывание... В результате осталаь лиш динамическая индикация и обработка внешнего прерывания с запуском и остановкой таймера. Результат, если сделать точку освтанова перед обнулением TMR0 в обработке прерывания, все равно пляшет на 1-3 единицы. Подскажите, куда может теряться 768 циклов (предделитель таймера 1:256, тогда, 3 единицы * 256 циклов = 768 циклов), а то я уже свои возможности исчерпал. Программирую на асме в MPLAB, и в немже моделирую протеусом.

    Taxometr2_1.rar

×
×
  • Создать...