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

Общие вопросы по PIC-микроконтроллерам


NebsteR

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

У аналогового питания обозначение традиционное - AVdd-AVcc

К Vref оно не имеет отношения.

Аналоговое питание выделено в сигнальных контроллерах с достаточно большим числом выводов, где внутренняя трассировка пролематична...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Здравствуйте! PIC16F676, icprog 106c, Win_7. Программа написана на асемблере и отранслирована в MPLAB,

исполняется в PROTEUS. При прошивке неправильно шьется 0х0201 ячейка. В нее записывается разное, но

чаще всего 0х0000. Последующие ячейки пишутся правильно.

Пробовал писать в эту микросхему подобную программу, шьется без проблем.

Пробовал писать в другую микросхему проблемный код, та же ошибка (в 0х0201 ошибка при проверке).

Пришел к выводу, что не шьется именно этот код!

Объясните, пожалуйста, каким образом hex код может влиять на процесс прошивки?

Какая может быть ошибка в программе, которую не выявляет транслятор, но не пропускает программатор?

Ссылка на комментарий
Поделиться на другие сайты

icprog 106c, Win_7

Попробуйте через WinPic800 прошить - он с обратной связью, быстрее, и как я понимаю - надёжнее. ICPROG - он и висящий в воздухе COM-кабель прошивает - и чего он только не выдавал, пока я им пользовался. С WinPic800 ни одной проблемы небыло.

Если проблема и на WinPic800 останется - тогда следует заглянуть в датащит - вдруг в этом месте флеш-память кончается или ещё чего... а может и взаправду программатор...

*флеши вроде достаточно, значит скорее всего проблема в ICPROG или в железной части...

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Спасибо за ответы.

Да программатор вроде нормальный, лет 8 им пользуюсь эпизодически. Была когда-то проблема,

тогда действительно проводник отлетел. Сейчас отсоединял (он еще на LPT), все обсмотрел,

все продергал, да и самое главное, как я уже писал, подобную программу (предыдущую версию) он прошивает,

и там этот злополучный 0х0201 адрес есть и он правильно шьется.

Единственно, что изменилось, раньше ХР стояла, сейчас Win_7, но опять-таки, предыдущая версия программы

то шьется!

С WinPic800 не работал. Просто icprog 106c меня устраивала, а сейчас такая вот оказия...

Ссылка на комментарий
Поделиться на другие сайты

Добрый день, товарищи! Кто-нибудь пробовал сделать usb-соединение, как виртуальный com-порт? Есть такая микрочиповская штука AN956, но сделав все по инструкции и в соответствии с даташитом, ничего не получается - компьютер дрова ставить не хочет. Контроллер p18f46j50. Если есть у кого опыт такого дела, черкните на мыло - xxxxxxxxxxxxx. Я уже неделю засыпаю и просыпаюсь с этой проблемой, меня не узнают родные и близкие...

Всем добра!

Ссылка на комментарий
Поделиться на другие сайты

Есть такая микрочиповская штучка - MCP2200, представляет из себя USB-UART переходник и создаёт виртуальный COM-порт.

То, что Вам нужно, и без всякого гемороя и недосыпа :)

Ссылка на комментарий
Поделиться на другие сайты

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, друзья!

Мне вот показалось, что готовое решение микрочипа для USB-CDC нужно загружать через бутлоадер и простой прошивкой через программатор тут не обойтись. Это так?

Ссылка на комментарий
Поделиться на другие сайты

Дело в том, что переходник - дело хорошее, только дорогое...

Моя последовательность действий описана, как здесь http://www.remexpert.com/ipb/topic1953.html

Настраиваю кварц. Он у меня внешний - 8 МГц. Настраиваю регистры

CPUDIV = OSC3_PLL3

PLLDIV = 2

OSC = HSPLL

удаляю все лишнее из готовых примеров (всякие функции примеров) и жду, что при подключении мое устройство распознается и комп предложит установить драйвер. Я же в исходный код подключил все необходимые библиотечные файлы (cdc.h, cdc.c, usb.h, usbcfg.h ну и че-то еще)! Но вместо этого пишет - "устройство не опознано". В коде микрочипа сил разобраться не хватает, тем более, что там все правильно. На ножку Vusb подается питание 3,3 В. Хотя для контроллера из примера по ссылке на эту ногу надо вешать конденсатор и в землю. (На каком-то форуме прочитал, что для p18f46j50 надо поступать так). Может ли повлиять отсутствие резисторов на линиях D+, D-? На схеме они есть, но я ими побрезговал. Для определения скоростного режима я использую внутренние резисторы контроллера, поттягиваю нагрузочный резистор к D+.

Ссылка на комментарий
Поделиться на другие сайты

отя для контроллера из примера по ссылке на эту ногу надо вешать конденсатор и в землю.
Конденсатор рекомендуют повесить как можно ближе к выводу, а так, на эту ногу подаётся питание.

Вырезка из даташита :

The internal USB transceiver obtains power from the

VUSB pin. In order to meet USB signalling level specifi-cations, VUSB must be supplied with a voltage source

between 3.0V and 3.6V. The best electrical signal

quality is obtained when a 3.3V supply is used and

locally bypassed with a high-quality ceramic capacitor

(ex: 0.1 F). The capacitor should be placed as close

as possible to the VUSB and VSS pins.

Емкость на ногу Vcap не забыли повесить ? Тантал, 10mF.

ЗЫ: Конфигурация для 20-ти мегагерцового кварца:

 #pragma config PLLDIV = 5		 // (20 MHz crystal on PICDEM FS USB board)
 #pragma config CPUDIV = OSC1_PLL2
 #pragma config USBDIV = 2		 // Clock source from 96MHz PLL/2
    #pragma config FOSC = HSPLL_HS
    #pragma config VREGEN = ON        //USB Voltage Regulator

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за отклик!

Тантал, 10мФ? Стоит 10 мкФ, тантал. Конфигурация кварца в соответствии с диаграммой в даташите. То есть для полноскоростного режима - 48 МГц, а на ядро контроллера идет 16 МГц, это я проверил по осциллографу.

Ссылка на комментарий
Поделиться на другие сайты

А пример какой пытаетесь запустить ? Можете выложить ?

Вот, что есть у меня. Не помню откуда оно :

Cdc.rar

С битами конфигурации только подшаманить немного, под свой камень. Попробуйте...

ЗЫ: У меня есть под рукой в упаковочке такие камни, только 45J50, но это тоже самое, отличие только в ёмкости флеша. Могу тоже поколдовать завтра на работе. Если, конечно, время появится и у Вас не получится запустить :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

Я попробовал, и почему-то в самом начале не компилится. Сообщает об ошибке в usbdrv.c. Я в коде микрочипа разобраться не силен, только если все удалить... Подсобите, пожалуйста=)post-181533-0-69186000-1403675775_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Да, прошивка встала без проблем, спасибо! Только комп перестал видеть устройство. Раньше хоть, как неопознанное воспринимал, а теперь вообще перестал видеть.

Ссылка на комментарий
Поделиться на другие сайты

Биты установлены. Тактируется все верно. Попробовал поменять контроллер на другой такой же - результат прежний - комп ничего не видит :help:

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте! У меня такой вопросик. Имею 2 PIC16F628A. И 2 программки: IC prog и PICPgm. Один контроллер без проблем прошивается, стирается и верифицируется и в той и в той програмке, а второй только IC prog проходит данные процедуры без проблем. В PICPmg стирается, проходит верификацию но не хочет шиться. Выдает Verify errors occured! Может можно как то исправить? Так как для меня предпочтительно использование именно PICPgm поскольку он работает в Windows 7

Ссылка на комментарий
Поделиться на другие сайты

  • 11 месяцев спустя...

Приветствую, маленький вопросик. Пишу функцию задержки, интересует, нужно ли учитывать время вызова функции задержки? Т.е если нам скажем, надо задержку в 10мкс, нужно ли в теле функции делать задержку скажем в 8 мкс, а 2мкс добавит вызов(условно), или все 10мкс задержки писать в теле функции?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Возможно, во входных блоках пропал контакт с общим проводом. Если гудения нет при нулевой громкости, то проблема до регулятора громкости.
    • я бы по первости, - присоединил (поменял ) блоки питания у разных аппаратов... проверил БП 2 - далее присоединил бы (поменял) усилители у разных аппаратов...проверил усилители - Ремонтировать аппарат не видя его,- то ещё удовольствие...
    • Может подключить что-нибудь надо. Может написать свою функцию преобразования шестнадцатеричной строки в инт.
    • Да ну нафиг! Это как "раз поехали на рыбалку, а водку забыли...."
    • Похоже вас угораздило на латералы попасть. Они сами себя стабилизируют и никакой дополнительной стабилизации им не нужно. У меня двухкиловаттные Крафты так на металлических Эксиконах работают даже без "эмиттерных" резисторов. Тупо впараллель.
    • @korsaj Попробовал записать код в разных вариантах предложенных тобой. Первый вариант вообще отказался работать. Заработал второй вариант на приём. Теперь уже хотя бы есть полноценный приём. char i = 0; if (rx_buf[i] == 'M'){ i++; if (rx_buf[i] == '1') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран номер текущего трека LED_1_ON(); LED_2_OFF(); send_UART('M'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == '2') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран количество треков LED_1_OFF(); LED_2_ON(); send_UART('M'); send_UART('2'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'T') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран общее время трека LED_1_ON(); LED_2_ON(); send_UART('M'); send_UART('T'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'K') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран текущее время трека LED_1_OFF(); LED_2_OFF(); send_UART('M'); send_UART('K'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } } Но однако есть ещё некоторые вещи которые нужно подкорректировать. Пока я просто разбираю UART поэтому на терминал вывожу так сказать ответ ну и просто видеть потому как индикатора к микре не подключено пока что. Однако такой вариант с ответкой нужен будет мне и для другого проекта где UART лучше всего подойдёт. Это я уже смотрю на будущее. Но тут тоже когда приходит комманда по  UART микроконтроллер отправляет ответ, но он начинает постоянно спамится. Нужно как то сделать чтоб этого не происходило. Я же в свою очередь пробовать сбросить flags = 0;, но это никак не помогло. Может чего подскажешь тут понятно что нужно как то будет обнулить данные чтобы выйти из этого условия программы. Есть вот такая проблемка. И ещё есть одна проблема с строкой  unsigned int n = getDecFromHexStr(rx_buf, i+2); Не спроста я её отключил в коде с помощью комментария. А тут проблема в том что студия не может опзнать этот код. Возможно нужно что подключить из встроенных библиотек самой студии.
    • Зачем закладываться на максимальный ток стабилитрона? Поставьте по два двухкилоомных последовательно или возможно 3-5 килоома что то есть.
  • Похожий контент

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