Например TDA7294

Форум РадиоКот • Просмотр темы - RGB_ночник на PIC16f676, нужна помощь с кодом
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 11:41:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 23 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 17:14:43 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Доброго здравия всем откликнувшимся. Нашёл у себя в закромах два 16f676. С пиками никогда дела и малейшего не имел, думал выкинуть, но рука не поднялась. А потом решил сделать хоть ночничек какой-нить. Нашел исходник RGB ночника но на attiny13, решил портировать его, но чегото я делаю не так с кодом, ничего не запустилось, хотя вроде настроил и проинициализировал всё правильно.
Подскажите в чем причина может быть. Заранее спасибо!
Спойлер
Код:
#pragma config FOSC = INTRCIO   // Oscillator Selection bits (INTOSC oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // RA3/MCLR pin function select (RA3/MCLR pin function is MCLR)
#pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#define _XTAL_FREQ 4000000
#include <pic.h>
#include <xc.h>
#define OUT_R RC4
#define OUT_G RC3
#define OUT_B RC2
#include <stdlib.h>

unsigned int rgb_r=0,rgb_g=0,rgb_b=0;
unsigned int count=0;
unsigned int r=0,g=0,b=0;
unsigned int step=0;
// Timer 0 overflow interrupt service routine
void __interrupt() Timer0_ISR(void){
 count++;
 //канал красного
 if (count == 0)
 { //если счетчик переполнился и принял значение 0
 rgb_r = r; //сохранием значения в буфер
 OUT_R =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
 }
 if (rgb_r == count) { OUT_R = 0;}//по достижении заданной скважности выводим 0
 // канал зелёного
 if (count == 0)
 { //если счетчик переполнился и принял значение 0
 rgb_g = g; //сохранием значения в буфер
 OUT_G =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
 }
 if (rgb_g == count) { OUT_G = 0;}//по достижении заданной скважности выводим 0
 // канал синего
 if (count == 0)
 { //если счетчик переполнился и принял значение 0
 rgb_b = b; //сохранием значения в буфер
 OUT_B =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
 }
 if (rgb_b == count) { OUT_B = 0;}//по достижении заданной скважности выводим 0
 
}

void main(void)
{



 
PORTC=0b000000;
TRISC=0b000000;
OPTION_REG=0x01;
INTCON=0b101000;


while (1)
 {
 /*
 По-умолчанию формулу R-G-B начнем с красного цвета 255-0-0.
1) Наращивается зеленый цвет 255-1-0, 255-2-0 ... 255-255-0.
2) Уменьшается красный цвет 254-255-0, 253-255-0 ... 0-255-0.
3) Наращивается синий цвет 0-255-1, 0-255-2 ... 0-255-255.
4) Уменьшается зеленый цвет 0-254-255, 0-253-255 ... 0-0-255.
5) Наращивается красный цвет 1-0-255, 2-0-255 ... 255-0-255.
6) Уменьшается синий цвет 255-0-254, 255-0-253 ... 255-0-0.
 */

 if(step==0)
 {
 step=1;
 }
 if(step==1)
 {
 r++; g=0;b=0;
 if(r>=255){step=2;}
 }
 if(step==2)
 {
 g++;
 if(g>=255){step=3;}
 }
 if(step==3)
 {
 r--;
 if(r<=0){step=4;}
 }
 if(step==4)
 {
 b++;
 if(b>=255){step=5;}
 }
 if(step==5)
 {
 g--;
 if(g<=0){step=6;}
 }
 if(step==6)
 {
 r++;
 if(r>=255){step=7;}
 }
 if(step==7)
 {
 b--;
 if(b<=0){step=0;}
 }
 __delay_ms(30);
 }

}

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 17:42:39 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Дайте ссылку на исходный проект для тиньки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 17:45:10 
Электрический кот

Карма: 6
Рейтинг сообщений: 155
Зарегистрирован: Чт авг 10, 2017 20:57:51
Сообщений: 1001
Рейтинг сообщения: 0
Может отсюда ….

Изображение

Код не смотрел


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 17:59:41 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
NStorm, вот исходник для тиньки
Спойлер
Код:
Chip type : ATtiny13
AVR Core Clock frequency: 9,600000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/

#include <tiny13.h>
#include <delay.h>
#define OUT_R PORTB.3
#define OUT_G PORTB.4
#define OUT_B PORTB.2
#include <stdlib.h>

unsigned char rgb_r =0,rgb_g=0,rgb_b=0;
unsigned char count = 0;
unsigned char r=0,g=0,b=0;
unsigned char step=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 count++;
 //канал красного
 if (count == 0)
 { //если счетчик переполнился и принял значение 0
 rgb_r = r; //сохранием значения в буфер
 OUT_R =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
 }
 if (rgb_r == count) { OUT_R = 0;}//по достижении заданной скважности выводим 0
 // канал зелёного
 if (count == 0)
 { //если счетчик переполнился и принял значение 0
 rgb_g = g; //сохранием значения в буфер
 OUT_G =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
 }
 if (rgb_g == count) { OUT_G = 0;}//по достижении заданной скважности выводим 0
 // канал синего
 if (count == 0)
 { //если счетчик переполнился и принял значение 0
 rgb_b = b; //сохранием значения в буфер
 OUT_B =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
 }
 if (rgb_b == count) { OUT_B = 0;}//по достижении заданной скважности выводим 0
 
}

void main(void)
{

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State5=P State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 9600,000 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x02;

// Global enable interrupts
#asm("sei")
 srand(6);
while (1)
 {
 /*
 По-умолчанию формулу R-G-B начнем с красного цвета 255-0-0.
1) Наращивается зеленый цвет 255-1-0, 255-2-0 ... 255-255-0.
2) Уменьшается красный цвет 254-255-0, 253-255-0 ... 0-255-0.
3) Наращивается синий цвет 0-255-1, 0-255-2 ... 0-255-255.
4) Уменьшается зеленый цвет 0-254-255, 0-253-255 ... 0-0-255.
5) Наращивается красный цвет 1-0-255, 2-0-255 ... 255-0-255.
6) Уменьшается синий цвет 255-0-254, 255-0-253 ... 255-0-0.
 */
 
 if(step==0)
 {
 //step = rand() % 6 + 1;
 step=1;
 }
 if(step==1)
 {
 r++; g=0;b=0;
 if(r>=255){step=2;}
 }
 if(step==2)
 {
 g++;
 if(g>=255){step=3;}
 }
 if(step==3)
 {
 r--;
 if(r<=0){step=4;}
 }
 if(step==4)
 {
 b++;
 if(b>=255){step=5;}
 }
 if(step==5)
 {
 g--;
 if(g<=0){step=6;}
 }
 if(step==6)
 {
 r++;
 if(r>=255){step=7;}
 }
 if(step==7)
 {
 b--;
 if(b<=0){step=0;}
 }
 delay_ms(30);
 }
}


_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 19:00:52 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Ну вас таймер на гораздо меньшей частоте на пике настроен. RAIE зачем-то включили в INTCON.
Отключите АЦП и компаратор на старте еще:
Код:
    CMCON0 = 0b111; // Disable COMPARATOR
    ANSEL = 0x00; // Disable ADC


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 19:56:56 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
NStorm, Сделал как Вы сказали- результата не дало. В шпротеусе смотрю по осцилографу, на RC1-RC2 появляются импульсы одновременно длительностью гдето 10 микросекунд, а на RC0-100микросекунд.

