Jump to content
Azur

Не Работает Шим На Attiny2313A

Recommended Posts

Спасибо ВСЕМ за поддержку и дельные советы. Вот так схема теперь выглядит:

98cb57611692.jpg

Нажимаю на кнопку S2 - включаю генерацию ШИМ. Нажимаю ещё разок - выключаю ;). Отдельное Спасибо за помощь в написании программы Ittido.

Получился генератор на 40 кГц. В дальнейшем хочу использовать его как передатчик.... Хочу попробовать с пульта управлять какой нибудь нагрузкой 220В.

Приёмником будет TSOP2136, мк будет управлять нагрузкой через симисторную оптопару и симистор.

Edited by Azur

Share this post


Link to post
Share on other sites

1. Стабилизатор напряжения изображен довольно необычно, проще было бы отзеркалить, чтобы слева был вход а справа выход.

2. Странное подключение кнопки: логичнее резистор кинуть от PD0 до питания, а кнопку соответственно от PD0 до земли. Вывод-то сконфигурирован наверняка как Z или Hi-Z, то есть перегрузки по нему ожидать не приходится. А для защиты от дребезга можно параллельно кнопке включить конденсатор. Так же, кстати, можно защитить RESET от наводок, хотя на практике даже резистор не обязателен.

3. В начале работы PB0 сконфигурирован как вход, при этом база повисает в воздухе. Поскольку время такого состояния мало, этим можно пренебречь, но можно и перестраховаться, соединив ее через резистор с эмиттером. Резичстор тогда где-то 1к - 10к. Но, повторюсь, ничего не случится если его и не ставить.

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


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

А для чего резистор от PD0 к питанию? На входе же и так уровень логической 1.

Share this post


Link to post
Share on other sites

Вебинар «Практическое использование TrustZone в STM32L5»(10.12.2020)

Приглашаем на вебинар, посвященный экосистеме безопасности и возможностях, которые появились у разработчиков благодаря новой технологии TrustZone в микроконтроллерах STM32L5. Программа рассчитана на технических специалистов и тех, кто уже знаком с основами защиты ПО в STM32.

Подробнее

PD0 работает как вход? Если да, то там должна быть велечина, соответствующая логической единице или нулю. По факту, нажимая кнопку Вы подаете логический ноль на PD0, но как там будет образовываться логическая 1ца?. Вариантов тут два подтяжка веутрисистемного переключателя и простого, более рабочего:

1.PORTD - бит этого регистра нужно сделать "0" (т.е. её бит в регистре DDRB очищен или равен нулю) - то если очищен и соответствующий бит в регистре PORTB ножка будет высокоимпедансным входом (Z-состояние, вход с очень высоким входным сопротивлением более 10 МОм), а если бит в регистреPORTD установлен, т.е. равен "1" то включается "подтяжка" (pull-up) высокоимпедансного входа к плюсу питания МК через встроенный резистор примерно 40 КОм - ножку как бы соединяют таким резистором с питанием МК.

2.Установить подтягивающий резистор, как описано выше..

Edited by Oleg_Shonin

Share this post


Link to post
Share on other sites

Снижена цена на AC/DC и DC/DC преобразователи Mornsun в Компэл!

Компэл и компания Mornsun снизили цены на преобразователи AC/DC-преобразователи семейств LS и LDE. По привлекательной цене также предлагаются DC/DC-преобразователи изолированных семейств поколений R2 и R3 различного конструктивного исполнения.

Подробнее

Моя настройка порта PD0: DDRD=0, PORTD=1. Соответственно там лог 1. А я переключаю его кнопочкой на землю через резистор.

Share this post


Link to post
Share on other sites

Материалы вебинара: «Силовые компоненты Wolfspeed на основе карбида кремния (SiC)»

Вы можете посмотреть видеозапись вебинара «Силовые компоненты Wolfspeed на основе карбида кремния (SiC)», ознакомиться с ответами на вопросы и презентацией, в которой вы найдете много полезных ссылок, в том числе подробнее раскрывающих ответы на вопросы.

