Jump to content
Borisov_E

Помогите выбрать - PIC или AVR или ARM

Recommended Posts

Давно с завистью смотрю на тех кто умеет делать всякие штучки на микроконтроллерах, вроде дозрел до того чтобы и самому что-то попытаться сделать, попытаться научится программировать. Полазил по форумам и не очень понятно за что браться :rolleyes: PIC, AVR или ARM Хочу купить какое то железо, так как в симуляторах играться не очень интересно хотя может быть и полезно когда понимаешь что делаешь.

С чего бы вы почоветовали начать ? Конечно книги надо читать и DVD с книгами навернчка будет полезен. Если выберу платформу то тогда уже понятней будет куда дальше двигаться.

Share this post


Link to post
Share on other sites

Я начал с PIC , программу составил прогой FlowCode . Просимулировал в Proteusе , собрал в железе - работает .

По логике работы 1 микроконтроллер PIC12F675 и 4 резистора заменили мне 12 микросхем 74 серии 4 таймера 555 и кучу резисторов и конденсаторов . В итоге с первоначального варианта платы 10X10 сантиметров получилась плата 1,5X2 сантиметра с более чёткой работой и возможностью вносить изменения в логику работы не паяльником , перепахивая плату , а меняя программу контроллера . :)

Edited by Shahabbas

Технические вопросы решаю в теме , в личке не обсуждаю !!!

Share this post


Link to post
Share on other sites

Драйверы MOSFET/IGBT Infineon – силой нужно управлять!

Специалисты Infineon усовершенствовали традиционные кремниевые MOSFET и IGBT и выпустили компоненты на базе принципиально иных материалов – нитрида галлия и карбида кремния. Мы создали подборку полезных материалов, чтобы вы разобрались во всех тонкостях и стали экспертом по управлению силовыми приборами нового поколения CoolMOS, CoolGaN, CoolSiC!

Подробнее

Да преимущества МК мне очевидны, просто предложений масса и что выбрать неясно, ясно только что в АРМ наверно не стоит начинать. Кто разбирается подскажите по функциональности и рациональности тех макеток - что бы мне купить чтоб не ошибиться.

Share this post


Link to post
Share on other sites

Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

Подробнее

Если начинаете - то разницы особой нет с чем начинать... Они все одинаковы.. АРМ имеет преимущество что на нём ходит и ЛИНУКС... Если получится его там завести то потом сидите и пишете как на нормальном компе, только медленном :) А иначе - начинать желательно с того что можно недорого и в нужном количестве купить в вашем районе. Потому что во время изучения - будут жертвы :)

Share this post


Link to post
Share on other sites

Новинки гибридных конденсаторов: преимущества технологии

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

Подробнее

Почитал про макетку на AVR - там написано что можно ик USB подключать а в PIC такого не пишут, програмная реализация USB это интересно, но для каких устройств это можно применить ? Примочки приставки - гаджеты :) к ПК ? Измерение и управление с компьютера.

wowa, спасибо за совет и предупреждение про жертвы ! Тогда наверно макетку возьму на AVR так как похоже что это единственная макетная плата где микроконтроллер не впаян а в панельку ставится без пайки - значит легко заменить на другой и возможно еще ATmega8 закажу парочку-троечку. Я попоискам полазил по яндексу - на ATmega8 очень много устройств в интернете и как я понимаю в панельку вместо нее можно и ATmega168 поставить - т.е. получится Arduino очень недорогая, к ней ведь полно разных любительских проектов. Надеюсь к концу января, если получу макетку быстро, мне удасться помигать светодиодами а может побегать ими и главное понять почему и как они мигают. :rolleyes:

Share this post


Link to post
Share on other sites

Послал письмо с запросом макетки всеж под AVR без пайки в панельку, но не буду мегу16 а попросил 2 меги8 - теперь у меня ДВА шанса вместо одного :) Взял тетрадь толстую на пружине - рабочий журнал будет - все вопросы буду писать в него и главное решения.

Share this post


Link to post
Share on other sites

