Jump to content

Таймер ATtiny13A каждый такт на частоте 9.6 МГц


dubrovkin
 Share

Recommended Posts

9 минут назад, dubrovkin сказал:

придётся доставать секретное оружие

хорошо, что оно есть. у светодиода свой МК, и неизвестно где хитроглазые братья схалтурили, поэтому неплохо проверить где собака порылась.

Link to comment
Share on other sites

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Так это...да ну, правда?! Хы. Прикольно. Такая мелкая фигнюшка, а уже своя микросхема. Для чистоты эксперимента, остаётся старый добрый 5 мм светодиод с 4 ножками (общим анодом) воткнуть, там-то нет микрухи? А так, если что, я тестирую всё на 0603 SMD.

Link to comment
Share on other sites

Реле, разъемы, вентиляторы, корпуса, микросхемы, конденсаторы и много другое!

Скидки до 20% на сайте электронного дискаунтера ТМ Электроникс.

Бесплатная доставка в любую точку России + кэшбэк 15%.

Подробнее

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

17 часов назад, IMXO сказал:

это вы привели свой код в соответствие с ДШ,

Как выяснил @Генадий  Дубровкин даже вместо бита кракозябры шлет , можно расходится )

Link to comment
Share on other sites

Материалы вебинара «Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока»

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

11 часов назад, dubrovkin сказал:

Питание от лабораторного источника питания.

Он самодельный ? Почему не от 7805 ?

Link to comment
Share on other sites

Комплексные решения с литиевыми батареями EVE для интеллектуальных систем безопасности

Литиевые химические источники тока EVE по своим характеристикам являются идеальным выбором для современных интеллектуальных систем безопасности. EVE разрабатывает литиевые батареи, опираясь на многолетние исследования таких областей применения, как беспроводная связь стандартов Bluetooth, LoRa, Wi-Fi, NB-IoT и ZigBee. Рассмотрим решения для систем безопасности с использованием батарей EVE. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Posted (edited)

Это какие ещё я кракозябры шлю? Без понятия что такое 7805. Не самодельный.

Так, ну что, приступим?

13 часов назад, Геннадий сказал:

Это такой троллинг? Спрашивать про баги программы, а подсовывать для нас накиданную лабуду? В чем наглядность? Неужели Вы думаете, что парни в Ассме не разберутся? Петляете как заяц!

Ваша переписанная лабуда работает так:

555.jpg.f786f857b0747b1885d67016464bfc6b.jpg

Очень похоже на примеры из даташита? Сигнал RET Вы вообще не формируете?

А до Вас никак дойти не может что и одна и другая программа работают одинаково?! Какая Вам к чёрту разница где там что на ассемблере лежит. Дали код, есть что сказать, здорово, нет...мимо. Логично?! Логично.

Позвольте поинтересоваться, а чем это мой код заслужил такой высокой оценки?

Ну и главное. Картинку Вы привели. А теперь, будьте добры, скажите-ка нам пожалуйста, что же там не так? Я вот смотрю, деление 500 нс. Смотрю, HIGH посылаются примерно как нужно. Смотрю, между HIGH проходит около 7 мкс. Как думаете, товарищ, это больше чем время для сброса? Так что не так??? Почему лабуда? Вечер не удался?!

Edited by dubrovkin
Link to comment
Share on other sites

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Это до Вас дойти никак не может, что глюки ищут в оригинале исходника, а никак не в его аналоге, написанном на другом языке.

Пример, Коля и Вася - братья близнецы. Коля хорошо учится, занимается в различных кружках. Вася оболтус. Прогуливает уроки, учится на одни двойки, в свободное время где-то пропадает и возвращается подвыпившим. Что не так с Васей. Поговорите с Колей и выясните проблему, они же внешне одинаковые.:)

Вот и Ваш подход такой же. Говорить что-то по аналогам нет смысла, так что МИМО...

Link to comment
Share on other sites

Posted (edited)

Вы придуриваетесь? Моя цель была писать на C/C++ с использованием ассемблерных вставок. Легче было начать с ассемблера, потому что я, на тот момент, не знал как использовать ассемблерные вставки (слишком там синтаксис не понятный, всякие двоеточия, входные, выходные параметры и ещё там какие-то). Но, когда я столкнулся с неправильным поведением, я решил реализовать всё-таки на том, на чём я первоначально хотел. Заливаю и тестирую я именно C код, а не ассемблерный. Поэтому то, что Вы прицепились к тому, что я залил не ассемблерный, меня удивляет. Словно Вы лично знаете только ассемблер и помочь не можете в С. Но интересно даже не то, а то, нахрена Вы свою картинку вставили, если по ней всё нормально. Для чего она? Где там ошибка? В какой момент времени там не то посылается? Что не по datasheet'у? Сами привели, сами и опозорились!

