Доброе утро всем! Взял код программы из книги М. Предко по управлению яркостью светодиода. Написана в MPLab 8.92 компилятор PICC Lite. Сначала схемку собрал в Протеусе, зашил, но светодиоды не загораются. Что делаю не так ?
//Global variable and constant volatile int RTC = 0; char PWMCycle; char PWMDuty; volatile int PWMLoop; static bit trisLED @ (unsigned) &TRISB*8+1;//Bits control static bit LED @ (unsigned) &PORTB*8+1; const int LEDon = 0; // Led on const int LEDoff = 1;//Led off // Interrupts
void interrupt tmr0_int(void) { if (T0IF) {
RTC++; //increment counter
switch(PWMDuty) { case 0: LED = LEDoff; break; case 29: LED = LEDon; break; default: if (PWMCycle <= PWMDuty) LED = LEDon; else LED = LEDoff; } if (++PWMCycle == 30) { PWMCycle = 0; PWMLoop++; } } T0IF = 0; //reset flag }
// Main function
void main(void) {
OPTION_REG = 0x0D1; TMR0 = 0; T0IE = 1; GIE = 1;
while (1==1) {
if (PWMLoop ==2) { if (PWMDuty ==0) PWMDuty =29; else PWMDuty--; PWMLoop = 0; } }
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Доброе утро всем! Взял код программы из книги М. Предко по управлению яркостью светодиода. Написана в MPLab 8.92 компилятор PICC Lite. Сначала схемку собрал в Протеусе, зашил, но светодиоды не загораются. Что делаю не так ?
//Global variable and constant volatile int RTC = 0; char PWMCycle; char PWMDuty; volatile int PWMLoop; static bit trisLED @ (unsigned) &TRISB*8+1;//Bits control static bit LED @ (unsigned) &PORTB*8+1; const int LEDon = 0; // Led on const int LEDoff = 1;//Led off // Interrupts
void interrupt tmr0_int(void) { if (T0IF) {
RTC++; //increment counter
switch(PWMDuty) { case 0: LED = LEDoff; break; case 29: LED = LEDon; break; default: if (PWMCycle <= PWMDuty) LED = LEDon; else LED = LEDoff; } if (++PWMCycle == 30) { PWMCycle = 0; PWMLoop++; } } T0IF = 0; //reset flag }
// Main function
void main(void) {
OPTION_REG = 0x0D1; TMR0 = 0; T0IE = 1; GIE = 1;
while (1==1) {
if (PWMLoop ==2) { if (PWMDuty ==0) PWMDuty =29; else PWMDuty--; PWMLoop = 0; } }
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Светло-зелёным это чтобы глаза сломать... Питание - массу на общий, +5в на питание микросхемы.
Я извиняюсь за цвет, только зарегистрировался. Многое тут не понятно, где куда вставлять. А в коде самом всё нормально выходит? Не совсем понятно куда питание. Я подал же питание на RA5?. Куда еще надо?
Батенька! На RA5 через резистор задается лог."1". А питание на микросхему подается на выводы GND - это масса и Vcc - +5в. Посмотрите, пожалуйста, даташит на микросхему и определитесь с ножками.
Добавлено after 2 minutes 40 seconds: BOB51, как вам вангалевел?
НУ..ДЫК... НАЧИНАЮЩИЙ же - надо бысть поснисходительнее...
К сожалению под Си я сам "в начинаюшших" - ежли б под ассемблером - тогды можно чего мявкнуть...
Ну и POIC16F627... Как - то весьма редкое зверьё ... В основном из этого подвида попадаются PIC16F628A - и памяти там побольше... И проекты готовенькие "для поизучамс" у мня имеются...
НУ..ДЫК... НАЧИНАЮЩИЙ же - надо бысть поснисходительнее...
К сожалению под Си я сам "в начинаюшших" - ежли б под ассемблером - тогды можно чего мявкнуть...
Ну и POIC16F627... Как - то весьма редкое зверьё ... В основном из этого подвида попадаются PIC16F628A - и памяти там побольше... И проекты готовенькие "для поизучамс" у мня имеются...
Ну я хочу реализовать ШИМ, не важно какой (аппаратный или программный) и не важно на каком PICе. Просто как это делается.
static bit trisLED @ (unsigned) &TRISB*8+1;//Bits control static bit LED @ (unsigned) &PORTB*8+1; const int LEDon = 0; // Led on const int LEDoff = 1;//Led off
Для начала я бы заменил на более читабельное, но не забываем о "чтение-модификация-запись":
Батенька! На RA5 через резистор задается лог."1". А питание на микросхему подается на выводы GND - это масса и Vcc - +5в. Посмотрите, пожалуйста, даташит на микросхему и определитесь с ножками.
Добавлено after 2 minutes 40 seconds: BOB51, как вам вангалевел?
В Proteus нет такого. Там микроконтроллер идёт без Vdd и Vss...
Одноканальный аппаратный ШИМ можно соорудить на ПИКе с наличием Тimer2 и модуля CCP. Собственно у 627-628-648 эти узлы имеются.
А вот для программного ШИМ с относительно низкой частотой (этот же режим в динамической индикации основа для построения дисплея) можно любой МК использовать. До 8 каналов вполне удобная штука.
Берем частоту обновления 62Гц (легче делится) Это длительность ВСЕЙ строки ~0,016 секунды делим на количество каналов/позиций Допустим 3 итого позиция длится 0,016/3=0,0053 секунды Примитив ШИМ имеет 256 градаций 0-255 Следовательно 1 шаг ШИМ будет иметь длительность 0,0053/256=0,0000207 секунды. Поокруглим для удобства (глазу данное абсолютно незаметно, а вот обработка проще) итого: шаг ШИМ 0,00002S позиция = 0,00512S строка = 0,01536 частота регенерации ~65,1Гц
Теперь собственно прожка... чего делает. (грубое описание). Имеем генератор шага ШИМ 0,00002S Счетчик шагов, счетчик позиций и три байта заданного уровня... включаем текущий канал запускаем счет на каждом шаге сравниваем инверсное содержимое счетчика с содержимым заданной для данного канала величины яркости при совпадении отключаем индикацию при исчерпании счетчика шагов отрабатываем следующую позицию при исчерпании счетчика позиций поавторяем все сначала.
Ессно в полном варианте там еще много "нюёнсов" добавить надо будет.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения