Jump to content

Recommended Posts

Фигня получается. Но! Вполне возможно, что так используется выход - т.е. в "1" состоянии выход просто отключен, а когда нужно установить его в "0" просто вывод переключается на выход, а в регистре там уже занесен "0".

Share this post


Link to post
Share on other sites

правильно будет

sbi DDRB,0

бит в порте означает работу на вход-выход. 1-выход, 0-вход. Если в DDRX бит установлен в 0 (вход) то установка PortX в 1 включает подтягивающий резистор (ок 50к) к питанию, установка в 0 - отключает его. Значение лог. уровня на выводе можно получить читая PinX. Если порт работает на выход (DDRX = 1) то лог. уровень на нем определяется значением PortX (если PortX = 1 то высокий уровень и наоборот). Установка и чтение PinX ничего не изменят.

DDRX, PortX и PinX - 3 регистра любого доступного порта. установка DDRX=1 на самом деле не сработает, этим я хотел нагляднее показать установку интересующего нас БИТА в данном регистре. Например запись

ldi r16,0b01010101

out DDRB,r16

ldi r16,0b00110011

out PortB,r16

in r16,PinB

выставит выводы PB0 и PB4 на выход с высоким лог уровнем, выводы PB1 и PB5 как вход с подтягивающими резисторами, выводы PB2 и PB6 как выходы с низким лог уровнем, а выводы PB3 и PB7 как входы в 3-м состоянии (с максимальным входным сопротивлением). При этом в r16 будет 0bX0X1X0X1, где Х - лог уровень, установленный внешней схемой на соответствующих выводах.

Причем тут нагрев?

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

Есть допустимая температура и время пайки термопада. Указана в даташите.

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

Share this post


Link to post
Share on other sites

Добрый день.

До этого момента с контроллерами не разу не стакивался. По этому и справшиваю.

Решил собрать схемку генерации шим синуса. В ней применен контроллер atmega. Прошивки ка как таковой нет - но есть табличка с программой.

Собственно вопрос - как из таблички соорудить прошивку? Может кто поможет с этим? Или хотябы объяснит что к чему.

Табличку прилагаю.

И возможно ли применение вместо at90s231310pi такого контроллера ATTINY2313V-10PU, (ATTINY2313-10PI)?

post-95607-080842500 1288254519_thumb.jpg

Edited by gelogen

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

AT90 менять на ATTINY без адаптации программы нельзя - есть незначительные но существенные различия при инициализации встроенных модулей, особенно это касается битов конфигурации контроллера.

Табличка... хм, это не табличка а исходный код программы. Его надо ввести в компилятор и скомпилировать программу, при отсутствии ошибок получишь HEX-файл прошивки.

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

Share this post


Link to post
Share on other sites

AT90S2313 на ATTINY2313 менять на уровне бинарника можно. Вот обратно может не получиться.

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

Выбор подходящего элемента питания, способного обеспечивать требуемый уровень напряжения и выдавать необходимый ток на протяжении всего периода эксплуатации беспроводной пожарно-охранной системы является одной из первостепенных задач. Наиболее подходящим для этих целей элементом являются литий-тионилхлоридные элементы питания, а одним из наиболее конкурентоспособных производителей – компания Fanso, предлагающая своим клиентам продукты как универсальные, так и разработанные специально для решения конкретных задач.

Подробнее...

Не всегда, там есть особенности при инициализации. А дальнейший код конечно работать будет.

Share this post


Link to post
Share on other sites

Можно пример?

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

Share this post


Link to post
Share on other sites

Не могу разобраться как работать с модулем USI tiny2313.

В даташите сказано, что запись еденицы в бит USICLK регистра USCR вызовет сдвиг информации в рег-ре данных (USIDR) на одну позицию и 7-ой бит появится на выводе,

а запись еденицы в бит USITC того же регистра, переключение значения тактового сигнала

Ни того ни другого почему то не происходит, что я делаю не так?

post-6787-018696200 1288361563_thumb.jpg

(этот небольшой кусочек специально сварганил, стобы разобраться как USI работает. В железе естественно не

проверял, только в AVR Studio)

Edited by malecdima

Share this post


Link to post
Share on other sites

Посмотри в даташите насчет этого, может что еще надо включить или проинициализировать?

Share this post


Link to post
Share on other sites

Посмотри в даташите насчет этого, может что еще надо включить или проинициализировать?

Да уже не раз перечитывал... (

Share this post


Link to post
Share on other sites

Именно эту статью я и читал ) (она есть в книге Белова "Самоучитель разработчика устройств на AVR", там в конце

есть преведенный даташит на tiny2313)

Share this post


Link to post
Share on other sites

Спасибо за разьяснение. Файлик переделал в текстовый. Выкладываю. Надеюсь, с Ввашей помощью, получится сделать из него прошивку под ATTINY2313V-10PU или ATTINY2313-10PI.

sinus.rar

Edited by gelogen

Share this post


Link to post
Share on other sites

Лови скомпиленый под АТТИНИ2313, только когда прошивать будешь, выставляй в программаторе биты конфигурации правильно - в исходнике их нет.

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

только в ТИНИ2313 биты немного отличаются, надо внимательней.

sinus.zip

Edited by Alexeyslav

Share this post


Link to post
Share on other sites

Какие команды могут работать с регистрами r0-r15 AVR? Например почему команда CBR (Сброс разряда(ов)РОН) не работает?

AVR при асемблировании пишет Ошибка: инвалид регистр

Share this post


Link to post
Share on other sites

Потому что в коде машинного слова на некоторых командах не хватило разряда на адресацию всех регистров - некоторые команды работают только с определенной половиной регистров. эти половины - r0-r15 и r16-r31 ... вот такие вот пирожки.

Кроме команды LDI существуют и другие, на которые действует это запрещение относительно классов регистров:

-ANDI Rx, K; (Logical AND with Immediate) Побитовое логическое И регистра Rx и постоянного значения К,

-CBR Rx, M; (Clear Bits in Register) Стереть биты регистра Rx, определенные постоянной маской М,

-CPI Rx, K; (Compare with Immediate) Сравнить содержимое регистра Rx с постоянным значением K,

-SBCI Rx, K; (Subtract Immediate with Carry) Вычитать константу К и текущее значение флага переноса из содержимого регистра Rx и сохранить результат в регистр Rx,

-SBR Rx, M; (Set Bits in Register) Установить значения битов регистра Rx, указанных в маске М, равными 1,

-SER Rx; (Set all bits in Register) Установить все биты регистра Rx, равными 1 (соотв. LDI Rx, 255),

-SUBI Rx, K; (Subtract Immediate) Вычитать константу К из содержимого регистра Rx и сохранить результат в регистр Rx.

В этих командах регистры должны использоваться только с R16 по R31 (Верхняя группа).

Share this post


Link to post
Share on other sites

Я конечно не против помощи. но не стал отвечать на Ваш вопрос потому что все это расписано и разжёвана к документации к ассемблеру AVR

Share this post


Link to post
Share on other sites

Я конечно не против помощи. но не стал отвечать на Ваш вопрос потому что все это расписано и разжёвана к документации к ассемблеру AVR

Хорошо, теперь буду иметь ввиду!

Share this post


Link to post
Share on other sites

А AVR Studio "знает", что в режиме "ШИМ, корректный по фазе и частоте" таймера/счетчика Т1 (tiny2313), регистр OCR1A должен обновляться только при достижении счетчиком нуля?

Потому что в Studio OSR1A обновляется сразу при подаче команды, а счетный рег-р в этот момент нулю не равен?

Share this post


Link to post
Share on other sites

Лови скомпиленый под АТТИНИ2313, только когда прошивать будешь, выставляй в программаторе биты конфигурации правильно - в исходнике их нет.

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

только в ТИНИ2313 биты немного отличаются, надо внимательней.

ШИМ из Схемотехники за янв.06г :)

эта прошивка пойдет под attiny 2313-20 (если внешний кристал будет 10mhz) другие версии attiny 2313 на 10mhz работать не будут)

программируем с девайсом на базе пони-прога

не забываем везде снять галки (с 8mhz), кроме:

SPIEN - если галки не будет, через SPI уже ничего не сделаешь;

SUT0, CKSEL0,1,3 = по умолчанию 8mhz)

как по ссылке:

http://www.engbedded.com/cgi-bin/fcx.cgi?P_PREV=ATtiny2313&P=ATtiny2313&M_LOW_0x3F=0x24&M_HIGH_0x0E=0x0E&M_HIGH_0x20=0x00&B_CKDIV8=P&B_SPIEN=P&B_SUT0=P&B_CKSEL3=P&B_CKSEL1=P&B_CKSEL0=P&V_LOW=64&V_HIGH=DF&V_EXTENDED=FF

или выбираешь внешний 10mhz, все там же по ссылке и зашиваешь, если неправильно установишь SPIEN или клокинг, поней будет бессмыслено работать :)

Share this post


Link to post
Share on other sites

Хочу в своем девайсе при помощи ШИМа управлять скоростью вращения куллера, возникли пара вопросов:

1. Нужно ли использовать фильтр для преобразования импульсного сигнала ШИМ в аналоговый? Или не обязательно

2. Как расчитать какая частота ШИМ нужна, чтобы на куллере было, например, 1/2 напряжения питания, 1/3 и т.д.

Edited by malecdima

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. 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...

  • Similar Content

    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • Guest Денис
      By Guest Денис
      В общем, есть такое чудо китайской техники (фото)
      Что оно может:
      1. Заряжаться через microUSB порт
      2. Кнопка вкл/выкл, она же переключает режимы
      3. 3 режима свечения светодиода (он светит разными цветами)
      Что я хочу сделать:
      1. Пункты 1 и 2 выше
      2. Разнообразить количество режимов, переливание статичный цвет и тд...
      Вопрос: как это сделать? что купить?

      P.S. К сожалению, в гугле не нашел подробной инструкции, а я в электронике я дуб дубом


    • By Reptile
      Доброго времени суток. Пытаюсь восстановить работоспособность колонок Top Device TDE 261/2.1. Колонки не раз ремонтировалась по части УНЧ, при очередном ремонте по ошибке (одинаковые разъемы) с трансформатора было подано переменное питающее напряжение на входы (разъем AUX/MP3) аудиопроцессора PT2313L  (3,10,14 ноги - AGND, R_IN2 L_IN2). В результате чего выгорел сам аудиопроцессор PT2313L. PT2313L был заменен. Но колонка по прежнему не запускается. Как я понял, не запускается сам PT2313L, на его аудиовыходах (ноги 24, 25) сигнала нет. Передняя панель работает: индикация, кнопки, енкодер. Имеется подозрение, что вместе с процессором выгорели линии DATA и/или CLK на MCU, так как MCU и PT2313L соединены по этим линиям напрямую друг с другом. В МК и всей этой цифровой штуке не очень шарю, не знаю, как грамотно проверить работоспособность этой цифровой части, поэтому прошу помощи - Возможно ли какими-либо способами восстановить колонку или уже всё... 
      Из приборов, к сожалению, только мультиметр, осциллограф отсутствует.
      Ниже немного измерений.
      Напряжения на линиях: STD-BY-ждущий режим (в скобках рабочий режим):
      DATA - 2.31В (1.9В).
      CLK - 0.125В (0.135В).
      Сопротивление между выводами:
      CLK_MCU-DATA_MCU - 47 Ом. 
      CLK_MCU/DATA_MCU-GND - около 0.22 Ом и там и там. Звонится в обе стороны.
      Питание MCU 5В, (4.6В STD-BY-ждущий режим, 4.0В рабочий режим и со временем также почему-то может падать до 3.6В)
      MCU - не известен, нет маркировки. 18 Выводов, DIP.
      Ноги MCU, которые удалось опознать:
      1 - DATA
      18 - CLK
      3 - GND (?)
      5 - GND (?)
      ? - они соединены вместе
      14 - VCC
      17 - not used (n/a)
      15, 16 - OSC
      ET6202 - управление индикатором, Control LED drive circuit
      Фото плат (под сполером) и даташиты прилагаются.
      Схемы данных колонок не имеется. Все что удалось найти это схема чуть более старшей модели TDE280/2.1, с данными колонками она мало что общего имеет, лишь общий принцип, узлы довольно сильно отличаются, но прикреплю на всякий, для общей информации.
      PT2313L
      ET6202
      TDE280
       
    • By bustamax
      Привет хочу сделать лазерный проектор по типу элт монитора. Из vga разъёма выходят 2 Синала срочной и кадровой развёртки. Со строчной разобрался. Вопрос по кадровой. Она будет реализована с помощью гальванометра который после каждой строки отклоняет зеркало на какой то угол ( пускай строк 480 тогда если взять напряжение управления гальво от 0 до 10 вольт и шаг задать 0,01 в - будет 1000 строк) даже если строк будет 720 в 1000 они уместятся.
      Так вот принцип придумал такой - с выхода Hsync поступает сигнал строки - микросхема прибавляет пускай напряжение +0,01 вольт, затем поступает 2й сигнал от Hsync микросхема прибавляет ещё 0,01 вольт ( напряжение 0,02) наш гальво отклонился уже до 3й строки и так далее пока не поступит сигнал VSYNC о смене кадра - Гальво возвращается в 0.
      Хотя правильней вот так:
      Либо сделать что бы гальво двигался при отсутствии сигнала Hsync - скажем поступает сигнал строчной развёртки отрабатывает строчная развертка затем сигнал становится логическим 0 и тут срабатывает гальво и т.д пока не придёт сигнал от vsync (логическая 1).
       
      по факту схема даж считать не должна - есть сигнал прибавляем есть другой сигнал сбрасываем
       Я в электронике логический 0 но спаять по приведённой схеме смогу)
      если кто поможет спасибо
       
       
×
×
  • Create New...