Ладно, давайте не будем скатываться. Все ошибаются. Если Вам проще ассемблерный код, мне не сложно показать его. Просто и тот и тот код у меня выдаёт одинаковое поведение.

Спойлер

.equ R,50
.equ G,50
.equ B,50

.equ DDRB,0x17
.equ PORTB,0x18

.equ SPL,0x3D

.equ RC1,20																		; Регистр счётчика 1 (R20)
.equ RC2,21																		; Регистр счётчика 2 (R21)
.equ RC3,22																		; Регистр счётчика 3 (R22)
.equ RRed,23																	; Красный регистр (R23)
.equ RGreen,24																	; Зелёный регистр (R24)
.equ RBlue,25																	; Синий регистр (R25)
.equ RSend,26																	; Регистр отправляемых битов (R26)
.equ RByte,27																	; Счётчик байтов (R27)
.equ RBit,28																	; Счётчик битов (R28)
.equ RBitFlag,29																; Флаг отправляемого бита (R29)

.section .text
.org 0x00

vectors:
	rjmp main																	; RESET
	reti																		; INT0
	reti																		; PCINT0
	reti																		; TIM0_OVF
	reti																		; EE_RDY
	reti																		; ANA_COMP
	reti																		; TIM0_COMPA
	reti																		; TIM0_COMPB
	reti																		; WDT
	reti																		; ADC

main:
	cli
	
	; Стек
	ldi R16,0x9F
	out SPL,R16
	
	; Направление пинов
	ldi R16,0b00000111
	out DDRB,R16
	ldi R16,0b00001000
	out PORTB,R16

loop:
	; Красный
	rcall delay
	ldi RRed,R
	ldi RGreen,0
	ldi RBlue,0
	rcall send
	
	; Оранжевый
	rcall delay
	ldi RRed,R
	ldi RGreen,G/2
	ldi RBlue,0
	rcall send
	
	; Жёлтый
	rcall delay
	ldi RRed,R
	ldi RGreen,G
	ldi RBlue,0
	rcall send
	
	; Зелёный
	rcall delay
	ldi RRed,0
	ldi RGreen,G
	ldi RBlue,0
	rcall send
	
	; Голубой
	rcall delay
	ldi RRed,0
	ldi RGreen,G
	ldi RBlue,B
	rcall send
	
	; Синий
	rcall delay
	ldi RRed,0
	ldi RGreen,0
	ldi RBlue,B
	rcall send
	
	; Фиолетовый
	rcall delay
	ldi RRed,R
	ldi RGreen,0
	ldi RBlue,B
	rcall send
	
	; Белый
	rcall delay
	ldi RRed,R
	ldi RGreen,G
	ldi RBlue,B
	rcall send
	
	; Чёрный
	rcall delay
	ldi RRed,0
	ldi RGreen,0
	ldi RBlue,0
	rcall send
	
	rjmp loop

; Функция отправки цвета
send:
	ldi RByte,0

byteLoop:
	cpi RByte,0
	breq sendRedByte
	
	cpi RByte,1
	breq sendGreenByte
	
	cpi RByte,2
	breq sendBlueByte
	
	cpi RByte,3
	breq endByteLoop

sendRedByte:
	mov RSend,RRed
	rjmp sendByte

sendGreenByte:
	mov RSend,RGreen
	rjmp sendByte

sendBlueByte:
	mov RSend,RBlue

sendByte:
	ldi RBit,0b10000000

bitLoop:
	cpi RBit,0
	breq continueByteLoop
	
	mov RBitFlag,RSend
	and RBitFlag,RBit
	cpi RBitFlag,0
	brne sendBitValue1
	
	; Значение бита 0
	ldi R16,0b00001100
	out PORTB,R16
	nop
	ldi R16,0b00001000
	out PORTB,R16
	rjmp continueBitLoop

sendBitValue1:
	; Значение бита 1
	ldi R16,0b00001100
	out PORTB,R16
	nop
	nop
	nop
	nop
	ldi R16,0b00001000
	out PORTB,R16

