Доброго времени суток, захотелось мне сделать на мк однокнопочный пульт управления, считал код с нужной мне кнопки. Вышел такой "EF30CF" под тот что описан на ассемблере его не вставить, нашел под arduino код без бибилотек и под ним он работает, а вот под attiny переделать кроме смены ноги ничего не сделать не могу. Прошу у вас помощи, из кода подозреваю проблема в делеях Код из Arduino IDE Спойлер#include <avr/delay.h> #include <avr/io.h> #define IRLEDpin 3 //the arduino pin connected to IR LED to ground. HIGH=LED ON #define BITtime 562 //length of the carrier bit in microseconds //put your own code here - 4 bytes (ADDR1 | ADDR2 | COMMAND1 | COMMAND2) unsigned long IRcode=0b111011110011000011001111;
// SOME CODES: // Canon WL-D89 video remote START/STOP button = 0b11000001110001111100000000111111
void IRsetup(void) { pinMode(IRLEDpin, OUTPUT); digitalWrite(IRLEDpin, LOW); //turn off IR LED to start }
// Ouput the 38KHz carrier frequency for the required time in microseconds // This is timing critial and just do-able on an Arduino using the standard I/O functions. // If you are using interrupts, ensure they disabled for the duration. void IRcarrier(unsigned int IRtimemicroseconds) { for(int i=0; i < (IRtimemicroseconds / 26); i++) { digitalWrite(IRLEDpin, HIGH); //turn on the IR LED //NOTE: digitalWrite takes about 3.5us to execute, so we need to factor that into the timing. delayMicroseconds(9); //delay for 13us (9us + digitalWrite), half the carrier frequnecy digitalWrite(IRLEDpin, LOW); //turn off the IR LED delayMicroseconds(9); //delay for 13us (9us + digitalWrite), half the carrier frequnecy } }
//Sends the IR code in 4 byte NEC format void IRsendCode(unsigned long code) { //send the leading pulse IRcarrier(9000); //9ms of carrier delayMicroseconds(4500); //4.5ms of silence
//send the user defined 4 byte/32bit code for (int i=0; i<32; i++) //send all 4 bytes or 32 bits { IRcarrier(BITtime); //turn on the carrier for one bit time if (code & 0x80000000) //get the current bit by masking all but the MSB delayMicroseconds(3 * BITtime); //a HIGH is 3 bit time periods else delayMicroseconds(BITtime); //a LOW is only 1 bit time period code<<=1; //shift to the next bit for this byte } IRcarrier(BITtime); //send a single STOP bit. }
под arduino код без бибилотек и под ним он работает, а вот под attiny переделать
А кто запрещает ATiny13 на 16МГц запустить? А если очень хочется на более низкой частоте, то да, все задержки надо скурпулезно пересчитывать, выведя, предварительно, ассемблерыный листинг, чтобы учесть время на выполнение команд.
_________________ Не ошибается только то, кто ничего не делает. Тот, кто признает свои ошибки, на них учится. Глупец же, упорствуя в своих заблуждениях, остается глупцом.
я тоже делал,но на си,только вкл и отк телевизора,ниже просто перебор команд по кругу(адрес =2) Спойлер/*Chip type : ATtiny13A AVR Core Clock frequency: 4,800000 MHz Memory model : Tiny External RAM size : 0 Data Stack size : 16 *****************************************************/
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
_________________ Не ошибается только то, кто ничего не делает. Тот, кто признает свои ошибки, на них учится. Глупец же, упорствуя в своих заблуждениях, остается глупцом.
вы не поняли: тинька не имеет встроенных средств для тактирования с такой частотой. делать внешний тактовый генератор - это уже извращение, т.к. при любом раскладе и по размерам, и по цене будет больше тиньки. т.е. в этом случае разумнее брать не тиньку, а нечто иное... или хотя бы не тини13, а тини25/45 или вообще тини861
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
У меня возникает проблема только в том что во всех реализациях, код кнопки из 2 значных составляющих, в то время как у меня 6 знаков, в коде я могу разобраться Так же имеется tiny2313
я вам дал код,рабочий,он как раз для вашего случая у вас EF30CF первый байт EF -адрес устройства второй байт 30 -команда устройства(00110000) третий бай CF -команда устройства в инверсии(11001111)
Это не две и не шесть составляющих. Нековский протокол содержит 2 (в стандартном варианте) или 3 (в расширенном варианте) байта. В первом случае передается адрес, затем его инверсия, команда и ее инверсия, т.е. нужно только 2 байта. Во втором случае передают младший, затем старший байт адреса, затем команда и в конце ее инверсия. Всего 3 байта.
Сделал полгода назад с нуля код с целью автоматического захода в сервис меню и factory reset протокол у телика был как раз класический NEC там ATtiny24A
НО управление чисто софтовыми задержками . без таймеров а значит пойдет любой АVR c тактовой от 8мГц (возможно и 4 но тогда на пару процентов уйдут тайминги относительно стандартных) всего то нужно изменить дефайны #define LED_ON PORTB.0 =1; /// Пин куда подключен светодиод #define LED_OFF PORTB.0 =0;
Для наглядности в ходе тестов можно брать белый изи красный светодиод вблизи будет срабатывать .В конце поставить инфракрасный Адрес девайса можно узнать сторонними программами типа RCExplorer имея родной пульт в моем случае адрес 0x40 (одно из шасси Vestel)
Программа вне зависимости от состояния ТВ его вкключает ждет загрузку входит в сервис меню и делает фатори ресет
Пригодилось телевизор на чилдлок и не было пульта а команда входа в подменю специфическая/ нашел пербором в цикле если есть пульт хоть что-то делающий с аппаратом то можно узнать адрес с помощью RCexplorer
на порт обычный красный светик через 68 Ом . рядом работает
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения