Файлы  •  Ссылки  •  Прошивки  •  Правила  •  Архив  •   FAQ  •  Участники  •  Поиск
Регистрация  •  Вход

Изучаем программирование PIC контроллеров

Список форумов » Программное обеспечение » Микроконтроллеры На страницу 1, 2, 3, 4, 5  След.
АвторСообщение
Eex
Участник
Сообщения: 1522




05-12-2011 17:42

Кому интересно, то собирайте тестовую схему
ссылка на даташит контроллера PIC12F675:
ww1.microchip.com/downloads/en/DeviceDoc/41190G.pdf
можно взять PIC12F629, он такойже, но без АЦП (аналого-цифрового преобразователя)
Чтобы было интересно, надо подготовить инструменты для работы. Понадобится программатор (подходит тот, которым программировали боотлоадер в наш ресеттер), понадобится скачать с сайта Microchip.com MPLAB IDE v8.80 (это программа, в которой будем всё программировать), понадобится подопытнуй контроллер . Когда всё это будет собрано, то надо припаять к контроллеру светодиод через резистор. Для начала будем моргать светодиодом чтобы убедиться что запускается генератор контроллера, потом посмотрим что делать дальше.
После этого надо запрограммировать в контроллер пару байт и убедиться что он способен прописываться нашим программатором.
Когда всё это будет сделано, приступим к изучению. Программирование контроллера это как перевод текста по словарю - бесполезно читрать граматику языка когда не знаешь слов, всё равно ничего не понятно в граматике. Будем читать разделы контроллеров, которые надо программировать в данный конкретный момент (я буду говорить какие), после прочтения одного абзаца надо будет записать в программу одну команду и проверить её, потом читать дальше.
Кто собирёт, постуйте, будем изучать.

  testovaja shema.pdf  10,41 КБ  Скачано: 3601 раз(а)

kaspermen
Новичок
Сообщения: 5




05-12-2011 20:02

для ATMEL http://arduino.cc/

для PIC http://www.freeduino.org/

удачи начинающим
Хатуль_мадан
Новичок
Сообщения: 7




06-12-2011 07:21

Идея хорошая, особенно для начинающих. Очень сложно всегда начать, не зная что понадобится, а что нет, тем более при громадном выборе МК.
А к каждому МК еще и программатор прикрутить надо, да чтобы еще и работало все, т.е. если это уже все есть, то четверть пути пройдено, причем,
самостоятельно и для начинающих наиболее сложная. Поэтому, может для начала проще остановиться на симуляторах и описаниях, что и как настроить?
Имея, например, протеус, можно опробовать все простейшие схемы и программки, не собирая все в железе. Дело за малым, только изучить улыбка
kaspermen, а для чего Вы привели эти ссылки? Наверно, чтобы сказать, что на англоязычных сайтах давно все есть, типа, просто надо сидеть и читать?
Тогда зачем все эти форумы? Каждый берет нужную литературу, читает и изучает самостоятельно, без вопросов.
Voyager82
Новичок
Сообщения: 22




06-12-2011 09:52

Добрый день! И мне тоже очень интересна данная тема. Спасибо что её открыли.
Правда у меня стоит другая задача. Возможно вы мне сможете подсказать что делать.
Задача: сбросить счётчик на принтере Oki как здесь: http://www.youtube.com/watch?v=dQVONhmVlFA
Есть готовая платка которая это делает. На ней спилено название м/с. Можно взять принтер на растерзание.
Подскажите, пожалуйста, с чего начать.
kaspermen
Новичок
Сообщения: 5




06-12-2011 10:04

Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов.


http://arduino.ru/
Eex
Участник
Сообщения: 1522




06-12-2011 10:19

kaspermen, всё это дополнительные плюсы к цене, у нас другая цель - за 5 копеек построить что-то интересное и научится процессу с нуля (USB ничему не научит новичка, когда научимся хоть чему-то, то можно и на USB переходить)

Добавлено 06-12-2011 09:51

Voyager82 писал:
Задача: сбросить счётчик на принтере Oki

У каждого своя задача, для начала мы научимся всем технологиям производства устройств на контроллерах, а потом Ваша задача покажется Вам детской забавой. До сброса счётчиков нам пока далеко, у нас ещё даже не моргает светодиод улыбка
Voyager82
Новичок
Сообщения: 22




06-12-2011 16:45

Я просто хотел спросить с чего начать реверсинг готового изделия...
Eex
Участник
Сообщения: 1522




06-12-2011 17:08

Voyager82, снимите лог обмена данными во время обнуления счётчиков. Из лога будет понятно есть ли там криптография и какая шина данных применяется. Если там нет криптографии, то из лога сразу будет понятен принцып обнуления, дальше дело техники. Если криптография, то Вам надо будет определиться с криптоалгоритмом и найти то место, после которого криптографии уже не будет (на пример на микросхеме памяти) и снять лог от туда. Если таких мест нет (без криптографии), то у Вас проблема, в рамках нашей ветки криптографию рассматривать не будем.
vovic.tynda
Участник
Сообщения: 117




06-12-2011 19:10

Геннадий, вроде мигаю светодиодом.
Пик 12F629, планарка, новая.
При подаче питания, светик горит, нажимаю кнопку - тухнет.
Правильно?
Eex
Участник
Сообщения: 1522




06-12-2011 22:44

vovic.tynda, не, не правильно. Если светодиод загорается, значит в контроллере есть программа. После старта пустого контроллера, на его выводах не должно быть напряжения, они настроены на вход. Загружал чего-нибудь в контроллер?
vovic.tynda
Участник
Сообщения: 117




07-12-2011 00:40

Eex, нет, не загружал.
вытащил один из трех из фольги(так прислали) и впаял.
Eex
Участник
Сообщения: 1522




07-12-2011 01:13

vovic.tynda, спаяю у себя, тогда уточню, может внутренний PULLUP зажигает светодиод. Спаяю отпишусь.
Vavanych
Участник
Сообщения: 249




07-12-2011 02:22

Eex, Похоже у vovic.tynda всё правильно, у меня тоже так же, контроллер полностью стёр, а результат такой же.
http://www.youtube.com/watch?v=p3YU0biUYIc
Eex
Участник
Сообщения: 1522




07-12-2011 11:54

Пока я паяю схему (куда-то PIC затерялся), начнём делать новый проект.
1. запискаем MPLAB
2. нажимаем Project/New
3. придумали название нашему проекту и записали в Project Name. Я придумал название Test
4. определяемся где будет храниться наш проект и указываем в Browse путь к папке. У меня D:\Project\test (в Browse есть кнопка Make New Folder, пользуемся ей, если надо)
5. нажимаем Ок
проект пустой и мы ничего не видим, это нормально, потом всё появится.
6. нажимаем Configure/Select Device
7. в списке находим PIC12F629. Ok
8. нажимаем File/New
9. нажимаем File/Save As
10. указываем название файла main.asm (расширение тоже указываем, наш проект пока не знает на каком языке мы пишем). В том же окне Jump To../ Project Directory (сохранит в папку нашего проекта). Ставим галочку на Add File To Project. Жмём Save.
Вот теперь появился файл нашего проекта (пустой), там будем писать код программы.
Когда будет готово постуйте, будем настраивать конфигурацию и инициализировать контроллер
dennt
Участник
Сообщения: 31




07-12-2011 20:03

За неимением макетки "без пайки" получил следующее улыбка
http://s16.radikal.ru/i191/1112/be/5bef2ae463f1.jpg

А почему "в списке находим PIC12F629", если у нас PIC12F675?

Кстати, у меня светодиод ведет себя точно так же, как и у двух предыдущих ораторов.
Горит, а при нажатии на кнопку - тухнет.


Проект готов улыбка
Vavanych
Участник
Сообщения: 249




07-12-2011 23:32

dennt, "А почему "в списке находим PIC12F629", если у нас PIC12F675?"
Отличия между ними только в присутствии у 675 модуля АЦП. Вот описание PIC 12F629/675 на русском языке.
Eex
Участник
Сообщения: 1522




08-12-2011 00:15

dennt писал:
А почему "в списке находим PIC12F629", если у нас PIC12F675?

vovic.tynda писал:
Пик 12F629, планарка, новая.

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

Дело плохо, я спаял схему и измерил напряжение на ноге контроллера, которая зажигает светодиод, там 2,5 вольт. Сразу стало понятно что это не логическое напряжение, а аналоговое. В контроллере все выводы с чем-то совмещены, вывод светодиода совмещён со входом тактовых генераторов, они дают на ноге 2,5 вольта, от них загорелся светодиод. Таким макаром можно спалить генератор контроллера, но если у вас стоит сопротивление 470 ом, то он выдержит, мой не сгорел улыбка. За то теперь мы плавно подошли к тому за чем нужны биты конфигурации и чем они отличаются от программной памяти и почему их надо выставлять в какой-то отдельной памяти, а нельзя просто написать в коде всю конфигурацию контроллера.
И так биты конфигурации контроллера:
это ячейка памяти, которая говорит контроллеру как он подключен и на какой ноге следует ждать какие сигналы. Начнём с конфигурации задающего генератора:
Контроллер это такая штука, которая ВСЁ ВРЕМЯ должна куда-то бежать. Если вам необходимо подождать с исполнением каких-то команд, то вам придётся сказать контроллеру чтобы он бежал на месте, пока вы ему не разрешите бежать дальше. Так вот после подачи питания на контроллер, он сразу хочет начинать куда-то бежать, этот бег обеспечивает задающий генератор. Генераторы бывают разные, у каждого генератора свои преимущества, мы выбрали самый простой генератор - внутренний генератор. О внутреннем генераторе позаботился производитель и нам осталось только подключить его программным путём. Есть одна загвоздка - если он должен быть подключен программным путём, то программа должна добежать до того места, где подключается внутренний генератор, а пока генератор не подключен, то и программа бежать никуда не будет. Вот для этого и нужны биты конфигурации - они подключают программным путём те модули (модули, это различные элементы в контроллере, внутренний генератор тоже модуль), которые не могут подключиться в основной программе потому что основная программа без них не работает. Ок, подключаем модуль внутреннего генератора, для этого в MPLAB выбираем Configure/configuration Bits. Убираем галку с Confiration Bits Set in code. Выставляем конфигурацию как на картинке, пока не будем останавливаться подробно на том что означает каждый наш выбор, придёт время и обсудим это, пока нас не касаются остальные пункты кроме генератора.
После установки это окно закрываем.
Далее нам надо выбрать язык программирования и подключить языковые инструменты. Нажимаем Project/Set Language Toolsuite, в верхней строке находим Microchip MPASM Tollsuite, выбираем его. Во втором окне выбираем MPASM Assembler и ставим галку на Store Tool Location In Prtoject. Ок. Мы подключили компилятор ассемблера, будем писать на нём.
Всё, среда готова к написанию кода. Если у кого-то выскочили какие-то лишние окошки и вы не знаете как с ними быть, то спрашивайте, могут быть некоторые нюансы в настройках.
Теперь собственно сам код. Первая часть кода будет инициализировать контроллер. Это та процедура, которая продолжает подключать контроллер к нашей схеме, но эти подключения не вошли в биты конфигурации т.к. программа уже способна бежать и сама может справиться с дальнейшими подключениями. Сама процедура инициализации контроллера, это тема не первого урока. Суть инициализации такова: программист открывает даташит на конкретный контроллер и просматривает все модули (в даташите нa каждый модуль есть свой абзац в закладках). В каждом модуле есть значения по умолчанию, с которым он подключается при подаче питания. Если значения по умолчанию вам подходят, то данный модуль не нуждается в инициализации, если нет, то вы меняете настройки модуля. Самый простой способ не промахнуться с инициализацией, это скачать готовый проект на данном контроллере и скопировать от туда инициализацию. Когда познакомитесь с модулями, будете делать это сами, но я копирую улыбка. Я напишу код инициализации и поставлю комментарии.
Пристегнул файл кода. Кто сделал, постуйте, будем переходить к компиляции и загрузке в контроллер.

  untitled.PNG  16,81 КБ  Скачано: 1668 раз(а)
  Test.rar  1,06 КБ  Скачано: 1411 раз(а)