continueBitLoop:
	lsr RBit
	rjmp bitLoop

continueByteLoop:
	inc RByte
	rjmp byteLoop

endByteLoop:
	ret

; Функция задержки
delay:
	ldi RC1,0
	
loop1Delay:
	cpi RC1,255
	breq endDelay
	
	ldi RC2,0
	
loop2Delay:
	cpi RC2,255
	breq tick1Loop
	
	ldi RC3,0
	
loop3Delay:
	cpi RC3,16
	breq tick2Loop
	
	inc RC3
	rjmp loop3Delay
	
tick2Loop:
	inc RC2
	rjmp loop2Delay
	
tick1Loop:
	inc RC1
	rjmp loop1Delay
	
endDelay:
	ret

 

 

Edited by dubrovkin
Link to comment
Share on other sites

Всем привет!

В общем потыкался ещё. Первым делом, взял Arduino UNO R3 и снова, используя библиотеку microLED (там ещё нужно поставить FastLED, а то не скомпилируется), попробовал все цвета радуги + белый и чёрный. Работает нормально. Нашёл как, из под этой же Arduino, скомпилировать пример для ATtiny13 (к сожалению там выбрать нельзя ATtiny13A), а то библиотека microLED хвастается что и под ATtiny умеет. Там, правда, есть нюанс, что среди микросхем, выбрать можно WS2818 (среди прочих), вот только там нет WS2818B (а у меня именно она). Уж не знаю на сколько это важно, но именно сам Arduino Uno R3 нормально работает при выборе WS1818. Так вот, прошил ATtiny13A и ничего не работает. Исходный код открытый, поковырялся.

Так вот, первое про что хочу спросить. Я покупал WS2818B через AliExpress. На сайте продавца уже была документация по микросхеме. И там приводилась такая вот таблица:

image.png.70c274f786f96f2b90f84cbadf101768.png

На самой микросхеме я увидел название фирмы, которая её разработала. Нашёл их сайт в Интернете, но там что-то не скачать Datasheet'ов (в общем сайт у них не доделан). Однако в Интернете я нашёл pdf документ, где внутри него указана именно эта фирма. Да, можно было бы засомневаться что это за документ, вот только найдя эту микросхему на сайте ЧИП и ДИМ, я увидел что там есть ссылка на Datasheet. А он как раз такой же, как и тот, что я нашёл ранее (только язык другой). В общем, по этому документу имеем вот такие тайминги:

image.png.e3cdd3f0bf1811f69cba93552006634e.png

Как видно, всё же они разные. Когда я писал код, я полагался не на то, что было у продавца, а на то, что было якобы у производителя. Так вот, так-то у меня всё нормально работало, пока на микросхему не передаются одинаковые байты для всех трёх каналов. Пошёл изучать код от microLED. Начну с части для ATtiny. В коде видим:

image.png.256a3a20ae0f6e3ce14230b87456671c.png

Свёрнутая мной часть, она только для задержки. И, по содержащемуся там коду, я сделал вывод, что этот код не предназначен для связки ATtiny13A на 9.6 МГц и микросхемы WS2818/WS2818B (там тупо идёт убавление значения и сравнение, но инициализации не было). Так что не удивительно что у меня пример не заработал когда я прошил ATtiny13A кодом, использующим их библиотеку.

Теперь посмотрим на то, как дело обстоит в самом ATmega328P на 16 МГц. Ведь Arduino Uno R3 использует именно этот микроконтроллер и именно эту частоту. Вот код:

image.png.9cd765a48f4b7e533124a6a47b019a4b.png

Смотрите. Частота микроконтроллера 16 МГц. А это значит, что один тик проходит за 62.5 наносекунд. По коду мы видим, что после того, как устанавливается высокий уровень сигнала (HIGH), до установки низкого уровня сигнала (LOW), проходит 3 тика. Это в случае если нужно передать бит 0. А если нужно передать бит 1, то от HIGH до LOW проходит 15 тиков. Так вот, получается, что, чтобы передать 0, выжидается 187.5 наносекунд, а чтобы передать 1 - 937.5 наносекунд. Видим, что 187.5 наносекунд не укладываются по Datasheet'у ни от продавца, ни от якобы производителя. Но, при этом ведь работает. Вопрос: где взять правильный Datasheet? Ну или, а нафига тогда эти интервалы от, до? Могли бы уже тогда написать, для 0 пофиг, а для 1 не короче такой-то длины. Ну или как там всё это работает? Я просто вижу в документе интервалы и по ним делаю. А тут есть библиотека, и она делает по другим интервалам. Где правда?

