Перейти к содержанию

Алгоритмы кода прошивок микросхем процессора ATMEGA16 на Си


tifaso

Рекомендуемые сообщения

Haчни уже читать документацию, а то всё проектируешь по ощущениям.

Я тебя ещё на первых страницах просил: сделай замеры, что сколько потребляет.

78L05 без нагрузки потребляет до 6 мА.

А tiny2313 на 4 МГц в idle – меньше 1 мА. Спрашивается, что даст спящий режим?

Ссылка на комментарий
Поделиться на другие сайты

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

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

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

Наглядно по видео урокам легче изучать как с чем работать сразуже и на примерах, а так в книжках информация есть, но не всегда находишь как правильно применить

Как раз с точностью до наоборот.
Только от просмотра видосиков может возникнуть умозаключение:

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

Таймер же тоже прерыванием считается

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

С уважением, Владимир

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ну таймер не всегда прерывание,это всего лишь счетчик импульсов (внешних или от тактового генератора через предделитель),просто им можно "спровоцировать" прерывание  по совпадению или переполнению

Ссылка на комментарий
Поделиться на другие сайты

Ecли бы @tifaso последовал совету 

В 20.02.2023 в 19:25, colorad сказал:

После изучения цифровых микросхем по справочнику Шило

То он бы ясно понимал, что таймер – обыкновенный двоичный счётчик. Иногда реверсивный. На входе у него есть мультиплексор, на входе мультиплексора есть делители.

Часто есть ещё схема сравнения, чтобы сравнивать значение счетчика с некоторым нужным нам значением.

Ссылка на комментарий
Поделиться на другие сайты

11 минут назад, ChePay сказал:

Ecли бы @tifaso ...

понимал, что таймер – обыкновенный двоичный счётчик...

К сожалению это не так, на мой взгляд. Он этого не понимает. Не понимает что такое регистр и многое другое из состава МК. А главное - не понимает как все это работает внутри МК. Иначе бы не утверждал, что Ассм тяжелый и непонятный язык. Ему (tifaso) никто в роликах этого не объяснял, не для этого ролики записываются. Куда проще слизнуть чужой, пусть и неграмотный проект, работающий кое-как. Главное в нем понятно, какие переменные изменить в случае чего. А вот изменить под себя алгоритм выполнения этого проекта - уже непосильная задача (ввиду перечисленных выше условий), которая и делает нашего tifaso упрямее сектанта (сектанта легче переубедить).

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Геннадий сказал:

сектанта легче переубедить

Золотые слова!
У нас никак не получается донести до автора темы, что изучение МК происходит в следующем порядке:
транзисторный ключ -> элементы ТТЛ -> триггеры,счётчики,регистры -> микропроцессор,ОЗУ,ПЗУ -> микроконтроллер -> ассемблер -> использование Си для программирования МК
Попытка начать с Си - это через задний проход.

С уважением, Владимир

Ссылка на комментарий
Поделиться на другие сайты

Так и изучение электроники нужно тоже поэтапно делать. Именно поэтому @tifaso уже пять лет делает этот проект.

А нужно или повторить готовую уже отлаженную конструкцию. Например, есть же усилитель на трёх микросхемах от Сухова (https://radiostorage.net/5178-skhema-polnogo-usilitelya-zch-na-mikroskhemah-ot-philips-tda1029-tda1524-tda1555q-50-watt.html):
image.png.2a44cea104ec85a67cf50b8d1aab3db9.png
Ставим на один их входов mp3 модуль с радио и всё готово. Питать всё можно от 12 В аккумулятора, как и сейчас.

Или же начинать конструировать простые схемы. Учиться решать возникающие по пути проблемы, а не уходить от них, считая, что раз не получилось, то и не очень то нужно.
 

Ссылка на комментарий
Поделиться на другие сайты

Еще столько же он потратит на поиски программных решений для своей конструкции. За это время можно много чего изучить. Вот пример кода прошивки пульта (не совсем оптимизированный по энергопотреблению - слишком много посылок по ИК-каналу на одно нажатие кнопки), если подходить к нему с точки зрения программирования на Ассемблере (судя по оригиналу, автор либо совсем начинающий, либо долго работающий на Си, либо... борец за поли-гендерное равенство, как у них там модно сейчас). А всего то и потребовалось сделать клавиатурную матрицу 4х4 и подойти к алгоритму на Ассемблере.

пульт.rar

Кому не лень, сравните "портянки" мою и авторскую.

avr_do2_v.asm.rar

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Геннадий сказал:

Еще столько же он потратит на поиски программных решений для своей конструкции. За это время можно много чего изучить. Вот пример кода прошивки пульта (не совсем оптимизированный по энергопотреблению - слишком много посылок по ИК-каналу на одно нажатие кнопки), если подходить к нему с точки зрения программирования на Ассемблере (судя по оригиналу, автор либо совсем начинающий, либо долго работающий на Си, либо... борец за поли-гендерное равенство, как у них там модно сейчас). А всего то и потребовалось сделать клавиатурную матрицу 4х4 и подойти к алгоритму на Ассемблере.

пульт.rar 1 кБ · 0 загрузок

Кому не лень, сравните "портянки" мою и авторскую.

avr_do2_v.asm.rar 1 кБ · 0 загрузок

А какой смысл сравнивать ну может и лучше с твоей точки зрения (совершенству нет предела)  а конечному пользователю все равно сколько пакетов или кто там сколько тока кушает главный критерий чтоб работало а делать выводы по автору ну это не профессионально и не корректно  

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Ivan3 сказал:

А какой смысл сравнивать...

Если быдло-код выложен на всеобщее пользование, то он не только может критиковаться. Он просто обязан подвергнуться критике, потому как является основополагающим материалом для неокрепших умов типа tifaso, принимающих его как истину в последней инстанции (работает и ладно). Какие потом программы будут написаны такими программистами на знаниях, полученных из роликов и схем типа этой? Пусть быдлокодят европейцы и радуются, что хоть как-то работает. Нам надо быть впереди их. Учитесь, читайте и познавайте, а не тупо копируйте у "буржуев".

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, ДядяВован сказал:

Попытка начать с Си - это через задний проход

поправлю, применительно к МК. Си относится к языкам программирования высокого уровня, ускоряет разработку ПО, и абстрагирован от железа, хотя и допускает включения фрагментов на ассемблере для решения низкоуровневых задач, но тут нужно отличать зёрна от плевел. Любой язык программирования это как инструмент, нужно уметь им пользоваться и понимать для каких задач он подходит.

Ссылка на комментарий
Поделиться на другие сайты

30 минут назад, dolmatovva сказал:

поправлю, применительно к МК. Си относится к языкам программирования высокого уровня, ускоряет разработку ПО, и абстрагирован от железа, хотя и допускает включения фрагментов на ассемблере для решения низкоуровневых задач, но тут нужно отличать зёрна от плевел. Любой язык программирования это как инструмент, нужно уметь им пользоваться и понимать для каких задач он подходит.

Совершенно верно И как говорится лучший инструмент это тот который ты знаешь  

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Ivan3 сказал:

И как говорится лучший инструмент это тот который ты знаешь  

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

Ссылка на комментарий
Поделиться на другие сайты

44 минуты назад, dolmatovva сказал:

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

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

Совершенно верно И как говорится лучший инструмент это тот который ты знаешь  

Лучший этот тот, который позволит выполнить поставленную задачу в лучшем виде.

Топором можно гораздо больше дров наколоть, чем ножиком. Но Буратино топором не выстрогать, ножом лучше получится.

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

Горды́ня — непомерная гордость, заносчивость, высокомерие, эгоизм, нетерпение упрёков и жажда похвалы.

Нисколько. Скорее брезгливость к бездарному. И никакое утверждение "я художник, я так вижу" не является этому (бездарности) оправданием. Это мое мнение. А насчет жажды похвалы... Мне этого не надо, ее и так предостаточно звучало на нашем форуме. Так что "самоутверждение" не подходит, ищите другой повод.:)

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Взять чип mp3 плейера, чип FM тюнера, микроконтроллер 1 и микроконтроллер 2, и ещё пульт ДУ на микроконтроллере, их сыне, и для коммутации всего этого использовать релейный шкаф, Карл !!!  Да как мы мы можем обсуждать язык программирования для обращения к шкафу ?!

Ссылка на комментарий
Поделиться на другие сайты

45 минут назад, Ivan3 сказал:

 Охаивание других — замаскированное хвастовство

Это не то, за что Вы принимаете. Это последняя попытка обратить внимание tifaso на неправильно выбираемый путь. Если другим способом не удается, то как Вы рекомендуете поступить? Плюнуть на это все, типа "хрен с тобой, живи уродом"? Хотелось помочь человеку, направить в правильное русло (я не призываю отказаться от Си совсем, но в данном случае на Ассме будет лучше). Но он упрям... и Вы тут еще нарисовались, как защитник (не пойму только кого). Уж не Ваша ли схема с того форума? Или Вы ее тоже повторили и рекомендовали?

