Jump to content

Recommended Posts

Друзья помогите разобраться.

Приобрел управляемые диоды WS2812 многим уже известные.

Поиски доступных для новичка исходников результатов не дали. Сталкивался с скечами для Ардуино, библиотеками NeoPixel.

Во первых не забрался, во-вторых принципиально хочу сообразить всё это на на своей плате на Attiny или Atmege.

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

Только начал разбираться с ШИМом. Думал тут чтото подобное.

Помогите новичку с самого простого.

Share this post


Link to post
Share on other sites

Вебинар "Разбор новых уникальных модулей FMAC и CORDIC в микроконтроллерах общего назначения STM32G4" (15.07.2020)

Компания КОМПЭЛ приглашает вас принять участие в вебинаре 15.07.2020, посвященном новому семейству микроконтроллеров общего назначения – STM32G4. Вебинар рассчитан на технических специалистов и тех, кто знаком с основами цифровой обработки сигналов. Мы разберем алгоритм работы CORDIC, а также рассмотрим пример создания цифрового фильтра на базе FMAC.

Зарегистрироваться на вебинар

Вроде работало, а если нашли ошибку, то может быть... главное, что бы понимание происходящего было)))

Share this post


Link to post
Share on other sites
                     

Новые контроллеры VIPerPLUS для ИП – видео и материалы вебинара STMicroelectronics

Видеозапись и материалы вебинара ST о семействе AC/DC регуляторов VIPerPLUS производства компании STMicroelectronics. Инженерами ST было детально рассмотрено новое семейство микросхем VIPerPLUS со встроенным транзистором, их возможности и топологии применения. Продемонстрировано испытание из лаборатории ST в Праге и моделирование в среде E-DesignSuite.

Подробнее

                     

Конденсаторы ECWFG от Panasonic: теперь и для высоковольтных применений

Компания Panasonic анонсировала существенное расширение серии пленочных конденсаторов ECWFG: на сегодняшний день диапазон рабочих напряжений серии составляет 630…1100 В (DC). Серия ECWFG поддерживает уникальную функцию микропредохранителей.

Подробнее

Передача 8 бит по спи как раз укладывается в период одного бита ws, передавая одно из двух значений по спи - ws распознает еденицу либо ноль, получается для зажигания одного диода надо отправить последовательность из 24байт в спи ws их воспримет как 24 бита по 8 бит на цвет.

Главное после заволнения всей ленты выждать паузу не менее 10-50 мксек, чтобы загруженые цвета зажглись.

Share this post


Link to post
Share on other sites

Что конкретно не понятно в этой строке ? Что такое while, SPSR или SPIF ? Или символы "!", "&", .... ?
 

Share this post


Link to post
Share on other sites

SPSR - регистр.
SPIF - бит в этом регистре.
"!" - логическое отрицание.
"&" - побитовое "И".
"<<" - сдвиг влево.

Что конкретно не понятно ?


 

Share this post


Link to post
Share on other sites

не думал что все так плохо.... Стоит наверное начать с изучения СИ, потом почитать даташиты на МК, что бы понять как они устроены, разобрать основные шины данных UART\SPI\I2C\1-wire

  • SPI Status Register – SPSR
  • Bit 7 – SPIF: SPI Interrupt Flag
  • When a serial transfer is complete, the SPIF Flag is set. An interrupt is generated if SPIE in
  • SPCR is set and global interrupts are enabled. If SS is an input and is driven low when the SPI is
  • in Master mode, this will also set the SPIF Flag. SPIF is cleared by hardware when executing the
  • corresponding interrupt Handling Vector. Alternatively, the SPIF bit is cleared by first reading the
  • SPI Status Register with SPIF set, then accessing the SPI Data Register (SPDR).
Edited by Mishany

Share this post


Link to post
Share on other sites

@Mishany Да некоторые моменты из СИ еще не понятны, но это решаемо с помощью интернета. Мое программирование когда-то давно закончилось на бэйсике, но логика то в голове осталась. Вот исходя логики пытаюсь эмитировать на бумаге ход выполнения программы.

Минуя все воиды с описаниями функций перехожу на войд маин, где крутиться цикл самой программы:

int main(void)
{
    SPI_MasterInit();
    while(1)
    {
//     off_strip();
//     _delay_ms(100);
    Set_Effect_2();

 

То-есть программа лезет в функцию эффектов в которой во временный массив загоняются значения эффекта:

for (s=0; s<t; s++)        //strip-длина ленты
    {
        for (i=0; (i<=s); i++)
        {

            for (j=0;j<3;j++)
            {
                if (i<longh)    //longh-длина эффекта
                {
                    temp[s+i][j]=led_on[j];//задвигаем массив эффекта во временный массив   
                }
                else
                {
                    temp[s+i][j]=led_off[j];//задвигаем led_off во временный массив
                }
            }

        SPI_Write();//отправляем что собрали на ленту
        delay(8+(strip-t));

 

И тут у меня есть вопрос. Во временный массив

temp[0][0] попадает led_on[0]

temp[0][2] попадает led_on[1]

temp[0][2] попадает led_on[2]

 

И больше про Led_on в программе ни слова. Только в самом начале описывается переменная unsigned char led_on[3]={255,255,255};

И при отправке временного массива в SPI_Write происходит сравнение:

if ((temp[n][j]&a)==0)            // что есть сравнение led_on[0..2] и a  == 0

 

Вот тут я не понимаю для чего led_on[0..2]. Может тут какие-то значения пропущены???

 

 

Share this post


Link to post
Share on other sites

в led_on[] храниться белый цвет

//вывод временного массива на ленту
void SPI_Write(void)				
{
	unsigned char a;
	unsigned char j,i,n;
for (n=0; n<strip; n++)			//strip=20 диодов длина ленты
{
	

	for (j=0; j<3; j++)			//первым выставляется G (Hi->Low), потом R и B
	{
		a = 0x80;				//сравниваем каждый бит
		for (i=0;i<8;i++)			//передача 8 бит цвета из подготовленного массива temp
		{
			if ((temp[n][j]&a)==0)
			{
				SPDR = 224;//0xE0 0.37us 0	//ноль
			}
			else
			{
				SPDR = 252;//0xFC 0.75us 1 //единица
			}
			while(!(SPSR & (1<<SPIF)));
			a=a>>1;
		}
	}
}
}

что тут может быть не понятно? Учите СИ, битовые поля, битовые маски, многомерные массивы

Share this post


Link to post
Share on other sites

Выше @Mishany привел примерчик реализации обмена по SPI с WS2812 - не смотря на то, что идея на поверхности и мне самому приходила в голову, я почему-то уперся в работу по прерываниям и, само собой, требования протокола не смог выполнить. А его пример вдохновил меня на другой подход, и вот что вышло:

Скачать видео
Скачать видео
Скачать видео

Это первый положительный результат. Основа - atmega32 (просто она есть в наличии, реально можно упихать и в atmega8), немного модифицированная библиотека FFT от Chan-а и 32 штуки WS2812 на выходе. В начале и конце работает фоновая подсветка (при тишине, не обращайте внимание на гул - это вентилятор системника на горизонте).

К сожалению, правила ютуба не позволяют выложить со звуком видео с ритмичной музыкой типа Boney M или Rock'n'Roll, на которой зрелищность заметно выше. Ну и качество видео не отражает реального эффекта в полной мере...

Но мне все равно нравится :) 

Edited by ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. 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...

  • Сообщения

    • В этом МК не надо беспокоиться о сбросе стека. Стек представляет собой циклический буфер на 8 ячеек, и указатель стека ходит по кругу. При записи в стек более восьми раз: указатель сбросится и запись начнётся с начала стека. Поэтому можно начинать программу или делать рестарт, имея указатель стека на любом месте. Главное, в программе не делать более 8 вложенных вызовов функций или прерываний. Думаю, что просто напишите в прерывании последней строчкой "goto START", а о стеке не беспокойтесь.
    • прошу обратить внимание на действие господина кузмича - да - я был не прав - но - когда мне наступают на ногу в автобусе - это не значит что я должен бить в морду) - или по другому - за офтоп в теме - гнобить меня на 5 дней в бану - как- то не адекватно - может я не прав ? . теперь - я прекрасно понимаю его действие - задел - но - я глубоко уверен - что - если человек комплексует и не может адекватно воспринимать ситуацию - не должен ! быть в управлении большого сообшества - ибо - это приведет к от торжению к форуму не согласных и его деградации в итоге . мне это тем более не понятно - ибо - человек не являюшийся технически грамотным - пытается таким образом - чтот мне доказать) - кроме - как тупости - я это по другому не понимаю . потому прошу оградить меня от этого персонажа - ибо это скорее всего повторится еще не раз .
    • Тема категорически познавательная, да. Спасибо за наводку и ещё раз благодарю за развёрнутую консультацию!  Заменил TL062 на TL072 -- белого шума стало меньше. Отрегулировал усиление. С разделительными конденсаторами пока вопрос не изучал, но буду. Главное, что вынес с Веги -- высокую оценку МКЭ-3. Купил пучок, перепаял внутренности для включения с общим минусом (с общим плюсом тоже работало, но много фона) -- и результат радует! То есть, буду консультироваться со специалистами и анализировать спектр, но на слух -- это лучше, чем даже пресловутый WM-61A (хотя он весьма неплох), несмотря на меньший частотный диапазон и худшую линейность АЧХ. Притом, попробовал несколько разных транзисторов, и лучше всего оказалась оригинальная микросборка К513УЕ1А. В общем, дело движется к тому, что выйдет качественный и весьма дешёвый прибор. А это -- правильно! Для чайников, вроде меня, вот схемка внутренностей МКЭ-3, которая подключается к предусилителю вместо Mic1. Резистор можно, наверное, подбирать, но в целом и так неплохо: на стоке примерно 10V (чуть больше, чем полпитания), между стоком и истоком -- примерно 2V (при максимальном 5V для этого транзистора).
    • Я в этом как-то и не сомневался.  Если без разницы - примем на веру.
    • закрою вопрос по ССМ обратноходу  1 господин Миллер - с...а сушествует))) по рекомендации поставил стабилитрон в цепи затвора и МС перестала гореть - после последних опытов) - ключ живой - я ошибся - вышибало только МС  2 по итогу скажу свое имхо - оптимально использовать не разрывной ток на МС для этого не предназначенной до мощности 200 ватт - далее наблюдал большой нагрев и смысла этого уже нет(на хх все холодное) - но - есть и плюсы - хх практически не требует нагрузки , на двуполярном напряжении - был большой разнобой напряжения - и при нагрузке 1 ватт и настройки ОС - все норм - при этом минимальнае помехи - выложить все это не смогу) начал довить до запланированной мощности 350 ватт и ключ с МС приказал жить) при этом наблюдал хорошийи нагрев на этой мощности - потому смысла возится дальше - не вижу , может что упустил - спецам виднее .  3 допустил еще ошибку в применении диодов - быстрые диоды норм - но - шотки в этой слючае будут лучще .  теперь общее - хочу отдельно поблагодарить Серегу (serq76)  за кропотливую работу по поиску оптимальному решению проблеммы снабера без потерь - если бы не он - я бы не за что не взялся за обратноход с кипятильником)) - предоставил расчеты которые мне только осталось проверить практическим путем - Серег позже - когда придет прибор - покажу на практике КПД похожего обратнохода с этим снабером . ну и сам расчет - если кому пригодится - скину чуть позже . и пару фоток , хх - сток  и общее фото - остальное,снять не успел)  и печать - ес кому пригодится - отпимально ставить в расчетах - по проге Старичка - разрывной ток 30% или меньше и мошность 200 ватт макс на этой МС . имхо.  обратноход 300W.lay6
    • Про Цобеля в курсе. Пробовал и до LR, разницы не заметил.
  • Similar Content

    • By Trute
      Цена 700 р.
      Доставка по России Почтой России от 250 р. до 400 р. зависит от региона.
       
       Продаётся Плата в Сборе с Прошитым Микроконтроллером.
      ОПИСАНИЕ:
      Это устройство запитывается от любого источника питания 5 вольт, например, USB порт ПК или ноутбука, зарядка для телефона и т. п..., и не нуждается в подключении к источнику 12 вольт, в отличии от других прототипов.
      Предназначено для восстановления "убитых" микроконтроллеров AVR ATmega и ATtiny путем записи в них корректных значений бит фьюзов.
      Atmega Fusebit Doctor исправит Ваши брикнутые микроконтроллеры за доли секунды.
      Поддерживаемые контроллеры:
       
       



       
    • Guest Роман
      By Guest Роман
      Добрый день, форумчане. Такая задача. Хочу создать несколько устройств на светодиодах. Задача каждого в том, чтобы от движения (датчик вибрации, наклона) светодиод начинал моргать, переливаться и т.д. Подпитывается всё от батарейки, конечно же как можно меньших размеров (таблетка).
      Собственно я уже реализовал такое пробное устройство на ATtiny13, вибродатчике 18015 и батарейке CR1220. Всё работает, но хотелось бы это дело и удешевить и уменьшить в размерах, если это конечно же возможно. Особо в параметрах МК я не разбираюсь, но могу сказать что мне от неё точно нужно:
      1) Маленький размер
      2) Как минимум 1 канал ШИМ (а лучше 3, для переливания трёх светодиодов RGB)
      3) Память на 1Кб (программу для одного такого устройства приложу ниже, может её можно и сократить, но не факт что такую же, но на три диода получится ужать)
      4) Низкое потребление или возможность подключения режимов с низким потреблением.
      5) Работа от 3В. (от таблетки)
      6) Возможность программирования через Arduino UNO (но другие варианты тоже рассматриваю, просто Arduino уже есть)

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

      Очень надеюсь на Вашу помощь. Заранее большое Вам спасибо!
      Прикладываю обещанный мною код:
      int vib = 4; int led = 0; long loopTime = 5000; void setup() { pinMode(led, OUTPUT); pinMode(vib, INPUT); } void loop() { if (digitalRead(vib)){ unsigned long currentMillis = millis(); while(millis()-currentMillis<=loopTime) { for(int fadeValue = 0; fadeValue <=255; fadeValue+=5){ analogWrite(led,fadeValue); delay(2); } for(int fadeValue = 255; fadeValue >=0; fadeValue-=5){ analogWrite(led,fadeValue); delay(2); } for(int fadeValue = 0; fadeValue <=255; fadeValue+=5){ analogWrite(led,fadeValue); delay(2); } for(int fadeValue = 255; fadeValue >=0; fadeValue-=5){ analogWrite(led,fadeValue); delay(2); } digitalWrite(led, LOW); delay(600); } } }  
    • By Evgeniy90
      Здравствуйте! Столкнулся со следующей проблемой: при сборке МД "Шанс" дошел до этапа прошивки МК, в итоге запорол 3 атмеги. Прошивал 3 способами:
      1. Через Arduino UNO(As ISP) просто МК
      2. Через Arduino UNO(As ISP) МК внутрисхемно(соответственно с обвязкой)
      3. Через USB ASP внутрисхемно(с обвязкой соответственно).
      Вышло так, что в наличии кварца 11.0592 МГц не было, и я временно впаял 12 МГц. Прошил трижды всё правильно(фьюзы , контакты и т.д). После прошивки просто не видит МК (ну и плата не работает без МК.да и Бог с ней, но МК всеравно не могу считать). В чем причина понять не могу. Одно думаю, что это разница между 11.0592 и 12 МГц. Посоветуйте как решить проблему.
      Коды ошибок после прошивки во всех трёх случаях одинаковые:
      Sinaprog -invalid device signature
      Averdude -avrdude: warning: cannot set sck period, please check for usbasp firmware update
      target don't answer
    • By Николай Станкевич
      Можно ли на микроконтроллерах ATmega реализовать обработку сигналов в радио оборудовании?
      И какой для этих целей лучше подойдёт?
      То есть можно ли перестройку и подстройку частот на них сделать?
      Модуляцию
      Кодирование и тому подобное
      И какую литературу посоветуете?
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
×
×
  • Create New...