Например, PIC10F200T
Практически любой код, который вы пишете, будет больше этого, если только это не чип специального назначения. Есть ли способ загрузить больше памяти программы из внешнего хранилища или что-то? Мне просто любопытно, я не понимаю, как это может быть очень полезно ... но это должно быть.
microcontroller
pic
memory
storage
coder543
источник
источник
Ответы:
Вы, дети, сойдите с моей лужайки!
384 байта - это достаточно места для создания чего-то достаточно сложного в ассемблере.
Если вы вернетесь назад к истории, когда компьютеры были размером с комнату, вы обнаружите некоторые действительно удивительные художественные умения, выполненные в <1k.
Например, прочитайте классическую историю Мел - Настоящий программист . По общему признанию, у тех парней было 4096 слов памяти, чтобы играть с декадентскими неверными.
Также посмотрите на некоторые из старых конкурсов демосцены, где задача заключалась в том, чтобы вставить «вступление» в загрузочный блок дискеты, типичные цели - 4 или 40 тысяч, и обычно им удается включать музыку и анимацию.
Редактировать, чтобы добавить : Оказывается, вы можете реализовать первый в мире научный калькулятор за 100 долларов за 320 слов.
Отредактируйте для молодых 'uns:
источник
Микроконтроллеры достаточно дешевы, так что их часто используют для выполнения действительно простых вещей, которые в прошлые годы, скорее всего, делались бы с дискретной логикой. Действительно простые вещи. Например, может потребоваться, чтобы устройство включало выход на одну секунду каждые пять секунд, точнее, чем это мог бы сделать таймер 555.
Это было бы реальным, пригодным для использования приложением, содержащим менее 32 слов (48 байт) пространства кода Можно было бы легко добавить несколько опций, чтобы иметь несколько опций синхронизации входов / выходов и при этом иметь достаточно места, чтобы сэкономить, но даже если бы весь чип был именно таким, как показано выше, он все равно мог бы быть дешевле и проще, чем любая альтернатива, использующая дискретный логика. Кстати,
clrwdt
инструкции можно было бы перенести в подпрограмму, но это сделало бы вещи менее надежными. Как написано, даже если сбой приводит к повреждению стека адреса возврата, сторожевой таймер не получит питание, пока выполнение не вернется в основной цикл. Если этого не произойдет, сторожевой таймер сбросит микросхему через пару секунд.источник
clrwdt
инструкций. Это не самое безотказное устройство счетчика, но некоторые вопросы уделяются безопасности (например, избеганиеclrwdt
подпрограммы).«ТОЛЬКО» 384 байта?
Еще в тот день у меня была работа над написанием целой операционной системы (для меня самой) для специализированного компьютера, который обслуживал судостроительную, трубопроводную и нефтеперерабатывающую промышленность. Первый такой продукт компании был основан на 6800 и обновлялся до 6809, и они хотели, чтобы новая ОС соответствовала 6809, чтобы они могли исключить затраты на лицензию исходной операционной системы. Они также увеличили размер загрузочного диска до 64 байт, по сравнению с 32. Если я правильно помню - это было около 33 лет назад! - Я убедил инженеров выдать мне 128 байтов, чтобы я мог поставить драйверы всей операционной системы на диск и, таким образом, сделать все устройство более надежным и универсальным. Это включало:
Да, все они были настолько просты, насколько это возможно, и были оптимизированы вручную, чтобы удалить каждый посторонний цикл, но отлично работоспособны и надежны. Да, я включил все это в доступные байты - о, он также настроил обработку прерываний, различные стеки и инициализировал операционную систему реального времени / многозадачность, запросил у пользователя параметры загрузки и загрузил систему.
Мой друг, который все еще связан с компанией (ее преемник), сказал мне несколько лет назад, что мой код все еще работает!
Вы можете сделать много с 384 байтами ...
источник
Вы можете использовать это для очень небольших приложений (например, отсрочка запуска блока питания , замена таймера 555 , управление на основе симистора , мигание светодиода и т. Д.) С меньшей занимаемой площадью, чем при использовании логических вентилей или таймера 555.
источник
Я разработал датчик влажности для растений, который отслеживает количество воды, которое есть у растения, и мигает светодиодом, если растению нужна вода. Вы можете заставить датчик узнать тип растения и, таким образом, изменить его настройки во время работы. Он обнаруживает низкое напряжение на батарее. У меня закончились флэш-память и оперативная память, но я смог написать все на С-коде, чтобы этот продукт работал безупречно.
Я использовал pic10f, который вы упомянули.
Вот код, который я сделал для моего датчика растительной воды. Я использовал pic10f220, так как у него есть модуль АЦП, он имеет ту же память, что и у pic10f200, я постараюсь найти схему завтра.
Код написан на испанском языке, но он очень прост и должен быть легко понят. Когда Pic10F выйдет из спящего режима, он будет сброшен, поэтому вам нужно проверить, было ли это PowerUp или сбросом, и действовать соответственно. Урегулирование завода держится в поршне, так как оно никогда не выключается.
main.C
main.h
Дайте мне знать, если у вас есть вопросы, я постараюсь ответить на основании того, что я помню. Я кодировал это несколько лет назад, так что не проверяйте мои навыки кодирования, они улучшились :).
Последнее замечание Я использовал компилятор Hi-Tech C.
источник
Одна вещь, о которой я не упомянул: упомянутый вами микроконтроллер стоит всего $ 0,34 каждый в количестве 100. Поэтому для дешевых продуктов массового производства может иметь смысл пойти на дополнительные проблемы с кодированием, вызванные таким ограниченным модулем. То же самое может относиться к размеру или потребляемой мощности.
источник
Когда я учился в старшей школе, у меня был учитель, который настаивал на том, что затемнение света было слишком трудной задачей для такого ученика, как я.
Поэтому я потратил немало времени на изучение и понимание фазового затемнения света с помощью триаков и программирования 16C84 из микрочипа для выполнения этого подвига. Я закончил с этим кодом сборки:
Конечно, вам нужно изменить это для упомянутого чипа и, возможно, добавить дешевую последовательную подпрограмму для ввода, поскольку у вашего чипа нет 8-битного порта для прослушивания, но идея в том, что, казалось бы, сложная работа может быть сделано очень мало кода - вы можете разместить десять экземпляров вышеупомянутой программы в 10F200.
Вы можете найти больше информации о проекте на моей странице Light Dimming . Между прочим, я никогда не показывал это своему учителю, но в итоге сделал несколько осветительных установок для моего друга ди-джея.
источник
Ну, много лет назад я написал контроллер температуры с последовательным вводом / выводом (битовый последовательный ввод / вывод, потому что у MCU не было UART) и простой интерпретатор команд для общения с контроллером. MCU был Motorola (теперь Freescale) MC68HC705K1, который имел колоссальные 504 байта памяти программ (OTPROM) и около 32 байтов оперативной памяти. Не так мало, как PIC, на который вы ссылаетесь, но я помню, что осталось немного ROM. У меня еще осталось несколько собранных узлов, 17 лет спустя; хочешь купить?
Так что да, это можно сделать, по крайней мере, в сборе.
В любом случае, я недавно написал очень простые программы на Си, которые при оптимизации могли бы уместиться в 384 байта. Не все требует большого, сложного программного обеспечения.
источник
Вы можете написать мигающий светодиод с 384 байтами памяти программ и даже больше.
Насколько я знаю, невозможно расширить память программы внешним чипом (если только вы не строите полный интерпретатор ASM в 384 байта , что будет медленно). Можно расширить память данных с помощью внешнего чипа (EEPROM, SRAM).
источник
Это на самом деле хуже, чем вы думаете. Ваша связанная страница Mouser сбивает с толку вопросы, когда она определяет этот процессор как имеющий 384 байта памяти программ. PIC10F200 на самом деле имеет 256 12-битных слов памяти программ.
Итак, что вы можете сделать с этим? Все 12-битные инструкции PIC, используемые устройствами PIC10F20 x, представляют собой инструкции, состоящие из одного слова, поэтому после того, как вы вычтете несколько инструкций для настройки процессора, у вас останется достаточно места для программы длиной около 250 шагов. Этого достаточно для многих приложений. Я мог бы, например, написать контроллер стиральной машины в таком месте.
Я только что просмотрел доступные компиляторы PIC C, и похоже, что около половины из них даже не будут пытаться выдавать код для PIC10F200. Те, которые, вероятно, выдают так много стандартного кода, что вы можете только написать светодиодный индикатор в оставшееся место. Вы действительно хотите использовать ассемблер с таким процессором.
источник
размахивая тростью в наше время, мы должны были вытравить свои кусочки из песка!
В 1976 году (или около того) система Atari 2600 VCS была одной из самых популярных «игровых платформ» того времени. В нем микропроцессор (MOSTEK 6507) работал на частоте ~ 1 МГц и имел **** 128 байт ОЗУ **.
Второй пример, который я помню о микроконтроллере с чрезвычайно ограниченным объемом ОЗУ (~ 128 байт), был PIC12F, используемый в преобразователе постоянного тока. Этот микро также должен был использовать язык ассемблера, чтобы бежать вообще.
источник