В общем, я взял ATmega328P. Подключил к нему кварцевый резонатор на 16 МГц (ну и всё что положено по Dataheet'у). Взял свой код. Подправил так, чтобы интервалы были ровно такие же, только с учётом того, что уже не 9.6 МГц, а 16 МГц. Запустил и всё работает. Как бы, по таймингам мне и ATtiny13A хватало (ну, по моим расчётам). Это что же получается, просто стабильности нет? Если бы я взял активный кварцевый резонатор на 9.6 МГц, то у меня и на ATtiny13A всё заработало?

Ну, и в общем, меня пугают интервалы. Как правильно-то?

Link to comment
Share on other sites

6 минут назад, dubrovkin сказал:

Ну или, а нафига тогда эти интервалы от, до? Могли бы уже тогда написать, для 0 пофиг, а для 1 не короче такой-то длины.

Есть такая штука как длительность фронта/спада и чем длиннее линия тем эта длительность будет больше и короткий импульс может вообще не дойти до приемника и бит будет пропущен.

12 минут назад, dubrovkin сказал:

Как правильно-то?

правильно в ДШ.

Link to comment
Share on other sites

Я это понимаю. Я не понимаю как можно что-то делать, если нет вводных. Где их взять?

Это что же, кто делал microLED, сделали её не правильно?

Link to comment
Share on other sites

15 минут назад, dubrovkin сказал:

По коду мы видим, что после того, как устанавливается высокий уровень сигнала (HIGH), до установки низкого уровня сигнала (LOW), проходит 3 тика.

где Ты насчитал 3 тика? 

Link to comment
Share on other sites

5 часов назад, dubrovkin сказал:

...а нафига тогда эти интервалы от, до? Могли бы уже тогда написать, для 0 пофиг, а для 1 не короче такой-то длины. Ну или как там всё это работает? Я просто вижу в документе интервалы и по ним делаю. А тут есть библиотека, и она делает по другим интервалам. Где правда?

Рекомендуемая скорость передачи 800Kbps, период одного бита 1,25 uS. Возьмите за ориентир время срабатывания регистра-защелки от начала положительного импульса 500nS (около половины периода, но может отличаться плюс/минус). Тогда во время передачи 0 Вы должны опустить данные в 0 раньше, чем сработает защелка (пример D-триггер). С учетом всех технологических задержек в полупроводниках, длительность положительного импульса, при передаче 0, выбирайте 500/2 = 250 nS (примерно), а при передаче 1 500+(500/2)=750 nS (опять примерно), чтобы защелка зафиксировала 1. Остальная часть периода передачи должна быть в 0. Старайтесь придерживаться длительности передачи одного бита в разумных рамках (около 1,25 uS весь период передачи) и у Вас все получится.

Edited by Геннадий
Link to comment
Share on other sites

В 16.06.2023 в 10:03, dubrovkin сказал:

между HIGH проходит около 7 мкс

Если верить даташиту, то это время не должно превышать 1.6 мкс. С другой стороны, что произойдёт если оно будет в пределах 1.6 - 280 мкс, в даташите не описано.

Link to comment
Share on other sites

Ребят, всё про WS2818B. Я вообще в электронике не шарю. Поэтому сразу говорю - никакой не радиолюбитель, не начинающий - вообще никто! Вот картинка из Datasheet'а:

image.png.785a3f58e3dbd5a6727e1032419a772f.png

Зачем здесь, из вывода сигнала от одной микросхемы до входа сигнала в другую, идёт резистор R3 и резистор R2?

Link to comment
Share on other sites

Posted (edited)

Ну и? У меня логика простая. Стоят два подряд резистора. Если два подряд резистора идут, то между ними будет падение напряжения. Но, никто между ними сигнал не снимает. Тогда вопрос: зачем там два подряд? Почему не один?

Edited by dubrovkin
Link to comment
Share on other sites

Честно говоря я не знаю что за звон. В общем, китайцы это написали не для того, чтобы побольше резисторов продать, видимо. А что если между ними 15-25 см?

 

Link to comment
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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...