Если умеешь делать платы - почему бы не сделать самому? И приятнее, и даже дешевле (всякие макетки и прочие готовые комплекты, как правило, неоправданно дорогие).

Share this post


Link to post
Share on other sites

За помощь огромное спасибо. Скачал архив и обязательно изучу и посмотрю.

Я умею делать платы, я с электроникой хорошо знаком, это микроконтроллеры для мнея пока неведомы. Я заказал плату с набором компонентов потому что 450 рублей вроде не дорого и почта 120, плата с качественной металлизацией - такую я ЛУТ-ом не сделаю, микроконтроллеров ATmega8 по 48 рублей и ATmega16 по 80 рублей я больше ни где не видел.

Вот в чип-дипе ATmega8 по 220 рубликов - http://chip-dip.ru/product0/261212708.aspx почта в чип-дипе 350 рублей.

Такая же почти макетка в чип-дипе 1500 рублей http://chip-dip.ru/product0/674886318.aspx - БЕЗ МК ! вообще мрак.

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

Share this post


Link to post
Share on other sites

Нафиг ничего не надо покупать было и симуляторов тоже не надо. Надо найти сайт Корабельникова и почитать открытую инфу из самоучителя. Там немного. Доступными словами. Самое основное. Воды-минимум.

Если знаком с регистрами, триггерами и проч. то времени для понимания основ много не потратишь. У меня ушло где то пара чтения часов чтения вечером в кровати чтобы понять основы, и этого уже хватит для изготовления простых устр-в.

Программатор Пони-прог спаял сам с отдельным питанием стоимость деталей меньше 30-ки. Ну и если всё же решитесь юзать ПИКи, то обязательно MPLAB.

МК придуманы чтобы всё упростить. Помните это.

Edited by GDK

Share this post


Link to post
Share on other sites

Я тоже начинающий, делюсь опытом того, как начинал)))

Начал с АВР. У меня была на тот момент конкретная задача (простая), решил изучить МК, за одно и полезное чета сделать. Тоже остановился на авр по простейшей причине - не хотелось делать программатор :)

Из железа купил штеккер ЛПТ и Мегу16. У нас она порядка 22грн стоила (=3$). Ну, сначала попробовал написать первые 3 проги из курса и проганял их в симуляторе. Работало далеко не с первого раза :) МК сначала не шил. Потом написал свою прошивку, поганял в симуляторе - исправлял баги, и потом прошил. Еще поисправлял баги... На все, с момента изучения до 1-й собвственной работающей программы ушел где-то месяц) долгий я в этом деле... Зато ничего не спалил :)

На первое время, советую остановится на 1 ХОРОШЕМ источнике информации. Потому что сначала много чего не яно. Я когда начинал, то не представлял себе что такое регистр и СИ...

В общем-то пользовался курсом 123авр и ДШ, чтобы не путать карты. Не говорю, что это самое лучшее из всего, т.к. незнаю, но там достаточно хорошо все описано. Распечатал себе 2-7 страницу курса (примерно 150 листов) и читал в свободное время. + удобно отлаживать на компе, когда инфра на бумаге.

Удачи в экспериментах!

P.S. SviMik прав, симуляторы чильно напрягают. Но для начала - для светодиодов нормально :) Не умертвишь МК, установив неправильно фьюзы. Кстати, о них, если будешь делать в АВРстудио, то там по дурацки немного сделано с этими фьюзами - можно запутаться первое время.

Share this post


Link to post
Share on other sites

Друзья, огромное вам спасибо за советы и за желание помочь!

Пока набор для AVR в пути я уже читаю и все же поставил компилятор CVAVR симулятор VMLAB и симулирую - есть кайф но пока только повторяю то что просят делать в обучалке, пока повторяю не все понимая, но круг - редактирование, перекомпиляция, симуляция уже освоил :D Щас качаю студию и PROTEUS.

Share this post


Link to post
Share on other sites

Рекомендую начать с ассемблера. Это вам поможет в понимании того как все работает. Сразу оговорюсь, что легко не будет.

На счет Си, CVAVR не лучший пример компилятора. Лучше взять WinAVR, он интегрируется в AVR Studio и абсолютно бесплатный.