Добавлено after 32 minutes 5 seconds:
Вроде разобрался. Нужно было флаг переполнения сбрасывать в прерывании
void __interrupt() Timer0(void){
count++;
//канал красного
if (count == 0)
{ //если счетчик переполнился и принял значение 0
rgb_r = r; //сохранием значения в буфер
OUT_R =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
}
if (rgb_r == count) { OUT_R = 0;}//по достижении заданной скважности выводим 0
// канал зелёного
if (count == 0)
{ //если счетчик переполнился и принял значение 0
rgb_g = g; //сохранием значения в буфер
OUT_G =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
}
if (rgb_g == count) { OUT_G = 0;}//по достижении заданной скважности выводим 0
// канал синего
if (count == 0)
{ //если счетчик переполнился и принял значение 0
rgb_b = b; //сохранием значения в буфер
OUT_B =1; //выставляем ноги, отвечающие за ШИМ в логическую 1
}
if (rgb_b == count) { OUT_B = 0;}//по достижении заданной скважности выводим 0
T0IF=0;
}

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 20:14:57 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Alek_von_German, ах да, в пиках xc8 не делает это автоматом. И еще на всякий случай - в пиках нет разных векторов прерываний, как в AVR. Тут один единственный вектор прерывания на всё. По-хорошему в ISR надо проверять флаги прерываний и по ним смотреть что нужно делать. Но это ес-но в данном случае не актуально ,если активно одно единственное прерывание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб дек 05, 2020 23:26:43 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
NStorm, ну эт я ужо понял. Углубляться в ПИКи особого желания нету, это так, для общего развития, дабы камушки не валялись почём зря.

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Чт янв 07, 2021 16:57:55 
Первый раз сказал Мяу!

Зарегистрирован: Вт май 07, 2013 23:16:23
Сообщений: 36
Рейтинг сообщения: 0
Мне кажется, что pic16f676 низкоскоростной для (до 20 Мгц) для реализации RGB светильника. У меня получилось на pic18f452 - 40 Мгц. И то при передаче данных в RGB ленту все "плотничком", ни единой свободной микросекунды.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Чт янв 07, 2021 17:03:33 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
а мне хватило 8 МГц да еще с попыткой управлять яркостью через чередование в сдвиговом регистре. На 40 Мгц можно VGA забабахать, с музыкой.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Чт янв 07, 2021 17:13:33 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
Смотря на чём и как писать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб июл 03, 2021 13:57:14 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
http://pic24.ru/doku.php/osa/articles/vga_game
чуть больше 40, конечно, но кто считает? :))
Надо бы поизучать ОСА...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб июл 03, 2021 14:13:35 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Доброго здравия всем! Прошу прощения, что снова поднимаю данную тему, но у меня снова возникла проблема с этим кодом.
Т.к., мой прошлый компьютер приказал долго жить, а почти все программы и исходники остались на нем без возможности восстановить, свои учебные проекты пытаюсь восстановить по памяти своей(почти отсутствующей).
Так вот, вспомнил я, что делал ночник на pic16f676, код восстановил, в протеусе проверил, а в железе работает он как-то странно. Сама ШИМ работает, но паузы между вспышками слишком большие будто частота шим слишком маленькая, и выходит, что светодиоды просто перемигиваются с разной частотой. Всё проверил несколько раз, делители стоят правильно, таймер вроде тоже настроил правильно, да и вообще код считай один в один повторяет мною выложенный ранее, но если раньше он не работал из-за того, что я не сбрасывал флаг, то сейчас я даже и рядом предположить не могу...
Спойлер
Код:
#pragma config MCLRE = ON       // RA3/MCLR pin function select (RA3/MCLR pin function is MCLR)
#pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#define _XTAL_FREQ 4000000
#include <pic.h>
#include <xc.h>
#include <stdio.h>
#include <stdint.h>
#define OUT_R RC0
#define OUT_G RC1
#define OUT_B RC2