dennt
Участник
Сообщения: 31




08-12-2011 10:56

Есть 2 процедурных вопроса, пока всё не начало слишком стремительно развиваться:

1. В начале, при подготовке проекта, мы сохраняли файл с листингом программы под именем main.asm
Сейчас же, выложенный пример уже называется Test.asm
Я понимаю, что это не имеет никакого значения, но путанницы не будет в неокрепших мозгах?

2. Писать комментарии в листинге русскими буквами это моветон? Или почему используется транслит?
Eex
Участник
Сообщения: 1522




08-12-2011 12:21

dennt писал:
выложенный пример уже называется Test.asm

Справедливо, забыл принести копию с работы и дома создал новый проект, естественно с косяком. Исправлю.
dennt писал:
почему используется транслит?

так делается из за проблем с кодировкой, я уже сталкивался с коментариями из не понятных символов, которые были у кого-то кирилицей. Я встречался с компиляторами, в которых как бонус есть в описании пункт о поддерржке кирилицы, возможно в MPLAB такая поддержка есть, но о ней не пишут. У меня в кодировках нет кирилицы (я из Латвии), в результате получается что у Microchip своя кодировка, у меня своя, у остальных тоже другая. Кроме всего прочего у меня нет кирилицы на клавиатуре. Для данного форума приходится писать в специальных программах т.к. у форума есть правила писать только на кирилице. Писать коментарии в специальных программах это уже черезчур улыбка (как вариант могу предложить коментарии на английском, за ошибки не отвечаю улыбка), к томуже я не знаток кодировок в этих специальных программах, может они тоже свои.
dennt
Участник
Сообщения: 31




09-12-2011 18:41

Так это... продолжать будем? улыбка
Eex
Участник
Сообщения: 1522




09-12-2011 19:04

Eex писал:
Кто сделал, постуйте, будем переходить к компиляции и загрузке в контроллер.

dennt
Участник
Сообщения: 31




09-12-2011 19:11

Ок, ждем остальных улыбка
Vavanych
Участник
Сообщения: 249




09-12-2011 20:23

Думаю не чего сложного не было и кто хотел, тот сделал.
Пусть лучше постуют те кто не успевает.
Eex
Участник
Сообщения: 1522




09-12-2011 22:12

а как я узнаю что я не в пустоту пишу свои рассказы, если никто не будет постовать? Как я понимаю у вас получилось дойти до этого шага? Тогда продолжаем.
Компиляция.
Пока не будем заострять внимание на механизм компиляции, нас интересует результат компиляции, результатом будет .hex файл, он будет сохранён в директорию нашего проекта. У Microchipа есть странная фича - они не сохраняют в файл .hex (который генерируется автоматически после компиляции) биты конфигурации и по этому есть проблема записать конфигурацию посторонним программатором. Для того чтобы в .hex файле сохранить конфигурацию надо после удачной компиляции сделать File/Export .
Нажимаем Project/Build All. Результат компиляции будет виден в окне Output (обычно оно появляется внизу) будет либо Build Success, либо Build Filed. Если не компилируется, то в тексте будут обозначены ошибки, на ошибках можно два раза щёлкнуть и курсор встанет на строку с ошибкой.
Наш файл скомпилировался и в корне проекта появился файл .hex, но в нём нет конфигурации. Если загружать файл изнутри программы MPLAB родными программаторами, то всё ок, конфигурация попадёт в контроллер, но если другим программатором, то надо делать Export. Делаем File/Export.. (ничего не меняем)/Ok. Указываем путь куда сохранить .hex файл, я всегда перезаписываю hex файл самого проекта (в нашем случае будет Test.hex). Всё, этот файл пригоден к загрузке в контроллер. Загрузили и подключили питание для теста. Светодиод не горит, значит как минимум, конфигурация прошилась нормально. Теперь проверим работает ли генератор. Если генератор работает, то он будет исполнять наш код, поменяем в коде один бит чтобы светодиод загорелся. Если он загорится, то программа дошла до команды, которая зажигает светодиод и это будет означать что генератор работает. Находим строку movlw b'00100000' и меняем её на movlw b'00000000' . Сейчас не будем рассматривать что именно мы поменяли, скоро буду рассказывать что такое регистры, тогда и остановимся на этом подробно, сейчас нас интересует только работает генератор или нет. Компилируем новый код, экспортируем и грузим в контроллер. Подключаем. Если светодиод не горит, то пока останавливаемся на этом, может быть нюанс с тем что контроллер не имел заводскую калибровку генератора в конце файла или ваш программатор не умеет её сохранять автоматом, тогда будем разбираться с этим . Если горит, то идём дальше. Кто закончил, постуйте, далее будет длинное объяснение про регистры, конвейер и прочее, к тому моменту надо разобраться с железом.
AlexM
Участник
Сообщения: 883




09-12-2011 23:32

Eex писал:
У Microchipа есть странная фича - они не сохраняют в файл .hex (который генерируется автоматически после компиляции) биты конфигурации и по этому есть проблема .


Вы не любите кошек? Может просто не умеете их готовить? улыбка

Всё ОНИ сохраняют, ИМ просто сказать нужно об этом. помираю со смеху!
Я одного не пойму, не ужели вам мало обучалок в сети? Да и контроллер для опытов выбран не верно.
Eex
Участник
Сообщения: 1522




10-12-2011 00:08

удалил перебранки
dennt
Участник
Сообщения: 31




10-12-2011 00:16

Не горит.
Горит.

Всё как нужно улыбка
AlexM
Участник
Сообщения: 883




10-12-2011 00:16

Поиск опции задание на дом.



  incode.JPG  37,47 КБ  Скачано: 688 раз(а)

dennt
Участник
Сообщения: 31




10-12-2011 00:55

Имеется ввиду, в нашем случае, нужно в меню настройки конфига поставить галку и после инклуда в коде написать:

__CONFIG _FOSC_INTRCCLK & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_OFF

? улыбка
Vavanych
Участник
Сообщения: 249




10-12-2011 02:26

dennt, Не чего писать не надо. Делай как говорит Еех и будет всё как надо

fuse.gif



slav0n
Забанен
Забанен
Сообщения: 2257




10-12-2011 05:38

я бы рекомендовал конфигурационные биты (так называемые фузы) вообще не связывать с кодом.
Не все программаторы умеют читать их из хекса.
ewian
Участник
Сообщения: 69




10-12-2011 10:11

slav0n писал:
я бы рекомендовал конфигурационные биты (так называемые фузы) вообще не связывать с кодом.
Не все программаторы умеют читать их из хекса.


Необходимо связывать!, и дополнительно можно(нужно) дать в комментариях.
Список форумов » Программное обеспечение » Микроконтроллеры » Изучаем программирование PIC контроллеров На страницу 1, 2, 3, 4, 5  След.
Перейти:  
Текущий раздел » Программное обеспечение » Микроконтроллеры (Микроконтроллеры - AVR-ы, PIC-и и другие)


Похожая информация:
  • Программирование
  • программирование USB
  • Программирование мк M68HC908Az60
  • программирование ADUC812BS
  • Программирование DSP-микроконтроллеров







  • Электроника
    Прошивки и схемы на телевизоры, мониторы, dvd, телефоны. Schematic, Service Manual (mode), eeprom dumps Информация по ремонту для специалистов - справочники, инструкции, энциклопедия, советы и секреты ремонта,  настройка, сервисные режимы поиск и продажа электронных компонентов, магазины, datasheet, pdf, размещение в интернете рекламы на сайтах электронной тематики
    Powered by phpBB 2.0.18 © 2001, 2002 phpBB Group!