В CVAVR есть только один плюс для начинающего, а именно Wizard.

Share this post


Link to post
Share on other sites

Я на мастер и купился как неопытный рыбак на красивую снасть :) Я написал что качаю Студию и WinAVR тоже качну позже, наверняка ведь код мастера CVAVR можно будет и в WinAVR использовать.

И за АСМ спасибо. Даже если на Си учится то что-то из АСМ-а всеравно надо наверно знать.

Share this post


Link to post
Share on other sites
Надо найти сайт Корабельникова и почитать открытую инфу из самоучителя.

помоему у него уже все закрыто. вторая часть в миру ходит?


Ищу работу. К спектрометру поближе.

Share this post


Link to post
Share on other sites

Да в миру то, естественнно, весь самоМучитель ходит уж давно. Страно былобы еслиб не ходил.

Share this post


Link to post
Share on other sites

Я щас читаю ХХХХ - очень понятно написано, но до практики на железе я еще не дошел, так как жду получения заказаных макеток с деталями и ATmega8? пока в симуляторах пробую код.

Edited by wowa
Реклама Сайта николаева запрещена!!!!

Share this post


Link to post
Share on other sites

Я тоже плату заказал, и две АТмега16, сейчас пока что разбираюсь с Flowcode_AVR, и параллельно с ней потихоньку учу Си...

Share this post


Link to post
Share on other sites

Думаю Flowcode_AVR не есть хорошо, я разбираюсь с Си. Порыв интернет мне стало очевидно что Си это стандарт дефакто для встраиваемых систем и для Avr PIC ARM и подобных камушков.

Share this post


Link to post
Share on other sites

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

P.S. Не сочтите за рекламу....

Edited by Chekash

Share this post


Link to post
Share on other sites