1 минуту назад, Ivan3 сказал:

...ну и повторюсь  что это личное дело  тифасо . как и что ваять  главное чтоб ему нравилось...

Ну тогда флаг ему в руки, ведро на шею и в путь. Нечего головы людям морочить с вопросами.:)

Ссылка на комментарий
Поделиться на другие сайты

@Ivan3 1. приведите контекст, прежде чем так судить. то, что и как пишете в форуме, касается всех его участников.

2. вы не привели технически аргументированных доводов.

3. тифасо сам обратился сюда за помощью, но если вы хотите быть его психологом, решайте это вне форума.

Ссылка на комментарий
Поделиться на другие сайты

Вот тут вот озвучена здравая мысль:

1 час назад, Ivan3 сказал:

да какая разница на чем и как есть поставленная задача и сроки и если задача выполнена и заказчик доволен то он не будет интересовать как ты достиг результата

Вот только заказчиком проекта является одновременно и исполнитель, проект делается для себя.

И если бы @tifaso чётко проговорил, что я не буду читать книги, учить ассемблер. Не хочу просто. Хочу доделать так, как умею, то лично я бы перестал советовать улучшения.

Но вместо этого @tifaso юлит, типа, пробовал импульсные преобразователи, получил от них помехи, значит, это плохо. Попробовал мостовой усилитель от 12 В, не заработало, значит, тоже плохо.

У меня бы не поднялась рука в подобную любительскую конструкцию поставить три микроконтроллера. Уж лучше тогда аппаратно всё сделать. Можно даже не на логических ИМС, а не транзисторах и диодах.
Тот же пульт. Ну есть же красивые качественные пульты от видаков, муз. центров или DVD. Их и в руке держать приятно и удобно, и кнопки все подписаны.

Тем более, что делается для себя. И делается уже несколько лет, почему не сделать хорошо и красиво?

 

 

Ссылка на комментарий
Поделиться на другие сайты

Хорош мужики, уже забыли о чём речь то была:yes:. Завязывайте.

Автор темы мало сведущ в электронике, но взялся делать мастадонта из разнокалиберных частей с тремя микроконтролерами, которые ещё надо умудриться согласовать друг с другом. Лет на ... делом занят будет.

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

Ссылка на комментарий
Поделиться на другие сайты

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

Прерывание от таймеров не используются ни в пульте, ни в приемнике

А зачем тогда там настройка таймера ?

; NASTAVENI CASOVACU
LDI	REG,0b00000010 	; nastavi čítač na nulovani pri dosazeni porovnavane...
OUT	TCCR0A,REG    	; ...hodnoty (tzv. CTC), OC0 nevyuzit
LDI	REG,0b00000011 	; preddeleni 64
OUT	TCCR0B,REG    	; 
LDI	REG,213      	; nastavi porovnavanou hodnotu
OUT	OCR0A,REG     	; 

LDI	REG,0b00000001	; povoli preruseni OCIE0A
OUT	TIMSK,REG    	; 

 

Ссылка на комментарий
Поделиться на другие сайты

Там по фронту и спаду входящего сигнала (прерывание по изменению состояния пина) считывается значение регистра TCNT с последующим его обнулением (для следующего периода), далее производится сравнение с константами. Единственное место, где возможно срабатывание этого момента - конец приема (своего рода WatchDog по таймеру). 

IN REG,TCNT0

CPI REG,3		;Prah delky zakmitu / (krбtkйho) pulzu
BRLO ZAKMIT

CPI REG,53		;Prah delky dlouhe mezery / mezery mezi snimky
BRLO NE_KONEC_SNIMKU

 

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Все предложенные к рассмотрению источники питания работают примерно по одному принципу: сетевое напряжение выпрямляется, фильтруется (получаем чуть больше 300 вольт постоянного), затем преобразуется снова в переменное, но уже на частотах в несколько десятков килогерц, понижается на трансформаторе и снова выпрямляется. За счёт высокой частоты преобразования используется трансформатор на ферритовом, а не на стальном, сердечнике, гораздо меньших габаритов и стоимости. Минусы: значительное усложнение схемы блока и вероятность возникновения различных помех от него. Модули управления (кроме первого) также являются импульными преобразователями, с теми же достоинствами и недостатками. Если нужно по быстрому собрать некое подобие ЛБП, то уж лучше брать модуль вроде этого. Ну и блок питания к нему соответствующий. Но не очень понятно, какой практический опыт можно получить от соединения готовых модулей парой проводов.  
    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
×
×
  • Создать...