Технический форум
Вернуться   Технический форум > Электроника, самоделки и техника > Форум по электронике > Микропроцессоры


Ответ
 
Опции темы Опции просмотра
Старый 15.07.2010, 00:41   #1 (permalink)
INFERION
Member
 
Аватар для INFERION
 
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
По умолчанию Микроконтроллеры PIC

Всем привет . Вопрос у меня следующий. Есть ли среди нас кто-нибудь, кто умеет их программировать (на ассемблере)? Я знаком с AVR и уже не одну прошивку написал, но несмотря на обилие русскоязычной технической документации, на микрочиповские МК, мне понять их сложнее. Незнаю с какого боку подлезть. Документация очень увесистая, с чего начинать - хз. Кое как понял организацию прерываний, с памятью, регистрами и этими банками ещё не разобрался. Если у AVR все конфигурационные регистры расположены на одной странице даташита, в понятной мне таблице, то тут они разбросаны по всему даташиту, весом в 586 страниц! И их тут гораздо больше (наворотов то дофига). Всё дело осложняется ещё и тем, что на нужный мне МК (PIC18F26J53) нет даташита на русском языке...
А необходимость в заюзывании именно PIC большая. AVR пока ещё не дотягивается до периферии и разнообразия микрочиповских МК. Заюзав PIC18F26J53 вместо AT90USB82 я упрощу схему и габариты раза в два, за себистоимость уже молчу...

Последний раз редактировалось INFERION; 15.07.2010 в 02:31
INFERION вне форума   Ответить с цитированием
Старый 15.07.2010, 03:25   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Я могу помочь. Но мне уж очень не нравятся PIC как раз из-за того, как они устроены.
Изложите описание прошивки.
Long Cat вне форума   Ответить с цитированием
Старый 15.07.2010, 05:47   #3 (permalink)
INFERION
Member
 
Аватар для INFERION
 
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
По умолчанию

Многим они ненравятся, а для меня это находка. Перед AVR у них и преимуществ куча. Например скорость работы портов ввода/вывода, из-за гораздо бОльшей тактовой частоты МК. Довольно точный встроеный генератор тактовой, позволяющий заюзать USB интерфейс без кварцевого резонатора. Встроеный детектор напряжения, можно заюзать компаратор как супервизор, и вовремя начинать писать в EEPROM. 12 бит АЦП, который мне какраз очень нужен. Довольно быстрый ШИМ без всяких там PLL, без которых AVR не обойдётся из-за низкой тактовой частоты (8МГц против 48МГц, на 2,7V питания), корпус в самый раз (у Атмель всё USB-шное в огромных корпусах, с кучей ненужных мне лап), команды работы с константами там все есть. Ненужно сначала записывать константу в регистр, чтоб провести с её участием какую-нибудь логическую или арефмитическую операцию, ну и т.д.

В общем я собираю умный компактный преобразователь. Готовый конвертер рулится через ЦАП по I2C шине. По этой же шине рулится и ещё куча периферии. Контроллер заряда Li-ion, термодатчики и т.п. Выходное и входное напряжения и токи снимаются встроеным в МК АЦП (4 канала заюзано). Есть ещё ШИМ модуляция выходного напряжения. Тактовая 48МГц, глубина 8 бит. Связь с компом через USB, и с панелью управления (и индикации) через UART. При снижении напряжения питания ниже допустимого (если кто аккумулятор отключит) МК должен быстро бросать все свои дела, отрубать всё жрущее энергию, и записывать в EEPROM данные с ОЗУ, пока остатков энергии достаточно. Благо для этого внутри у него всё необходимое есть (в отличии от AVR, требующего внешнего супервизора).

Более детальное описание прошивки займёт тут всю страницу. Я её всё равно сам буду писать. Мне просто нужен человек, которого я смогу по мере необходимости подоставать в аське своими тупыми вопросами типа "а как мне настроить этот модуль?"

Последний раз редактировалось INFERION; 15.07.2010 в 06:00
INFERION вне форума   Ответить с цитированием
Старый 15.07.2010, 06:03   #4 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

"Вы просто не умеете их готовить".
AVR может работать и на 20 МГц (с кварцем, естественно).
При этом, большинство инструкций выполняются за один такт, в отличии от PIC, требующего 4 такта на инструкцию.
48/4=12.
Встроенный супервизор питания есть, в даташите есть целая глава о работе с ним и правильной работе с EEPROM, как в программном, так и в схемотехническом аспектах.

Встроенный источник напряжения для АЦП тоже есть, как ни странно.

Вопрос с USB можно решить установкой FT232R. Сразу решается вопрос с перепрограммированием контроллера, никакой BootLoader не нужен, освобождается место во FLASH.

Для индикации можно использовать ЖКИ на 4 строчки.

Как ни странно, у меня в планах почти такой же преобразователь на Atmega8.

В целом, идея устройства понятна. Но для написания прошивки этой информации недостаточно.
Long Cat вне форума   Ответить с цитированием
Старый 15.07.2010, 06:12   #5 (permalink)
INFERION
Member
 
Аватар для INFERION
 
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
По умолчанию

Встроеный супервизор питания разве умеет не только сбрасывать, но и запускать процесс записи в EEPROM?

FT232R серьёзно поднимает себистоимость и занимает место. С таким же успехом я могу заюзать AT90USB82 и внешний АЦП, с 25-й тинькой (шустрый ШИМ то всёрано нужен).

А при чём тут встроеный ИОН для АЦП? он везде есть, но я буду юзать ИОН с ЦАП, так стабильнее.

ЖКИ некуда лепить. Устройство компактное и там планируется использовать 3 RGB светодиода и простую кнопку. Да и ненужна там такая информативность, начнут прикалыватся что тачскрина и игр нехватает...

По поводу быстродействия - сомневаюсь что AVR даст 20МГц на 2,7V питания. А PIC 48 уже на 2,35V. У меня 3,3V по плану. Даже если не обращать внимание на более высокое быстродействие PIC, в данной ситуации, я ещё избавлюссь от ATtiny25 и получу возможность шустро дёргать лапами и возится с константами. И кварц лепить я не хочу...

Я же не прошу писать прошивку. Я прошу научить меня её писать. Базовые представления есть, писал уже, только для других МК ...

Последний раз редактировалось INFERION; 15.07.2010 в 06:18
INFERION вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 15.07.2010, 06:20   #6 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Супервизор питания должен только сбрасывать контроллер. Работа контроллера при "плохом" питании запрещена - в таких условиях, контроллер может сам себя прошить неизвестно чем, а также испортить данные в EEPROM.

Я не вижу причин в экстренной записи данных при снижении напряжения питания. Все параметры можно сохранить до того, как все поломалось.

Кроме этого, как гарантировать, что запаса энергии хватит на запись данных в EEPROM? Это одна из самых энергоемких операций.
Long Cat вне форума   Ответить с цитированием
Старый 15.07.2010, 06:25   #7 (permalink)
INFERION
Member
 
Аватар для INFERION
 
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
По умолчанию

И часть данных тогда потеряется, если питание вдруг вырубится, т.к. последние записаные данные на тот момент будут устаревшими. А ещё это здорово изнашивает EEPROM, т.к. писать прийдётся постоянно, а не только в моменты отключения аккумулятора, которые происходить будут крайне редко. У меня предполагается вести лог времени наработки, израсходованой энергии и т.п. И часы реального времени там есть для этого.
Народ ведь с EEPROM так и поступает. Пишет туда только когда питание начинает падать после отключения. Прерывание генерит внешний супервизор.
Да и я считал требуемую мощность. У меня единицы микрофарад получались. Этого достаточно чтоб питать чип миллисекунды. Влепить тантал на 100 микрофарад не проблема...
А встроный супервизор способен только удерживать МК в сброшеном состоянии, чтоб он дел не натворил при экстримально низком напряжении питания. Но ведь есть некоторый запас. Например у меня 3,3V питания, а проседать может до 2,35V. На 3,2V можно запускать запись в EEPROM и ещё остаётся 0,85V!

Последний раз редактировалось INFERION; 15.07.2010 в 06:30
INFERION вне форума   Ответить с цитированием
Старый 15.07.2010, 06:32   #8 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Идея понятна.

Давайте разбираться с периферией и задачами контроллера.
Long Cat вне форума   Ответить с цитированием
Старый 15.07.2010, 06:35   #9 (permalink)
INFERION
Member
 
Аватар для INFERION
 
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
По умолчанию

Секунду, плиз. Валерий проснулся . Я чуть позже схему выложу. Там всё сразу станет ясно. Но она недорисована. Не придумал ещё какой туда преобразователь влепить, для питания самой периферии. Нужно держать 3,3V во всём диапазоне напряжений аккумулятора (4,2...2,9V). Но самое противное - в спящем режиме периферия тоже должна питатся, и преобразователь нельзя глушить, а он жрёт дофига на холостом ходу. Даже простые ULDO стабилизаторы миллиампер едят...
INFERION вне форума   Ответить с цитированием
Старый 15.07.2010, 06:43   #10 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Как насчет идеи реализовать USB программно?
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 04:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.