Главное чтоб с удовольствием было и чтоб получалось :D а в МК все равно .hex заливать.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения


  • Мультиметр RM102 с щупами и термопарой, автоматическое переключение диапазона

  • Similar Content

    • By 3цераптор
      Аутомотив Солюшенз Груп, (ASG) входящая в группу компаний VK Electronics, открывает вакансию программиста микроконтроллеров. На данный момент компания ведет свою деятельность по трем направлениям:
      Разработка автомобильной электроники (блоки управления для сбора данных);
      Системы управления автопарком;
      Промышленная электроника (система "умный дом" SOHO)
      Сотрудничая с нами, Вы будете находиться на острие новых технологий, заниматься исследованием и креативной разработкой, а не банальным написанием кода в жестких условиях ТЗ. Мы позволим Вам самостоятельно принимать решение и находить новые технологии реализации Ваших идей.
      Вы заинтересованы в собственном развитии и Вам интересны новые технологии, а так же Вы желаете стать частью команды современной компании?Ждем Ваших откликов!
      Что нужно делать:
      разрабатывать прошивки для микроконтроллеров;
      участвовать в составлении ТЗ в составе рабочей группы проекта.
      Мы хотим видеть специалиста с...
      Профильным образованием, рассматриваем выпускников ВУЗов;
      Знанием языков программирования;
      Знанием ОС FreeRTOS, Linux;
      Умением программировать чисто, без мусора в коде и стандартных библиотек;
      Умением самостоятельно, а главное быстро разбираться и искать пути решения интересных и трудных задач;
      Знанием архитектур на ядре ARM7,Contex-M3, Contex-M4;
      Опытом работы с процессорами STM 32F1/2/3/4, NXP, Texas industries;
      Знанием протоколов CAN, CANOpen, RS232, RS485;
      Опытом работы с беспроводными модулями GSM,GPS,WiFi и их аппаратными реализациями;
      Опытом разработки ПО для серийных изделий.
      Мы предлагаем:
      ЗП по итогам собеседования, от 80 000 руб.
      Адекватную мотивацию как по ЗП, так и по бонусам;
      Комфортный офис, расположенный в самом центре г. Воронежа;
      Необходимое оборудование для продуктивной работы;
      Пятидневная рабочая неделя, с 9 до 18 часов ( возможно смещение времени работы);
      Работа в молодой команде профессионалов;
      Возможность работать с реальными проектами, видеть результаты креативной работы;
      Сладости для питания мозга :).
    • By Alan247
      Представляю на ваш суд:    https://thisismyhobby.ru/AVR_PAL_W.php   Ваше мнение?
       

    • By Prozac
      Здравствуйте, уважаемые форумчане! Вообще говоря, не имею такой привычки - донимать людей вопросами, и до всего стараюсь доходить самостоятельно. Но в данном случае без "помощи зала" совсем никак: перепробовал уже все, что только смог придумать - а "воз и ныне там! Поэтому и обращаюсь сюда - возможно, кто-то уже сталкивался с чем-то подобным, и сумел найти решение...
      Суть проблемы в следующем: решил построить ШИМ-контроллер для автомобильного вентилятора охлаждения ("карлсона"), но никак не могу заставить его работать - как только открываются VT2 и VT3, подключая нагрузку, МК уходит в резет или виснет (чаше - первое)!.. Сбросившись, опять пытается подключить нагрузку, и опять резетится, и так - без конца! Причем, изначально решил испытать схему не на индуктивной нагрузке (электромоторе), а на вполне себе пассивной 60Вт (около 3A по току) лампочке из фары - и та же фигня: МК пытается запуститься, сбрасывается, лампа моргает, дергается... Даже не ШИМ, а обычное мигание лампой с частотой 1Гц через несколько вспышек или вешает МК, или резетит его (что видно по сбою ритма моргания). При этом без нагрузки - по осциллографу, подключенному к ноге 5 МК или к нижнему (по схеме) выводу R7 - все отлично: наблюдается ровный и чистенький ШИМ-сигнал, изменяющийся согласно тестовой программе! Однако, стоит подать нагрузку, как осциллограмма начинает прыгать: появляются ШИМ-импульсы, затем ровная линия, затем снова импульсы с тем заполнением, которое должно быть в самом начале программы... Собственно, это наблюдение и позволило сделать вывод о том, что МК перезагружается.
      Естественно, первая мысль - слабый лабораторник (он у меня импульсный, самодельный, где-то на 3А - действительно слабый; но та же петрушка наблюдалась и при попытках питать устройство от трансформаторного ЗУ на 10А). Ну, пригнал машину, снял с нее аккум (100% свежий и не дающий просадок!), запитал от него - однако проблема повторилась... Значит, дело не в питании!.. Пробовал много различных танцев с бубном: отключал внешнюю цепочку сброса R2-C2 (результат - ноль), включал BOD микроконтроллера (стало еще хуже), подвешивал вместо C4 и C6 электролиты большей емкости (не помогло)... Думал, что, возможно, кондеи C4 и C6 разряжаются через R7 - экспериментировал с его сопротивлением (от 100 до 960 Ом), перекидывал его верхний вывод на анод VD1 (чтобы отсечь резистор от фильтрующих C4 и C6) - тщетно... Грешил даже на то, что какие-то проблемы вносит емкость затворов VT2 и VT3 - уменьшал сопротивление R10 и R12, дабы затвор быстрее "разряжался" - безрезультатно...
      Игрался с частотой МК и ШИМ - перебрал частоты ШИМ от 18 до 4687 Гц; пытался запускать нагрузку с разным заполнением ШИМ, от 10 до 40% - как глючило, так и глючит... Т.е., перелопатил, практически, всю схему!
      Удалось заставить устройство нормально работать на лампу, и даже на пару спаралеленных электродвигателей МЭ218 (от "печки") следующим образом: R8 был исключен (вместо него - перемычка), а C7 (изначально - К73-17В всего на 0,47мкФ) был заменен на пару электролитов по 1500мкФ, включенных плюс к плюсу последовательно (для устранения полярности кондеев). Нагрузка стала нормально подключаться, отрабатывать как на повышение, так и на убывание заполнения ШИМ. Двигатели отлично работали как при ступенчатом изменении ШИМ-заполнения, так и при плавном. Единственное, что при попытке подать на двигатели ШИМ с заполнением менее 20%, МК опять начинал дергаться и резетить, а так же резетил при резком отключении движков: если раскрутить их до 100%, а потом снять сигнал, то МК перезагружался; однако, если после 100% плавно понижать обороты где-то до 40%, и лишь потом снимать сигнал, то схема работала нормально. Плюс, очень сильно нагревались электролиты C7...
      Однако, когда принес схему в машину - для отладки непосредственно в "боевых условиях", и подключил мощный двигатель вентилятора, началась старая песня с резетами...
      Сейчас, вроде бы, "осенило" - поменял VD2 на Шоттки 1N5822 - лампочка запустилась на "ура" даже без С7; так же отлично и мягко стартовала спарка из МЭ218 - радостный побежал к машине... Но с "карлсоном" - опять мимо: МК вновь ушел в перезагрузку... Все: я не знаю, что тут делать - каждую деталь уже перелопатил, и кучу вариантов испробовал!!! Но ничего не понятно(( Вот и прошу помочь: может быть, кто-то уже был в такой ситуации, и как-то решил подобную проблему?
      VT2 и VT3 стоят "фирменные", IR-овские (не Китай) - из "Чип и Дипа". ATtiny13 - с Алиэкспресс; чтобы исключить возможность брака конкретной микросхемы, пробовал ставить в схему несколько разных экземпляров МК (из одной посылки). DS18B20 пока еще не подключал (нужно разобраться с ШИМ!). IRF3205 каскадированны для уменьшения нагрева (хотя его и так практически нет), и для дополнительной надежности (чтобы в случае выхода из строя одного транзистора не перегреть машину). Тестовую программу специально написал "китайским стилем", без циклов и т.п. - чтобы она была максимально простой, наглядной и линейной - для уверенности, что не в ней дело.
      Подскажите пожалуйста - откуда эти резеты, и как с ними бороться? Как заставить схему отрабатывать на мощную нагрузку? Заранее благодарю!!!
       
       
      ;*************ТЕСТОВАЯ ПРОГРАММА************* ;============ДИРЕКТИВЫ ТРАНСЛЯТОРУ=========== .device ATtiny13 .include "tn13def.inc" .list ;Обзывательство регистров .def Temp = R16 .cseg .org 0x00 ;=========ТАБЛИЦА ВЕКТОРОВ ПРЕРЫВАНИЙ======== rjmp Begin //Начальный сброс reti //Внешнее прерывание INT0 reti //Изменение состояния любой линии reti //Переполнение T0 reti //Готовность EEPROM reti //Срабатывание компаратора reti //Совпадение в канале A таймера T0 reti //Совпадение в канале B таймера T0 reti //Переполнение сторожевого таймера reti //Завершение преобразования в АЦП ;============МОДУЛЬ ИНИЦИАЛИЗАЦИИ============ Begin: ;-----Инициализация стека ldi Temp, RAMEND out SPL, Temp ;-----Отключение компаратора ldi Temp, 0x80 out ACSR, Temp ;-----Настройка портов ldi Temp, 0b00000111 out DDRB, Temp //PB0 - на вывод ;-----Настройка ШИМ ldi Temp, 0b11000001 out TCCR0A, Temp //Режим - быстрый ШИМ с инверсией ldi Temp, 0b00000010 out TCCR0B, Temp //Делим тактирование таймера на 8 rjmp Start //При старте пропускаем 5-секундную задержку ;===============ТЕСТОВЫЙ ЦИКЛ================ PWM: ldi Temp, 0b00000000 out OCR0A, Temp //ШИМ=0% rcall Delay5sec //Ждем 5 сек ;-----Повышаем скорость Start: ldi Temp, 77 out OCR0A, Temp //ШИМ=30% rcall Delay2sec ldi Temp, 102 out OCR0A, Temp //ШИМ=40% rcall Delay2sec ldi Temp, 128 out OCR0A, Temp //ШИМ=50% rcall Delay2sec ldi Temp, 154 out OCR0A, Temp //ШИМ=60% rcall Delay2sec ldi Temp, 179 out OCR0A, Temp //ШИМ=70% rcall Delay2sec ldi Temp, 205 out OCR0A, Temp //ШИМ=80% rcall Delay2sec ldi Temp, 230 out OCR0A, Temp //ШИМ=90% rcall Delay2sec ldi Temp, 255 out OCR0A, Temp //ШИМ=100% rcall Delay2sec ;-----Понижаем скорость ldi Temp, 230 out OCR0A, Temp //ШИМ=90% rcall Delay2sec ldi Temp, 205 out OCR0A, Temp //ШИМ=80% rcall Delay2sec ldi Temp, 179 out OCR0A, Temp //ШИМ=70% rcall Delay2sec ldi Temp, 154 out OCR0A, Temp //ШИМ=60% rcall Delay2sec ldi Temp, 128 out OCR0A, Temp //ШИМ=50% rcall Delay2sec ldi Temp, 102 out OCR0A, Temp //ШИМ=40% rcall Delay2sec ldi Temp, 77 out OCR0A, Temp //ШИМ=30% rcall Delay2sec rjmp PWM //Возвращаемся, и начинаем с 5 сек "молчания" ;===========ПОДПРОГРАММЫ ЗАДЕРЖКИ============ ;-----Задержка в 2 секунды Delay2sec: ldi R17, 253 ldi R18, 75 ldi R19, 29 L1: subi R17, 1 sbci R18, 0 sbci R19, 0 brcc L1 nop ret ;-----Задержка в 5 секунд Delay5sec: ldi R17, 253 ldi R18, 61 ldi R19, 73 L2: subi R17, 1 sbci R18, 0 sbci R19, 0 brcc L2 nop ret  

    • By Дмитрий Чуков
      Необходимо составить программу, которая формирует сигнал с частотой 1 кГц и скважностью 4 при помощи таймера. В CodeVision AVR написать программу и после в протеусе проверить, целый день уже бьюсь, не могу разобраться с таймерами. Вроде задача не трудная, если бы увидел, как это должно выглядеть в коде... Как настроить таймер для ATMega8A и решить эту задачу?
    • By Ilya Gray
      Доброго времени суток!
      В целом, имеется опыт разработки малых устройств, что-то понимаю, в общем, старательно читаю даташиты, даже понимаю их, но на звание серьёзного инженера (пока что) не претендую.
      Я пытаюсь использовать I2C на 8-битном PIC16F18326. Сижу в даташитах. Всё понимаю, всё делаю, на мой неопытный взгляд, правильно. Даже копирую полностью рабочие примеры (я даже купил такой же микроконтроллер, как в примере, скопировал код, контролируя, что он делает. Но всё равно не работает - SCL/SDA на 5в и всё тут).
      Так вот: PIC16F18326 on breadboard (прошу прощения, я хз как это по-русски) на внутреннем 32мгц кристалле. Чип пашет, без проблем моргаю LEDкой. Ну, думаю, щас быстренько подниму I2C. В итоге SCL SDA сидят на 5в без движения. Я использую LED для отладки. Судя по LED, код заloopливается в месте, где проверяется while PIR1bits.SSP1IF==0. Я уже везде был, кучу форумов перерыл. Уже попробовал всё, что мог представить. Я довольно новый в мире PIC, хотел попробовать их, а они ужасно сопротивляются. Уже 2 недели долблюсь безуспешно.
      Подтяжки 10к, проблем с ними никогда не было.
      Собственно, вот код (я уже там попробовал повыключать ADC, вычитал про баг, что сначала I2C пины надо делать OUTPUT LOW, а потом уже INPUT из-за бага MSSP, но ничего не помогло).
      // PIC16F18326 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FEXTOSC = OFF // FEXTOSC External Oscillator mode Selection bits (Oscillator not enabled) #pragma config RSTOSC = HFINT32 // Power-up default value for COSC bits (HFINTOSC with 2x PLL (32MHz)) #pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; I/O or oscillator function on OSC2) #pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed) #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled) // CONFIG2 #pragma config MCLRE = ON // Master Clear Enable bit (MCLR/VPP pin function is MCLR; Weak pull-up enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config WDTE = OFF // Watchdog Timer Enable bits (WDT disabled; SWDTEN is ignored) #pragma config LPBOREN = OFF // Low-power BOR enable bit (ULPBOR disabled) #pragma config BOREN = ON // Brown-out Reset Enable bits (Brown-out Reset enabled, SBOREN bit ignored) #pragma config BORV = LOW // Brown-out Reset Voltage selection bit (Brown-out voltage (Vbor) set to 2.45V) #pragma config PPS1WAY = ON // PPSLOCK bit One-Way Set Enable bit (The PPSLOCK bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle) #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a Reset) #pragma config DEBUG = OFF // Debugger enable bit (Background debugger disabled) // CONFIG3 #pragma config WRT = OFF // User NVM self-write protection bits (Write protection off) #pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE configuration bit is ignored.) // CONFIG4 #pragma config CP = OFF // User NVM Program Memory Code Protection bit (User NVM code protection disabled) #pragma config CPD = OFF // Data NVM Memory Code Protection bit (Data NVM code protection disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #include <htc.h> #include <stdio.h> #include <stdint.h> #define _XTAL_FREQ 32000000 void i2c_is_idle(void){ //while(!PIR1bits.SSP1IF); //while(SSPCON2bits.SEN==1 || SSPCON2bits.RSEN==1 || SSPCON2bits.PEN==1 || SSPCON2bits.RCEN==1 || SSPCON2bits.ACKEN==1 || SSPSTATbits.R_nW==1){}; while(PIR1bits.SSP1IF == 0){ PORTCbits.RC2=1; }; // SSP1IF is set when operation complete PORTCbits.RC2=0; PIR1bits.SSP1IF = 0; // clear interrupt flag } void i2c_start(void){ i2c_is_idle(); SSPCON2bits.SEN = 1; } void i2c_rep_start(void){ i2c_is_idle(); SSPCON2bits.RSEN = 1; } void i2c_stop(void){ i2c_is_idle(); SSPCON2bits.PEN = 1; } void i2c_write(uint8_t i2c_data){ i2c_is_idle(); SSPBUF = i2c_data; while(SSPSTATbits.BF != 0); while(SSPCON2bits.ACKSTAT != 0); } uint8_t i2c_read(uint8_t ack){ uint8_t recieve =0; i2c_is_idle(); SSPCON2bits.RCEN = 1; while(SSPSTATbits.BF != 1); recieve = SSPBUF; SSPCON2bits.ACKEN = ack; return recieve; } void i2c_init(void){ TRISCbits.TRISC0 = 1; TRISCbits.TRISC1 = 1; SSPSTATbits.SMP = 1; SSPSTATbits.CKE = 0; SSPCONbits.SSPM = 0x08; SSPADD = 79; SSPCONbits.SSPEN = 1; } void main(void) { ANSELCbits.ANSC0 = 0; //ADC RC0 OFF ANSELCbits.ANSC1 = 0; //ADC RC1 OFF TRISCbits.TRISC2=0; //LED PIN TRISCbits.TRISC0=0; //MSSP bug counter TRISCbits.TRISC1=0; //MSSP bug counter //__delay_ms(5); LATCbits.LATC1=0; //MSSP bug counter LATCbits.LATC0=0; //MSSP bug counter //__delay_ms(5); INTCONbits.GIE=1; //global interrupt en INTCONbits.PEIE=1; //peripheral interrupt en ADCON0bits.ADON=0; //unpower adc just in case i2c_init(); //THIS SETS TRISC BITS FOR SCL SDA while(1){ i2c_start(); i2c_write(0x3C); i2c_stop(); } return; } Задача: просто увидеть коммуникацию на SCL SDA, я уже потом по даташитам таргет девайсов без проблем напишу дрова. Не получается именно осуществлять коммуникацию.
      Подскажите, пожалуйста, я не понимаю, где я дурак, а между тем волос на голове становится всё меньше, а те, что остались, стремительно приобретают серый окрас, ибо 2 недели я долбаюсь с одной проблемой. Благодарю за ваши советы. Спасибо.
       
×
×
  • Create New...