Jump to content

Search the Community

Showing results for tags 'Pic'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
    • Competition 2019
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube
  • Радиолюбительская доска объявлений exDIY's Надежность и группы продавцов

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 92 results

  1. - Приобрел я с DX.COM среду программирования (Arduino nano v3.0) - установил все драва, запустил, проверил работоспособность при помощи Delay светодиода (мерцания светодиода на самой плате) - прочел с оф сайта подключение PIC контроллера, источник: http://forum.arduino.cc/index.php/topic ,92929.0.html все сделал. кроме одного. питания еще не подвел. побаиваюсь сжечь USB порт или сам программатор, хотя в принципе программатор защищен от КЗ. в сам программатор загрузил скетч для программирования PIC контроллера. хотя в принципе он и так бы программировался. в типе программирования стоит: AVRISP mkII был так же просто AVRISP Вопрос №1: Можно ли подвести питания с действующего БП, или же сама плата может передать питания? на скок я слышал, тут должно быть фантомное питание. на скок я понял: 12 вольт.....это доп питание. получается на программаторе 30 ножка (in 7-12 volts DC) и минус на MCLR (4 нога Pic) ну вроде бы это все. в дополнений скажу и попрошу прощения у знающих: Извиняюсь, но я...не особо то умею пользоваться даташитом, мне сказали, что в даташите все есть, но я малопонял где там искать. Я облазил весь инет в поисках того, как запрограммировать пик контроллер при помощи Arduino и вроде бы нашел. и еще одно. программатор прошивает контроллеры на языке C\C++, но сама прошивка для PIC закодирована в файле *.Hex, и что мне с ним делать? импортировать ни как не могу. источник прошивки: http://radiokot.ru/circuit/digital/game/20/ я скинул сам сайт того, что я хочу сделать. лично мне посоветовали этот программатор. типо дешево и универсально. Ну в общем то все. _________________________________ Конечно был еще вопросик не касающийся этой темы, но я подумывал еще заказать готовый трансивер, но вот проблема с поиском. нашел что то подобное: http://radiokot.ru/circuit/digital/game/20/ думал: то это или нет. вроде бы то, что надо, но не вижу скок команд. мне как в среднем нужно 4 команды. чем больше, тем лучше. Но приоритет в основном в защищенности, помехоустойчивости. размеры не особо критичны, команды, желательно бы от четырех и выше.
  2. P32L

    Работа С Eeprom

    Натолкните на мысль пожалуйста.Смысл в следующем.Нужно изменять задержку(Delay) из EEPROM. Контроллер PIC , язык СИ. Как реализовать чтение числа из ипрома ? Если не затруднит, то кусочек кода был бы очень кстати.
  3. Всем привет и доброго времени. Собираю RGB контроллер. алгоритм работы обещают есть исходник и прошивка RGB.rar Собственно вопрос: может кто изменить прошивку чтоб программы чередовались автоматом ? Сам не владею к сожалению темой, первый блин так сказать.
  4. alder

    Pic Basic

    Есть такой язык программирования PIC контроллеров PicBasic. Описание языка не Pro можно взять здесь: http://www.microengi...ds/pbcm202a.PDF описание языка Pro - здесь: http://www.microengi...ds/pbpm502a.PDF Предлагаю в эту тему писать вопросы и ответы по программированию на PicBasic. Подобных языков существует много, но я выбрал именно этот. Как считаете, я не ошибся, может есть что лучшее. Скажу, что освоить его так же легко, как и старый, знакомый многим QBasic. Единственной проблемой для русскоязычных может стать то, что документация на английском, а технический перевод похож на набор бессмысленных русских слов. Может это у меня переводчик такой – Сократ персональный. Здесь можно скачать редактор для написания программ: http://kazus.ru/nuke...eStudioPlus.exe http://www.rentron.c...io/mcstudio.exe Присоединить к редактору компилятор: http://kazus.ru/nuke...sicPro_2.44.exe Компилятор поддерживает все существующие пики. Написали программку, щелк мышкой, и у вас уже готовый hex файл для программатора. При желании можно специальную программу поддержки программатора http://microengineer...loads/EBETA.ZIP «прицепить» к редактору, и тогда не нужно вручную открывать hex файл, он автоматически, после компиляции, запишется в программу, управляющую программатором. Мне кажется удобно. Удобно также то, что пик-бейсик-программу, написанную для одного пика можно быстро переписать под другой, лишь бы у пика хватило портов, памяти и нужных функций. Есть пики, например PIC16F628, котрые поддерживают функцию ICD, для этих пиков, бейсик программу можно запустить в кристалле по шагам из редактора, перед этом связать пик с компьютером через com порт, и отладочную информацию (например величины переменных и др.) контролировать прямо в окне редактора, в ходе выполнения программы. Подробности позже, если кого заинтересует. Ну что скажете по этому PicBasic-у. Хочу знать, насколько этот язык популярен среди "паяльников". А может кто и не знал о нем, то советую попробовать, и паяльник отдохнет. ЗЫ (31 марта 2006 г.) Здесь есть ссылки на полезную инфу по теме PicBasic Pro: http://forum.cxem.ne...?showtopic=4837
  5. Пример кода кто нибудь дайте? Ах да, программирую в mikropascal pro
  6. Есть исходник на ассемблере под pic12c509, данный МК нету возможности найти и купить, но есть другой - pic12f675. Подскажите как перелопатить прошивку под pic12f675, что нужно менять и сложно ли это сделать? https://www.dropbox.com/s/j2gkg0ub4h8qzgq/Autozavod.HEX?dl=1
  7. Уважаемые радиолюбители! Продаю плату Pic Web Platform Это devboard на каком-то PIC-контроллере (ссылки ниже), в частности разрабатывалась авторами, как веб-сервер с кредитку. Плата новая, даже включить руки не дошли, а все потом что я, как оказалось, совсем не PICовед... Информацию о плате можно почерпнуть тут и тут Цена вопроса 500р (в случае самовывоза из Москвы) +200 рублей за почту РФ (по России и странам таможенного союза). Торг уместен, правда в личке или в почте. Для связи: nzabrod<at>яндекс.ру, а также личка здесь,хотя на почту отвечаю почти сразу
  8. Здравствуйте. Имею следующую задачу. На мк pic18f4550 сформировать массив данных с АЦП, отфильтровать его и отправить на мк. Но мне немножко непонятен сам процесс. Ниже привел фрагмент кода(также он полностью прикреплен в архиве) WORD_VAL ReadPOT(void) { WORD_VAL w; w.Val = 0; ADCON0bits.GO = 1; // начинаем АЦП while(ADCON0bits.GO); // ждем, пока не закончилось w.v[0] = ADRESL; // записываем в переменные w.v[1] = ADRESH; //---Здесь начинается формирование массива данных для фильтрования---// using namespace std; double massiv1[]; for (i = 1; i <= 1000; i++);// задаем начальное значение 1 и конечное значение 1000 с шагом 1 { massiv1[i]= (w.v[1] << 8) + w.v[0]; } //---Здесь заканчивается формирование массива данных для фильтрования---// //---Фильтр---// int i,j,z,k1,k2,hw,n,window; double tmp,input,output; if(fmod(window,2)==0) window++; hw=(window-1)/2; output[0]=massiv1[0]; for (i=1;i<n;i++){ tmp=0; if(i<hw){ k1=0; k2=2*i; z=k2+1; } else if((i+hw)>(n-1)){ k1=i-n+i+1; k2=n-1; z=k2-k1+1; } else{ k1=i-hw; k2=i+hw; z=window; } for (j=k1;j<=k2;j++){ tmp=tmp+massiv1[j]; } output[i]=tmp/z; } //---end фильтр---// w = output[]; return w; }//end ReadPOT После фильтра уже нет старшего и младшего байта,непонятно,как сделать обратное преобразование,поскольку по USB передача идет именно так. Нужно ли вообще это преобразование? И как передаются данные на мк, можно ли отправить весь отфильтрованный массив? void ProcessIO(void) { // если еще не настроено или в режиме сна, то не делать ничего if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return; //Проверить, если мы получили исходящий пакет if(!HIDRxHandleBusy(USBOutHandle)) { //Мы только что получили исходящий пакет. Проверим первый байт, чтобы понять что за команда switch(ReceivedDataBuffer[0]) { case 0x80: //вкл/выкл светодиод mLED_1_Toggle(); break; case 0x81: //проверить статус переключателя sw // проверяем, свободен ли буфер записи, перед тем, как записать туда if(!HIDTxHandleBusy(USBInHandle)) { ToSendDataBuffer[0] = 0x81; //создаем сообщение с информацией о переключателе sw if(sw3 == 1) { ToSendDataBuffer[1] = 0x01; } else { ToSendDataBuffer[1] = 0x00; } //готовим USB модуль для отправки данных хосту USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64); } break; case 0x37: //проверить напряжение на АЦП { WORD_VAL w; // проверяем, свободен ли буфер записи, перед тем, как записать туда if(!HIDTxHandleBusy(USBInHandle)) { w = ReadPOT(); //считываем напряжение. функция определена ниже. ToSendDataBuffer[0] = 0x37; //делаем сообщение - напряжение на АЦП ToSendDataBuffer[1] = w.v[0]; //Передаем младший байт ToSendDataBuffer[2] = w.v[1]; //старший байт //готовим USB модуль для отправки данных хосту USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64); } } break; } //готовим выходную конечную точку, чтобы хост смог отправить нам еще пакет ифнормации USBOutHandle = HIDRxPacket(HID_EP, (BYTE*)&ReceivedDataBuffer, 64); } }//end ProcessIO main.rar
  9. Всем привет, интересует счетчик импульсов для жки мониторчика. в интернете гуляет от самопалкина, но там нет исходников. я бы хотел изучить такую программу например в AVR studio, т.е. исходник. суть алгоритма, счетчик +1 до 1 миллиона например. выводится это на ЛСД монитор двух строчный.... плюс +1, минус -1... до 0, по нажатию на кнопку сохранить в eeprom. при нажатии другой кнопки - скинуть.... помогите кто чем может... ссылка самопалкина: http://monitor.espec.ws/section44/topic124538p40.html но там уже готовая прошивка в hex. нет исходника ( вопрос на засыпку. flowcode можно полноценно назвать замену например codesys или avr studio. можно в flowcode набросать программу блок схемами, что в итоге приведёт к готовому решению, которое можно прошить на контроллер и пощупать в руках??)) запутанно) температура00
  10. Собственно вопрос кто имел дело просьба отписаться, ибо придется сохранять в памяти некоторое количество констант на долгое время. Даташит на микруху прочел, указывается только память программ 128кб и SRAM - оперативка(регистры) - 3808б ,но все таки? микроконтроллер без пзу - это как-то странно по меньшей мере. Нужно делать проект по работе, был выбран этот микроконтроллер так как аппаратно поддерживает ethernet. P.S. если знаете другие микрики с встроенным ethernet просьба отписаться
  11. Собрал схему стробоскопа,собрал программатор,залил прошивку поставил пик в плату стробоскопа,и не работает. У меня несколько вопросов Сейчас я отцепил силовую часть,оставил только пик, подаеться на нее напряжение и сигналы с двух резиков,а на выходе (3 и 4 нога) ничего не происходит,показывает 0в если мерить относительно минуса.Так и должно быть? Почему эта схема не работает? Добавил всё в картинки а вот и сама прошивка :100000002030840027300C208316FF2390008301CA :10001000F92A04068001840A0406031D09286400E5 :020020000034AA :1005F200831212232823FB2AAB01AC010310AA0C9D :10060200A90C031C0B2B2708AB0728080318280A80 :10061200AC070310A70DA80D29082A0403190034FA :10062200FF2A8B010730831299000330831685005D :1006320083128501831681179F011F179F121F16B0 :100642001F149F1483129F171F131F140800831275 :100652006F232008A400492B05162208A5002308B1 :10066200A60025080319A603A503250A0319260ACD :10067200031D322B05122208A5002308A600250817 :100682000319A603A503250A0319260A031D402BF5 :10069200A403240F2D2B2008A4006B2B85162208FF :1006A200A5002308A60025080319A603A503250A09 :1006B2000319260A031D542B85122208A5002308BC :1006C200A60025080319A603A503250A0319260A6D :1006D200031D622BA403240F4F2B080083129F11CA :1006E2001F110C139F149F18742BFF30A900AA012D :1006F2001E08A700A801FD2283161E082B078312DD :10070200A0002C0803182C0AA1009F111F150C131E :100712009F149F188A2BFF30A900AA011E08A70068 :10072200A801FD2283161E082B078312A2002C08A3 :1007320003182C0AA300003021026430031920029E :1007420064300318A62BA000A101A900AA01200869 :10075200A7002108A800C5232B08A0002C08A1008F :10076200003023023230031922020318BB2B32302D :0E077200A200A3010310A20DA30D0310A20DFF :10078000A30D0310A20DA30D0800AD01AB01AC0138 :1007900029082A04031DCF2BA701A80100341F300C :1007A000AD040310AD0AA90DAA0D031CD22BAA0C8F :1007B000A90C2A082802031DDF2B29082702031C85 :1007C000E72B2908A7022A08031C2A0AA802AB0D56 :1007D000AC0DAD0BAD1AD72BAD1FF32BAB09AB0A8C :1007E0000319AC03AC092B08A9002C08AA002D1F83 :0E07F0000034A709A70A0319A803A8090034BA :02400E00C43FAD :00000001FF Заранее благодарен кто чем сможет помочь PSB-Strob_LED.rar
  12. Добрый день всем. Написал простенькую MPASM програмульку которая после включения записывает продолжительность импульсов замеряных с помощью TMR0 на порту GP3 в EEPROM память(При этом считаю все что меньше 0х50 или больше 0xFF мусором и в память не пишу), програмку отладил в студии и прошил контролер PICLite2 программером. Судя по индикаторным светодиодам (которые на портах GP0-GP2) - работает прекрасно. Вот только одно но, когда включаю его через программатор - он суда повсему подает на МК питание, и какие то сигналы на GP3 порт, в общем в EEPROM-е у меня одни только 0х55 да пара 0чFF присутствуют при попытке чтения (и картинка меняется если перечитать его). МК не умер, так как другая прошивка (которая ничего не пишет в память работает прекрасно и такого с памятью не наблюдается). Подтвердил это стиранием EEPROM-а и попыткой прочитать его. Подскажите что за сигналы подает программатор на GP3? В документации ничего не нашел на этот счет.
  13. Всем привет. поставил задачу закрыть последний долг перед ГОСами срочно. оказался он для меня сложнее всех...( задача курсового вся в прикреплённом файле. Примерная схема ещё в одном прикреплённом файле. Интересует как измерить частоту. выходной сигнал у меня есть - частота с датчика, которую надо сосчитать за какое то время, получить цифру и вывести на табло. Знания у меня далеко не глубокие. поэтому прошу помощи у вас написать программку. есть 2 алгоритма как это можно сделать: 1) измеряемый сигнал подаём на аналоговый вход, на котором настроен АЦП. С определённой частотой микроконтроллер этот АЦП запускает и считывает данные об уровне сигнала. Частота, с которой должен запускаться АЦП, должна быть минимум в 2 раза выше частоты входного сигнала (теорема Котельникова) - чем больше запас, тем лучше. Лишь бы хватило времени на, собственно, оцифровку (в даташите должны быть указания по расчёту времени работы АЦП) и обработку информации. Максимальная частота входного сигнала определяется по формуле из ТЗ по максимальной измеряемой скорости. Можно запускать АЦП не постоянно, а, как предлагается по ссылке, в определённые промежутки времени. Например, каждую секунду могут начинаться промежутки работы АЦП, равные, допустим, 50 мс. Полученные с АЦП значения заносятся в массив данных, который просматривается на предмет достижения минимума/максимума. Эти точки находятся, определяется время между ними (через количество отсчётов). Это будет половина периода. Умножим на 2 (сдвиг влево) - получим полный период; возьмем обратную дробь - получим частоту 2) цепануть на компаратор этот сигнал, в качестве опорного 0-й сигнал, как они сравняются компаратор 1-ку выдаст. по этой единички запустить таймер. 3-й там чтоли нарастающий который. потом снова компаратор 1-ку выдаст. остановить таймер.взять из него число.это полупериод будет.сложность тока в настройке таймера чтоб он норм время считал. для точности можно несколько раз так померить период. а потом среднее значение взять. Вся программа теоретическая, никуда заливаться не будет. т.е. хотя бы примерно....( как вывести на экран разберусь. Программировали в универе на MPLab8 язык C.
  14. Собрал термометр по схеме http://cxem.net/mc/mc33.php,Контроллер прошился нормально,всё б хорошо если б.Когда включаешь питание на индикаторе 0.1до тех пор пока не возьмёшся за контакты датчика пальцами тогда показывает как положено.Кто сталкивался с таким подскажите как решить эту проблемку?Хочется сей девайс в машинку вместо штатного показометра температуры.
  15. Здравствуйте, господа. Без лишней лирики перейду сразу к делу. Имеется задание на курсовой проект, где нужно принять два налоговых сигнала с амплитудой 0-5 В, пропустить их через АЦП, выполнить определенные операции и, пропустив через ЦАП, послать на выход получившиеся аналоговые сигналы. Имеется также ряд вопросов: 1. Скольки разрядный АЦП стоит использовать (а соответственно и МК)? Какая точность в данной ситуации не покажется абсурдно низкой? 2. Можете привести пример использования ЦАП в одном из МК вышеуказанной серии? В гугле достаточно много информации по АЦП, а вот по ЦАПу я так и не смог найти ничего. Нужно принимать во внимание то, что среди операций есть взятие корня, возведение в степень и деление, то есть, если отбрасывание дробной части результата не вариант, то нужно преобразование выполнять с числом немалой разрядности (кстати, как организована работа в МК с "дробными" числами). 3. Как организовать параллельный ввод двух сигналов и, соответственно, вывод? Оговорюсь, что знания в плане микроконтроллеров у меня поверхностные, но курсовой-то делать надо. Поэтому в своих вопросах мог нести ахинею, не обессудьте. Спасибо.
  16. Здравствуйте уважаемые форумчане. Помогите внести ясность в мой курсовой проект. Нужно разработать схему управления шлагбаумом. условие: вес стрелы 50 кг, длина стрелы-4м двигатель безредукторный с цифровым управлением с пит.24В управление с пульта - 2 кнопки поднять/опустить Вот что думаю я: самое простое - использовать двигатель постоянного тока без реверса и управлять мощностью напряжением. Чтобы поднять-на двигатель подаем напряжение 24В чтобы опустить-рассчитыаем напряжение в котором мощности двигателя не хватит, чтобы удержать стрелу - для плавного опускания в качестве сигнализаторов будет использовано 2 концевика Подскажите, правильно ли я думаю?
  17. Есть задача с помощью микроконтроллера семейства PIC запрограммировать DDS синтезатор AD9914 на синтез определенной частоты(1ГГц), опыта программирования синтезаторов у меня еще не было, так что если кто-нибудь общий принцип действий опишет или на книжку покажет был бы благодарен
  18. Здравствуйте, я новичок, поэтому прошу сильно не пинать, тем на форуме про mikroC вроде бы нету, если создал не в той ветки прошу перенаправить. Проблема заключается в следующем: написал программу в микроси для pic18f242, простой вывод сообщения на lcd, собрал в протеусе всё работает, делаю тоже самое с pic18f2550 экран просто горит и ничего не выводит, эта же проблема была и с другими мк. На англоязычном форуме нашёл что нужно делать задержку после инициализации мк на 1с. но это тоже не помогает. Написал прогу в мплабе скомпилил, залил в 2550 всё работает, но нужно именно на микроси, может быть кто то сталкивался с этой проблемой. Ах да ещё через раз при инициализации lcd на порт C микроси страшно ругается как будто этого порта нету, версия mikroC PRO for PIC 6.0.0. Спасибо за помощь. lcd_pic18f242.rar lcd_pic18f2550.rar
  19. При изготовлении автомобильной сирены с записью аудио-фрагментов столкнулся тем, что сирена не определяется программой для записи аудио-фрагментов, выдается сообщение: "устройство не является сиреной". PIC программировал PICkitом. В описании на сирену написано, что нужно выставлять: Fuse: LPV_OFF, WDT-on, HS_OSC. Как это правильно выставить в PICkit. По умолчанию стоит как на картинке.
  20. И так собираем часы qlock. Для этого нам надо: схема, прошивка, светодиоды и сопутствующие детали. Сразу предупрежу, схема в железе не проверена. Но постепенно проверю и отлажу, потому что собирать буду сам. Пример экрана для часов - вот Схема, прошивка и демонстрационный проект в протеусе: Archiv.zip
  21. Дорогие люди помогите с дипломом ! пишу про блокиратор LTE сети, используется микроконтроллер для синтеза аналоговых сигналов(Пилообразный и синус для шума) есть программа, сперта с texas instruments для MSP430, подойдет ли она на PIC16F628, т.к. видел что его чаще использовали для генераторов шума ( плюс в мсп 64 ноги - многовато ) ). Главный вопрос даже не в этом, мне необходимо получить эксперимент, а именно хотя бы спектры сигналов после микроконтроллера, какие программы использовать для запуска асс-рского кода и получения спектров? Вот программа для MSP430: NAME PWMDAC ;************************************************************************************ ; Программа реализации ЦАП на базе ШИМ ; Генерирует синусоиду частотой 250Гц с использованием ШИМ на базе таймера Timer_B. ; ; Описание: программа демонстрирует использование ШИМ-таймера совместно ; с внешними фильтрами для реализации ЦАП. Показан способ формирования ; синусоиды частотой 250Гц, пилообразного сигнала частотой 125Гц и ; сигнала с постоянным уровнем с использованием таймера Timer_B. ; Возможно аналогичное использование таймера Timer_A. В таблице sine table holds the ; хранятся отсчёты значений синусоиды. Для формирования «пилы» используется ; простой инкремент значения ШИМ. Постоянный уровень формируется зарядом ; конденсатора RC-цепи при помощи выхода ШИМ. Значение напряжения при этом ; прямо пропорционально коэффициенту заполнения сигнала ШИМ. После ; инициализации, ЦПУ переводится в режим пониженного энергопотребления LPM0. ; Он остаётся в этом режиме до прихода прерывания CCIFG0 от таймера Timer_B ; В подпрограмме обработки прерывания таймера Timer_B ISR в регистр CCR1 ; загружается следующее значение для синусоиды, значение «пилы» инкрементируется ; и загружается в регистр CCR2. По возвращении из прерывания ; ЦПУ снова переходит в режим пониженного энергопотребления LPM0. ;************************************************************************************ #include "MSP430X14x.H" ; Включить в проект файл со ; стандартными определениями Delta EQU 250 ; Delta = требуемая частота DCO/8192 ; Требуемая частота генератора DCO = 2.048МГц ; Это значение используется ; в программном стабилизаторе FLL ; для калибровки частоты генератора DCO ; с использованием кварцевого ; резонатора с частотой 32768Гц ; в качестве опорного. Более подробная ; информация по стабилизации частоты ; генератора DCO и программе ; стабилизатора FLL см. пример применения ; под названием «Управление частотой ; генератора с цифровым управлением (DCO) ; микроконтроллеров MSP430x11x» ; ( "Controlling the DCO frequency of the ; MSP430x11x" Literature number SLAA074) ;-------------------------------------------------------------------------------------- RSEG CODE ;-------------------------------------------------------------------------------------- Sine_Tab DW 255 ; Таблица синуса, отсчёты DW 254 ; десятичные значения DW 246 ; загружаемые в регистр TBCCR1 для изменения DW 234 ; коэффициента заполнения ШИМ. DW 219 ; Вместо байт требуется использовать слова DW 199 ; т.к. в регистры ТВ DW 177 ; требуется записывать слово целиком DW 153 ; Значение '0' использовать нельзя DW 128 ; иначе таймер будет глючить. DW 103 DW 79 DW 57 DW 37 DW 22 DW 10 DW 2 DW 1 DW 2 DW 10 DW 22 DW 37 DW 57 DW 79 DW 103 DW 128 DW 153 DW 177 DW 199 DW 219 DW 234 DW 246 DW 255 ;------------------------------ Здесь начинается программа ---------------------------- RESET mov #02FEh,SP ; Инициализация указателя стека StopWDT mov #WDTPW+WDTHOLD,&WDTCTL ; Остановить сторожевой таймер WDT SetupP4 bis.b #00Eh,&P4SEL ; Выбрать TB1, TB2 и TB3 вместо портов bis.b #00Eh,&P4DIR ; P4.x, и назначить их выходами SetupBC mov.b #0A6h,&BCSCTL1 ; ACLK делится на 4. RSEL=6, ; MCLK и SMCLK не делятся, ; источником MCLK и SMCLK является DCO ; генератор XT2 выключен. ; ПРИМЕЧАНИЕ: для определения значения ; Rsel для требуемой частоты DCO, ; обратитесь к таблице DCO в докуметнтации call #Delay ; Пауза для стабилизации кварца. ; Необходима из-за того, что ; кварцевый резонатор 32768Гц используется ; в качестве опорного для стабилизации частоты ; генератора DCO. Поэтому резонатор на 32768 ; должен быть стабильным. call #SW_FLL ; Вызов подпрограммы стабилизации ; частоты генератора DCO. call #TB_SETUP ; Инициализация таймера Timer_B ; для генерации сигналов ШИМ clr R15 ; R15 и R14 используются как указатели clr R14 ; на таблицу синусов и для хранения ; значения «пилы» после стабилизации DCO eint ; Разрешение прерываний bis #LPM0,SR ; «усыпить» ЦПУ. ; Завершение программы ; остаётся обработчик прерывания CCIFG0 ; где обновляются значения ШИМ ;-------------------------------------------------------------------------------------- Delay ; Программная пауза для стабилизации кварца ;-------------------------------------------------------------------------------------- mov #0004h,R15 L1 mov #0FFFFh,R14 ; ~ 1 секунда . L2 dec R14 ; jnz L2 ; dec R15 ; jnz L1 ; ret ; ; ;-------------------------------------------------------------------------------------- SW_FLL ; Подпрограмма стабилизации частоты DCO. ; Кварцевый генератор 32768Гц используется ; в качестве опорной частоты для стабилизации ; и подстройки генератора DCO до требуемой ; частоты 2.048МГц. Это требуется в устройствах ; где нужна фиксированная частота DCO и для ; тех моделей MSP430 где нет аппаратного ; модуля FLL. См. руководства пользователя ; MSP430x3xx и MSP430x1xx Family ; User's Guides (literature number SLAU012 и ; SLAU049 соответственно) по вопросам, ; касающимся системы тактирования MSP430 ; ; процедура основана на подсчёте тактов DCO ; за период ACLK (точнее, за 1/4 периода ACLK ; т.к. частота ACLK поделена на 4). Таймер ; Timer_A используется для подсчёта тактов DCO ; Полученное значение сравнивается с ; номинальным (Delta). Если число слишком ; большое, DCO декрементируется. Если число ; слишком маленькое, DCO инкрементируется. ; Далее сравнение повторяется. ; Процесс продолжается до тех пор, пока ; значения не сравняются. После этого ; DCO генерирует на требуемой частоте ; См. пример применения «Управление частотой ; генератора с цифровым управлением (DCO) ; микроконтроллеров MSP430x11x» ; ( "Controlling the DCO frequency of the ; MSP430x11x" Literature number SLAA074) по ; вопросам, связанным с управлением ; генератором DCO. ; ; Эта процедура вызывается только один раз ; в качестве примера, в реальных условиях ; её требуется выполнять периодически, чтобы ; быть уверенным, что генератор DCO ; остаётся откалиброванным. ;-------------------------------------------------------------------------------------- clr R15 ; Setup_TA mov #TASSEL1+TACLR,&TACTL ; Источник тактирования TA - SMCLK Setup_CC2 mov #CCIS0+CM0+CAP,&CCTL2 ; Определить CCR2,CAP,ACLK bis #MC1,&TACTL ; Запустить таймер timer_A ; в непрерывном режиме Test_DCO bit #CCIFG,&CCTL2 ; Проверка флага захвата jz Test_DCO ; bic #CCIFG,&CCTL2 ; Очистка флага захвата ; AdjDCO mov &CCR2,R14 ; В R14 число тактов SMCLK sub R15,R14 ; в R14 разница mov &CCR2,R15 ; В R15 число тактов SMCLK cmp #Delta,R14 ; Delta = SMCLK/(32768/4) jlo IncDCO ; jeq DoneFLL ; DecDCO dec.b &DCOCTL ; jmp Test_DCO ; IncDCO inc.b &DCOCTL ; jmp Test_DCO ; DoneFLL clr &CCTL2 ; очистить CCR2 clr &TACTL ; остановить таймер timer_A ret ; возврат из подпрограммы ;-------------------------------------------------------------------------------------- TB_SETUP ; Подпрограмма инициализации таймера ; Timer_B для генерации ШИМ ;-------------------------------------------------------------------------------------- mov #TBSSEL1+TBCLR,&TBCTL ; SMCLK –источник тактирования TB. mov #CCIE,&TBCCTL0 ; Перевести CCR0 в режим сравнения, ; разрешить прерывания от него mov #0FFh,&TBCCR0 ; Записать 255d в CCR0. Это соответствует ; периоду ШИМ-выходов в 256 отсчётов (8 бит). ; т.е. получаем 8-битный ЦАП. mov #02E0h,&TBCCTL1 ; Перевести CCRx в режим сравнения, запретить mov #02E0h,&TBCCTL2 ; прерывания, режим выхода '7' , т.е. mov #02E0h,&TBCCTL3 ; сброс/установка. Сигнал EQU0 устанавливает ; выход в «1», а EQU1 в «0». Установим ; условия сравнения для регистра как ; его равенство нулю mov #Sine_Tab,&TBCCR1 ; Загрузить первый отсчёт в CCR1 mov #01h,R14 ; Загрузить начальное значение «пилы» в R14. mov #0AAh,&TBCCR3 ; И значение для постоянного уровня ; которое соответствует ~ 2/3 Vcc т.к. ; #0AAh это примерно 2/3 от #0FFh. bis #MC0,&TBCTL ; Запустить таймер timer_B в режиме инкремента ret ;-------------------------------------------------------------------------------------- TB_ISR ; Подпрограмма обработки прерываний таймера ; Timer_B: изменяет значения в регистрах ; CCR1 и CCR2 для изменения коэффициента ; заполнения ШИМ для синусоиды и «пилы». ; Значение в CCR3 не изменяется для ; формирования постоянного уровня ;-------------------------------------------------------------------------------------- incd R15 ; Инкремент указателя в R15 to ; для следующего значения в таблице синуса ; Инкремент двойной, т.к. ; значения в таблице двухбайтовые and #03Fh,R15 ; Операция лог. «И» с числом 03Fh даёт ; счётчик по модулю 32 для указания на ; значения в таблице mov Sine_Tab(R15),&TBCCR1 ; Загрузить следующее значение синуса в CCR1 add #04h,R14 ; Инкрементировать значение «пилы» ; Изменение шага в R14 ; приведёт к изменению частоты «пилы» and #0FFh,R14 ; Исключим лишние биты mov R14,&TBCCR2 ; Загрузим новое значение пилы в CCR2 reti ; возврат, прерывания разрешены ;----------------------------------------------------------------------------------- COMMON INTVEC ; Вектора прерываний MSP430x14x ;----------------------------------------------------------------------------------- ORG TIMERB0_VECTOR DW TB_ISR ; Прерывание от CCIFG0 ORG RESET_VECTOR DW RESET ; POR, внеш. Reset, Watchdog END
  22. Привет! Есть у меня один проект на pic24, который использует EEPROM 24LC256. И все бы хорошо, но иногда данные записываются некорректно. Чаще всего такое происходит при записи 4х байтовых чисел, хотя они в основном и пишутся, так что не удивительно. И чаще всего повреждается последний байт числа. Повреждается примерно один из нескольких десятков байт. Память висит на довольно короткой шине ~1.5 см от контроллера, подтяжки на линиях 4.7кОм. С памятью работаю на частоте 400 кГц, снижение частоты не дало никакого эффекта. Повторяется бага на нескольких одинаковых платах. Закономерности выявить не удалось. Выяснил только что мой код пытается записать правильные данные, то есть повреждаются они именно в процессе записи. Привожу фрагмент кода для роботы с eeprom: unsigned char ee_adress(int adr) { unsigned char cmd; cmd = 0xA0; // | ((adr >> 7)&0xE); while (1) { StartI2C(); IdleI2C(); // send command and address msb(3) MasterWriteI2C(cmd + WRITE_CMD); IdleI2C(); if (I2CSTATbits.ACKSTAT == 0) break; StopI2C(); IdleI2C(); } // while waiting for ACK // 3. send address lsb MasterWriteI2C(adr >> 8); IdleI2C(); MasterWriteI2C(adr & 0xFF); IdleI2C(); // 4. exit returning the cmd byte return cmd; } void ee_wrDword(int adr, unsigned long data) { // 1. select address ee_adress(adr); // 2. stream data out MasterWriteI2C((data >> 24) & 0xFF); IdleI2C(); MasterWriteI2C((data >> 16) & 0xFF); IdleI2C(); MasterWriteI2C((data >> 8 ) & 0xFF); IdleI2C(); MasterWriteI2C((data >> 0 ) & 0xFF); IdleI2C(); // 3. terminate the command sequence StopI2C(); IdleI2C(); } Может кто то сталкивался с подобным? В какую сторону копать? Я уже все на что фантазии хватило перепробовал.
  23. Здрасте, хочу сделать часы с индексацией на табло минут с интервалом каждые 5 минут. Есть схема исходник только не знаю что там надо подправить чтобы интервал был 5 минут а не каждую 1 минуту.
  24. Всем привет! Хочу сделать мп3шник, но наткнулся на проблему...Нужна схема программатора для LPT порта для pic16lf88.пошарил в инете.не нашел ни программы, ни схемы програматора... У кого есть схема програматора и программа для прошивки это пика - поделитесь, плз
  25. Делаю устройство на PIC18F2580. Наконец решил отказаться от внутрисхемного программирования в угоду бутлодеру. Сделал печатку, к которой прикладываю SOIC и PICKITом быстро шью бутлодер. Вот какая нарисовалась проблема: зашил бутлодер, впаял в плату (пока только питание + rx/tx). Бутлодер не работал. Выпаял, попробовал подключить PICKIT - не видит, ругается на Device ID 00000. Вроде и питание 5в (usb) не превышал и не замыкал ничего. "Испортил" два кристалла. Третий не хочу - спросил совета. Как можно воскресить их?
×
×
  • Create New...