Форум РадиоКот https://radiokot.ru/forum/ |
|
ШИМ на PIC16F627A https://radiokot.ru/forum/viewtopic.php?f=58&t=152798 |
Страница 1 из 1 |
Автор: | dexart12 [ Ср фев 21, 2018 07:39:55 ] | ||
Заголовок сообщения: | ШИМ на PIC16F627A | ||
Доброе утро всем! Взял код программы из книги М. Предко по управлению яркостью светодиода. Написана в MPLab 8.92 компилятор PICC Lite. Сначала схемку собрал в Протеусе, зашил, но светодиоды не загораются. Что делаю не так ? Код: [color=#408040]
#include <pic.h> #if defined (_16F84) #warning PIC16F84 selected _CONFIG (0x03FF1); flelifedefined(_16F627A) #warning PIC16F627A with internal oscillator selected _CONFIG(0x03F70); <<else #error Unsupported PICmicro MCU selected #endif //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; } } } [/color]
|
Автор: | BOB51 [ Ср фев 21, 2018 08:42:33 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Я так понимаю ШИМ программный? ![]() |
Автор: | dexart12 [ Ср фев 21, 2018 08:56:44 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Я так понимаю ШИМ программный? ![]() Этого я сказать не могу, не отличаю. Кажется мне что аппаратный. |
Автор: | pyzhman [ Ср фев 21, 2018 09:10:17 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Нужно подать питание. |
Автор: | dexart12 [ Ср фев 21, 2018 10:18:46 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Нужно подать питание. Объясните пожалуйста, как это сделать? Добавлено after 34 minutes 57 seconds: Доброе утро всем! Взял код программы из книги М. Предко по управлению яркостью светодиода. Написана в MPLab 8.92 компилятор PICC Lite. Сначала схемку собрал в Протеусе, зашил, но светодиоды не загораются. Что делаю не так ? #include <pic.h> #if defined (_16F84) #warning PIC16F84 selected _CONFIG (0x03FF1); flelifedefined(_16F627A) #warning PIC16F627A with internal oscillator selected _CONFIG(0x03F70); <<else #error Unsupported PICmicro MCU selected #endif //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; } } } |
Автор: | pyzhman [ Ср фев 21, 2018 10:27:39 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Светло-зелёным это чтобы глаза сломать... Питание - массу на общий, +5в на питание микросхемы. |
Автор: | dexart12 [ Ср фев 21, 2018 11:05:35 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Светло-зелёным это чтобы глаза сломать... Питание - массу на общий, +5в на питание микросхемы. Я извиняюсь за цвет, только зарегистрировался. Многое тут не понятно, где куда вставлять. А в коде самом всё нормально выходит? Не совсем понятно куда питание. Я подал же питание на RA5?. Куда еще надо? |
Автор: | pyzhman [ Ср фев 21, 2018 11:22:19 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Батенька! На RA5 через резистор задается лог."1". А питание на микросхему подается на выводы GND - это масса и Vcc - +5в. Посмотрите, пожалуйста, даташит на микросхему и определитесь с ножками. Добавлено after 2 minutes 40 seconds: BOB51, как вам вангалевел? |
Автор: | BOB51 [ Ср фев 21, 2018 11:33:04 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
НУ..ДЫК... НАЧИНАЮЩИЙ же - надо бысть поснисходительнее... ![]() К сожалению под Си я сам "в начинаюшших" - ежли б под ассемблером - тогды можно чего мявкнуть... ![]() Ну и POIC16F627... Как - то весьма редкое зверьё ... В основном из этого подвида попадаются PIC16F628A - и памяти там побольше... И проекты готовенькие "для поизучамс" у мня имеются... ![]() |
Автор: | dexart12 [ Ср фев 21, 2018 11:52:37 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
НУ..ДЫК... НАЧИНАЮЩИЙ же - надо бысть поснисходительнее... ![]() К сожалению под Си я сам "в начинаюшших" - ежли б под ассемблером - тогды можно чего мявкнуть... ![]() Ну и POIC16F627... Как - то весьма редкое зверьё ... В основном из этого подвида попадаются PIC16F628A - и памяти там побольше... И проекты готовенькие "для поизучамс" у мня имеются... ![]() Ну я хочу реализовать ШИМ, не важно какой (аппаратный или программный) и не важно на каком PICе. Просто как это делается. |
Автор: | pyzhman [ Ср фев 21, 2018 11:55:18 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Это делается изменением скважности. Если это связано с видеоэффектами, то частота должна быть не менее 50-ти Гц. |
Автор: | -=Vovka=- [ Ср фев 21, 2018 12:45:39 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Код: #if defined (_16F84) #warning PIC16F84 selected _CONFIG (0x03FF1); flelifedefined(_16F627A) #warning PIC16F627A with internal oscillator selected _CONFIG(0x03F70); <<else #error Unsupported PICmicro MCU selected #endif что-то тут не то... Добавлено after 8 minutes 37 seconds: Код: 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 Для начала я бы заменил на более читабельное, но не забываем о "чтение-модификация-запись": Код: #define LedOn PORTB &= 1; #define LedOff PORTB |= 1; Тогда вместо Код: LED = LEDoff; LED = LEDon; пишем Код: LedOn;
LedOff; |
Автор: | Пока_без_кота [ Ср фев 21, 2018 13:41:15 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
[uquote="pyzhman" ] ... вангалевел?[/uquote] Потрясающе ![]() |
Автор: | pyzhman [ Ср фев 21, 2018 13:46:58 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Сам себя порой боюсь. |
Автор: | dexart12 [ Ср фев 21, 2018 14:03:55 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Батенька! На RA5 через резистор задается лог."1". А питание на микросхему подается на выводы GND - это масса и Vcc - +5в. Посмотрите, пожалуйста, даташит на микросхему и определитесь с ножками. Добавлено after 2 minutes 40 seconds: BOB51, как вам вангалевел? В Proteus нет такого. Там микроконтроллер идёт без Vdd и Vss... |
Автор: | pyzhman [ Ср фев 21, 2018 14:15:18 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Прокол!... "Зашил" это как? |
Автор: | dexart12 [ Ср фев 21, 2018 14:19:01 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Прокол!... "Зашил" это как? Прошил |
Автор: | pyzhman [ Ср фев 21, 2018 14:34:19 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Что прошил? Опишите сам процесс. |
Автор: | BOB51 [ Ср фев 21, 2018 14:46:47 ] |
Заголовок сообщения: | Re: ШИМ на PIC16F627A |
Одноканальный аппаратный ШИМ можно соорудить на ПИКе с наличием Т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 Счетчик шагов, счетчик позиций и три байта заданного уровня... включаем текущий канал запускаем счет на каждом шаге сравниваем инверсное содержимое счетчика с содержимым заданной для данного канала величины яркости при совпадении отключаем индикацию при исчерпании счетчика шагов отрабатываем следующую позицию при исчерпании счетчика позиций поавторяем все сначала. ![]() Ессно в полном варианте там еще много "нюёнсов" добавить надо будет. ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |