|
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 1,142
|
||||||
PIC10F20001.10.2010, 21:55. Показов 36577. Ответов 25
Метки нет (Все метки)
Пост - поделиться впечатлением.
Заказал себе PIC10F200. Специально для них собрал PicKit 2. PIC10F - это самые дешевые микроконтролеры, которые я нашел. А еще, самые маленькие и самые слабые:) PIC10F200 имеет 256байт флеша и 16 ROM. Из переферии - только таймер. Старшие контролеры этой серии имеют 512/32 байта памяти и компаратор/АЦП в качестве переферии. Вот такая у меня получилась демоплатка(да-да, знаю, кривая, лень обрезать было:)): <Изображение удалено> Вот та маленькая, черненькая штуковина и есть PIC10F200. Сверху конденсатор в корпусе 0806, по нему можно размеры прикинуть. Корпус SOT-23-6, как у SMD транзисторов(у них только трехногие, SOT-23-3). Воистину PICоконтролер!:) Всего ножек, которые можно использовать, у этого контролера 4(остальные две - питание). Притом, как и у всех PICов, ножка, совмещенная с ресетом, может использоваться только как вход. Я брал эти микроконтролеры с расчетом на использование там, где обычный микроконтролер ставить жалко, а на логике получается слишком много корпусов - сложно с разводкой. Ну и в удаленном управлении выключателями хочу использовать, там вобще только две ножки нужно - на прием, да на управление. Но, несмотря на мизерный объем флеша, в него можно запихать много чего интересного. Чтобы не быть голословным, я написал небольшую программку - считает от 0 до 255 и выводит результат на экран. Устройство в "сборе": <Изображение удалено> Код прошивки, если кому интересно:
Код может быть неоптимальным, избыточным, да и вобще кривым. Все из-за того, что с PIC ассемблером я познакомился только сегодня:) И, после ассемблера AVR он мне очень не понравился. Очень мало команд, все делается через промежуточный регист W, число напрямик в регистр не запишешь, сравнения чисел нет, условного перехода нет(пропуск и джамп приходиться использовать), даже обычного сдвига нету! Есть только циклический, приходиться обычный сдвиг двумя командами записывать. Хотя, может и не так все страшно, и я просто еще не разобрался. Как видно, в 256 байт вошли работа с семисегментным LCD и binary-to-BCD преобразование. Я использовал shift-add-3 алгоритм: http://en.wikipedia.org/wiki/Double_dabble Долго мучился, пока не догадался, что т.к. сравнение нету, то "сравнивать" нужно сложением и проверкой флага переноса. Осталось только припаять геркон, чуть поменять прошивку и получится счетчик входов. И все это на микросхемке размером с SMD транзистор и по цене в разы дешевле, чем набор микросхем простой логики, реализующих ту же задачу, ну и в разводке соответственно тоже. Сдается мне, что если извернуться, то можно и работу с 1-wire туда засунуть и получится термометр:) Ну если и не влезит, то вот в PIC10F202 точно должно войти, там памяти в два раза больше. Озадачусь на досуге:) Вобщем очент интересный контролер. Для задач, где нужны какие-то вычисления, но много ног не нужно - самое то! P.S.: Все контролеры PIC10F серии есть также в DIP-8 корпусах, правда с двумя N.C. ножками. Но, это уже совсем не интересно, в DIP-8 уж лучше тогда ATTiny13/43 или PIC12F629/675 взять.
0
|
||||||
| 01.10.2010, 21:55 | |
|
Ответы с готовыми решениями:
25
Аналог PIC10F200 Timer0 в pic10f200 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 833
|
||
| 02.10.2010, 16:05 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
|
|
| 15.10.2010, 00:37 | |
|
сейчас пытаюсь на спор с самим собой впихнуть в эту малявку работу с DS18B20. нужен термометр, который будет отслеживать единственное значение - 20 градусов, и зажигать два светодиода (если больше 20, меньше 20 и оба, если ровно). слегка извращение конечно, но просто интересно. код для АВР есть и отлажен, если что прошью тиньку восьминогую вместо нее. но хочется все-таки чтобы получилось
0
|
|
|
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 1,142
|
|
| 15.10.2010, 06:18 | |
|
Если индикация такая простая, и термодатчик только один, не нужно поиском устройства заниматься - думаю влезет прошивка:)
0
|
|
|
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
|
|
| 15.10.2010, 08:28 | |
|
пока что в 40 с небольшим слов влезла инициализация мк и датчика, функции записи 0 и 1. но есть мысль, как еще пару байт выкинуть
0
|
|
|
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
|
||||||
| 15.10.2010, 19:32 | ||||||
|
вопрос есть к пик-гуру. я сам с пик-ассемблером первый раз столкнулся вчера, до этого был х86 и немного АВР, счас затупил вот на чем. написал функцию для ресета датчика (держим низкий уровень 480мс, отпускаем линию, потом еще через 80мс проверяем - если тоже низкий (придавил датчик), значит все нормально). и вот, в протеусе 2 раза страбатывает, 3й - нет
код такой
UPD: вопрос снят, оказалось у меня в цикле 2 раза подряд вызывался ресет, чего датчик понять не мог
0
|
||||||
|
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
|
|
| 16.10.2010, 21:15 | |
|
Ух ты, справился. Даже еще больше 100 слов кода осталось. Хотя ассемблер поначалу показался очень дурацким, это скорее с непривычки, на 3 день стал шпарить только так.
Долго не мог понять, почему bcf и bsf битов в GPIO произвольным образом влияет и на соседние биты. потом почитал даташит и понял - они работают через read-mod-write, а в протеусе у меня светодиоды были без резисторов. Поэтому когда для зажигания светодиода выводил в порт 0, на ножке оказывалось (5 - 2.2 = 2.8В), что вполне себе высокий уровень, который и считывался из порта при следующем изменении, а следовательно и светодиод гас. Если держать подобные мелочи в голове, то больших трудностей в разработке нет. Если кому-то нужно, выкладываю схему и плату в Eagle 5.10, исходник на асме и схему для протеуса (7.7 вроде у меня). P.S. в железе пока не проверял - нет программатора для пиков. Думаю к следующим выходным приятель подгонит, тогда проверю. Но если кто-то сделает раньше - буду только благодарен. P.P.S. температура жестко зашита в коде, забыл в константу вынести. Чтобы ее изменить, нужно найти в коде значение 0x28 и поменять его на свое, исходя из следующего алгоритма: 20d -> 14h 14h << 1 -> 28h т.е. требуемую температуру умножить на 2 и перевести в хекс [65.78 Кб]
0
|
|
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|