unsigned int rgb_r=0,rgb_g=0,rgb_b=0;
unsigned char count=0;
unsigned int r=0,g=0,b=0;
unsigned char step=0;
void __interrupt() Timer0(void){
if (count == 0)
    {
        rgb_r = r;
        OUT_R =1;
    }
if (rgb_r == count) { OUT_R = 0;}
if (count == 0)
    {
        rgb_g = g;
        OUT_G =1;
    }
if (rgb_g == count) { OUT_G = 0;}
if (count == 0)
    {
        rgb_b = b;
        OUT_B =1;
    }
if (rgb_b == count) { OUT_B = 0;}
count++;
T0IF = 0;

}

int main(void)
{
    ANSEL = 0x00;
    CMCON=0x00;
    PORTC=0b000000;
    TRISC=0b000000;
    OPTION_REG=0x02;
    INTCON=0xA0;
    TMR0=0;

    while (1)
 {
 
        if(step==0)
           {
             step=1;
           }
 
        if(step==1)
           {
             r++; g=0;b=0;
            if(r>255){step=2;}
           }
 
        if(step==2)
           {
            g++;
            if(g>255){step=3;}
          }
 
        if(step==3)
          {
            r--;
            if(r<=0){step=4;}
           }

        if(step==4)
          {
             b++;
            if(b>255){step=5;}
           }
 
        if(step==5)
           {
             g--;
             if(g<=0){step=6;}
          }
         if(step==6)
           {
              r++;
              if(r>255){step=7;}
            }

        if(step==7)
          {
            b--;
            if(b<=0){step=0;}
          }
         __delay_ms(30);
  }
}

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб июл 03, 2021 15:44:57 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
Цитата:
в протеусе проверил, а в железе работает он как-то странно.

В протеусе можно измерить все тайминги и посмотреть лог. анализатором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб июл 03, 2021 16:06:04 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
otest, стыдно сказать, но я так и не понял как работает лог.анализатор в шпротеусе. Но по осциллографу я выяснил, что период составляет порядка 260mS, если я правильно владею калькулятором, то частота шим в данном случаесоставляет ~3.8Hz. Ето же нонсенс. Предделители вообще не стоят никакие, частота камня 4000000.

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб июл 03, 2021 19:04:38 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7854
Рейтинг сообщения: 0
Ослик для этого не годится. По лог. анализатору есть хелп. Поставь брек поинты в нужное место и протеус покажет затраченое время. Здесь по русски http://kazus.ru/forums/showthread.php?t=13198


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Сб июл 03, 2021 20:26:13 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
otest, спасибо за ссылку, разобрался. Частота оказалась 22 Гц.
Но вот вопрос, как она может быть таковой если частота камня 4.000.000Гц и предделители отключены?
Изображение

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Вс июл 04, 2021 10:42:05 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
По умолчанию для всех "среднемладших" справедливо положение, когда частота равна частоте кварца(внутреннего RC генератора) деленного на 4.
Это "особенность" ПИКовых...
Т.е. кварц 4МГц, а системная тактовая 1МГц (при 20 МГц кварце будет 5МГц максимум против 9,6МГц в тини13, при отключенном предделителе).
Единственно те модели (более современные), где PLL заложено да "энхансед" линейка позволяют частоту поднять.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Вс июл 04, 2021 15:36:46 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
BOB51, да, это я знаю. Мне просто интересно, что я сделал не так в этот раз, если в прошлый раз всё работало как надо. Перечитал уже всё, пересмотрел все настройки и всё равно не понятно где я туплю.

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: RGB_ночник на PIC16f676, нужна помощь с кодом
СообщениеДобавлено: Вс июл 04, 2021 18:28:38 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Под Си вряд-ли подскажу...
В принципе... Если это не WS2812-подобные а всего 3х элементные...
Достаточно программного ШИМ с частотой от 62-120Гц. Вполне потянет любой МК...
Главная сетка частот равна периоду деленному на 256 (или более - зависит от типа МК и системы команд, имеющихся таймеров). На каждом кванте проверяем совпадение по каналам с масками задания и модифицируем вывод.
В конце периода обработка изменения данных.
:roll:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y