Подробнее

Все правильно сделали, как для одной кнопки..

При условии использования бОльшого количества кнопок желателен внешний резистор по причине максимально общего тока микросхемы в диапазоне 40-50мА. Тоесть не стоит перегружать через внутреннее сопротивление общий ток потребления микросхемы.

ПыСы Схема рабочая вполне...

Share this post


Link to post
Share on other sites

Вот про большое количество кнопок спасибо, учту на будущее.

Share this post


Link to post
Share on other sites

40-50 мА это на один пин, а не на все сразу это раз, а во вторых сколько бы вы кнопок не навешивали, для одного пина всеравно требуется один резистор и сколько бы вы кнопок не нажали одновременно-ток останется одним и тем же для этого же пина. Я лично вешаю внешнюю подтяжку только в том случае, когда пин будет работать как на ход так и на выход.


- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Share this post


Link to post
Share on other sites

40-50 мА это на один пин,

читаем даташит

All current consumption measurements are performed with all I/O pins configured as inputs and

with internal pull-ups enabled. A sine wave generator with rail-to-rail output is used as clock

source.

Перевести?

стр 181 http://www.atmel.com/images/doc2543.pdf как пример

там и графики есть

Share this post


Link to post
Share on other sites

Oleg_Shonin, даже если включить все внутренние пул-ап резисторы, их общий ток составит 2-5 мА. Максимальный ток микросхемы по питанию - 200 мА. Что вы там боитесь перегрузить?


Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Share this post


Link to post
Share on other sites

Писал писал и плюнул. Спрошу одно. Можно ли на вход подать +5В без резистора если он сконфигурирован как вход?


- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Share this post


Link to post
Share on other sites

даже если включить все внутренние пул-ап резисторы

а ток выходов не считаете? Суммарный ток включает все выводы. Дело хозяйское, но как по мне, меньше грузишь, - дальше едет..

Можно ли на вход подать +5В без резистора если он сконфигурирован как вход?

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

Опятьже КЗ - громко сказано, нужно исходить из схемы

Share this post


Link to post
Share on other sites

Oleg_Shonin, из-за 1% от максимального тока вы предлагаете ставить внешние пул-ап резисторы, а из-за риска потерять контроллер предлагаете съэкономить резистор? Мало ли какой сбой может произойти, или питание контроллера окажется ниже 5 вольт?


Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Share this post


Link to post
Share on other sites

Я предлогаю ставить резисторы по причине "дуракоустойчивости" как минимум на этапе разаработки девайса, а упрщать после отладки программы и прочего - всегда пожайлуста

Я сжег несколько тинек по этой причине, иногда ошибку проще предупредить (она не мешает процессу), чем тратить время на поиски...

Касаемо1% - ничего не понял

Oleg_Shonin, из-за 1% от максимального тока вы предлагаете ставить внешние пул-ап резисторы, а из-за риска потерять контроллер предлагаете съэкономить резистор?

я не предлогал экономить резистор

Если это об этом

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

то это банальный ответ на заданный вопрос

И где вы нашли максимальный ток в 200мА - можно ссылку на даташит, скажем для Атмела?

Edited by Oleg_Shonin

Share this post


Link to post
Share on other sites

Oleg_Shonin, 1% - это максимум тока по пул-ап резисторам. Какая вам ссылка нужна? Вы же сами привели ссылку на контроллер? Там и нашёл :)


Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Share this post


Link to post
Share on other sites

Ну тогда как же это?

5. Although each I/O port can sink more than the test conditions (10 mA at VCC = 5V, 5 mA at VCC = 3V) under steady state

conditions (non-transient), the following must be observed:

1] The sum of all IOL, for all ports, should not exceed 60 mA

200 мА - сгорит все..

см стр 178 в низу

Так что 5мА - это не много не мало 8-10% от общей мощности..

Share this post


Link to post
Share on other sites

Олег, в приведенном вами же DS в эл. Характеристиках(стр.177)

Указаны максимальные токи,- как для пина-40мА так и общий -200мА

Максимальные - не значит постоянные.(см. примечание)

Что касается подачи на вход напряжения без резистора, то это делать

нельзя. На входе пина стоят защитные диоды, при небольшой

разности потенциалов, напр. Питание МК-4V, а на вход подаете 5V,

это уже приведет к значительному току через диод, и выходу

его из строя. Другая причина состоит в возможном открывании

транзистора на «землю», при отключении питания, по этой же

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

ограничительного сопротивления.

Edited by akwadag

Share this post


Link to post
Share on other sites

По пунктам

DC Current VCC and GND Pins ................................ 200.0 mA

Это по питанию...свыше которого горит микросхема, тоже произойдет с Пинами если свыше 40 mA

На входе пина стоят защитные диоды, при небольшой

разности потенциалов, напр. Питание МК-4V, а на вход подаете 5V

Это называется не гальванически развязаное питание, что в принципе ре рассматривалось.. Если питание микросхемы и питание по входу разное, там все по другому. При одном источнике питание МОЖНО подавать на вход без резистора

смотрел в примечание

Maximum Ratings” may cause permanent damage to the device.

Share this post


Link to post
Share on other sites

Во первых,- напряжение МК может снижаться быстрее,чем входное пина.

При этом через диод, вы будете "подпитывать все устройство"

Во вторых, я назвал еще одну причину.

В третьих, - вы не дочитали-« Exposure to absolute maximum rating

conditions for extended periods»

Edited by akwadag

Share this post


Link to post
Share on other sites

Приятно :bye:


- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Share this post


Link to post
Share on other sites

Во первых,- напряжение МК может снижаться быстрее,чем входное пина.

1. Если исходить из общего тока для ВСЕХ выводов микросхема в 50мА, то там будет понятна схемотехника

2. Для обеспечения питания контроллера всегда ставится электролит по питаию, так, что если и будет просадка/отключение питания, то никак ни должно должно быть такого "напряжение МК может снижаться быстрее,чем входное пина.", или опять подмениваются понятия о развязаном питании..

3.

Я предлогаю ставить резисторы по причине "дуракоустойчивости" как минимум на этапе разаработки девайса, а упрщать после отладки программы и прочего - всегда пожайлуста

Не нужно агитировать за "Красную Армию":) Я там никого не знаю :yes:

4. Касаемо приведенной схемки в посту 51, подача +5В на вход не вызовет ситуации, о которой Вы говорили

Share this post


Link to post
Share on other sites

При отключении питания маловероятно "открывание транзистора на землю", т.к. срабатывает схема BOD. А после сброса регистры управления портами конфигурируют все пины на вход.

Share this post


Link to post
Share on other sites

Коллеги, вы говорите исключительно о штатных ситуациях. А жизнь - она "ширше и глыбже". В конце концов, есть правила хорошего тона и в схемотехнике.


Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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...

  • Сообщения

    • Полностью с вами согласен. Когда владельцы Гугла правят карты штатов - это я понимаю. Но недавно решил посмотреть старое место службы под Читой. Нашёл городок. Нашёл даже дом, в котором жил, но местность вокруг частично заретуширована. И у меня возник вопрос: америкосы по нашей просьбе это делают (в чём очень сомневаюсь), либо наши имеют свой доступ к этим картам. 
    • Спасибо огромное!
    • А если он паралельного возбуждения или смешанного.
    • Исходник на моей страничке в личке.
    • Вспомнил. Прерывание может работать исправно, а основной цикл нет. Именно поэтому считается дурным тоном делать сброс сторожевого таймера в прерываниях. Нужно тщательно продумывать, как работает основной цикл. И если в основном цикле есть долгие циклы, вычисления, следует перенастраивать сторожевой таймер. В зависимости от кристалла максимальное время 2,5 с или 4 с. В одном их моих проектом мне пришлось переработать долгое вычисление таким образом, чтобы воткнуть в узкое место сброс сторожевого таймера.
    • Ну а чего тут странного, корпорация Гугл находится на Земле, а не на Марсе и подчиняется земным законам. Если имеется некий секретный объект на поверхности, то вполне логично, что её вежливо попросят замазать соответствующий район на картах. Допускаю, что и любой человек может попросит о том - же самом, подкрепив желанием соответствующей суммой. И только третьеклассник может всерьёз верить, что новый айфон выпущен для удовольствия пользователя, а не ради зарабатывания бабла.

  • Часы юного хакера :) DSTIKE Deauther

  • Similar Content

    • By artos5
      Добрый вечер уважаемые! Помогите советом .. Как лучше всего реализовать генератор . Исходные данные такие :
      Есть выделенный 10 битный параллельный порт при помощи ножек ввода . Он принимает значения от 0 до 1000 , выводит эти данные основной микроконтроллер тоже через параллельный порт . 
      Нужно исходя из этого генерировать частоту от 1000Гц до 5000Гц с шагом 4-5Гц . Пробую программно генерить - не получается , вернее получается очень коряво . Если подстроил нижнюю границу точно , к примеру 1000Гц , то верхняя плывет и наоборот , если верхнюю подстроил то нижняя плывет . Допускается на больших частотах (свыше 4000Гц шаг 20Гц ) но как синхронизировать показания дисплея с генератором ? Есть вариант применить таблицу но это очень муторно ... Частота кварца мк который генерит частоту 16МГц. Посоветуйте какую частоту кварца лучше выбрать и каким методом генерить частоту ?
      Еще одна особенность : надо формировать импульс длительностью 10мкс , а вот чтобы период был к примеру при 1000Гц = 990мкс. и т.д.
      Есть хитрости у таймера Attiny2313A при помощи которых можно аппаратно сформировать частоту?
       
      С уважением Артем.
    • By IntelXerox
      Добрый день ребят! Помогите пожалуйста с реализацией кода на Attimy2313A с UART
      Написал вот такой кодик по примерам:

      #define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> //макросы вычисления скорости #define BAUD 19200 #define UBRR_VAL F_CPU/8/BAUD-1 void usart_init(unsigned int speed) { // устанавливаем скорость Baud Rate: 9600 UBRRH=(char)(speed>>8); UBRRL=(char) speed; UCSRA=0x00; UCSRB|=(1<<RXEN);// Разрешение работы приемника UCSRB|=(1<<TXEN); //Разрешение работы передатчика UCSRB|=(1<<RXCIE);// Разрешение прерываний по приему // Установка формата посылки: 8 бит данных, 1 стоп-бит UCSRC=(1<<UCSZ1)|(1<<UCSZ0); } //выводим принятый байт на порт ISR(USART0_RX_vect) { PORTB=UDR; _delay_ms(100); UDR = PORTB; // "ЭХО" } int main(void) { usart_init(UBRR_VAL);//инициализация модуля sei(); DDRB= 0b11111111; //вывод на все пины порта B while(1); { }
      Цель текущего кода: принять и отправить по прерыванию. Пробовал тестить в протеусе, что то неочень получается. данные приходят но криво. Приколы с таблицой ASCII я уже просек, поэтому пробовал отправлять с зажатым альтом цифры. Результат неутешил.
      Конечный код должен принимать подряд 2 байта, где 1- содержит ИД устройства , если BlockID == 1 байту (где BlockID - const), то второй байт кидаем на PORTB
      Главный вопрос, работает ли мой код и как принимать подряд 2 байта в одном прерывании??
      Пишу в Atmel Studio 7
      Баудрэйт 19200 бод
      Частота мк 8МГц
×
×
  • Create New...