Фрикер Клуб
 

Вернуться   Фрикер Клуб > Основной раздел > Песочница-2

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 21.06.2016, 15:17   #31
rz6his
Вступил в клуб
 
Регистрация: 18.12.2014
Сообщений: 21
По умолчанию Re: Эмулятор брелка

Не могу записать код 998,помогите!
rz6his вне форума   Ответить с цитированием
Старый 21.06.2016, 15:39   #32
Бурый
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 509
По умолчанию Re: Эмулятор брелка

Цитата:
Сообщение от rz6his
Не могу записать код 998,помогите!

0x03E6. Или я что-то недопонимаю?
__________________
Планировалось сделать "устройство"...и снова получились часы. Бой курантов тревожит двор)
Бурый вне форума   Ответить с цитированием
Старый 21.06.2016, 17:03   #33
rz6his
Вступил в клуб
 
Регистрация: 18.12.2014
Сообщений: 21
По умолчанию Re: Эмулятор брелка

как это будет сдесь?
{ 0x02, 0x12, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 4 paket каме12
в место 0x12 и 0x30 пишется 0x02 и 0x29 (это 553 в hex формате)

Добавлено через 37 минут
Господа!Прошу прощения,у нас сегодня жара за 30 градусов,видимо я перегрелся и что-то не то делал,все прописал,зашил.Прошу прощения за беспокойство.

Последний раз редактировалось rz6his; 21.06.2016 в 16:28.
rz6his вне форума   Ответить с цитированием
Старый 22.06.2016, 08:36   #34
rz6his
Вступил в клуб
 
Регистрация: 18.12.2014
Сообщений: 21
По умолчанию Re: Эмулятор брелка

[QUOTE=rz6his;42250]как это будет сдесь?
{ 0x02, 0x12, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 4 paket каме12
в место 0x12 и 0x30 пишется 0x02 и 0x29 (это 553 в hex формате)

Хотелось-бы добавить,инфа для "песочников" 553 в hex будет 0х22,0х90.А 998 0х3Е,0Х60.Хотя мне советовали как выше.
rz6his вне форума   Ответить с цитированием
Старый 25.09.2016, 18:41   #35
dreamwait
Вступил в клуб
 
Регистрация: 11.11.2015
Сообщений: 82
По умолчанию Re: Эмулятор брелка

Может кто перекинуть этот код на тину13 - пусть даже с уменьшением количества кнопок или потерей универсальности? Сам пробовал - но пока не очень получается...
dreamwait вне форума   Ответить с цитированием
Старый 25.09.2016, 20:26   #36
Paul74s
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 584
По умолчанию Re: Эмулятор брелка

А в чем сложность, 5 ног: 1 на передатчик и 4 на кнопки. Пишешь проци выброса они не очень большие и в память записываеш коды для выброса.
сложность только с энергосбережением, но можно на крайняк выключатель питания поставить, или между нажатий пронижать частоту до 32кГц.
Paul74s вне форума   Ответить с цитированием
Старый 25.09.2016, 20:50   #37
dreamwait
Вступил в клуб
 
Регистрация: 11.11.2015
Сообщений: 82
По умолчанию Re: Эмулятор брелка

Вопрос собственно в том, влезет или нет (был уже печальный опыт) - на асме не осилю, на си пока не получается - я программист по недоразумению . Сделать естественно хочу с засыпанием и "воскрешением" от нажатия кнопки - а иначе смысл? тини2131 просто не нравится размером... На пик 16f683 без заморочек получится перекомпилить? Странные вопросы от того, что у нас чего надо или нет, или просят как за чугунный мост. Соответственно, приходится адаптировать под доступное...
dreamwait вне форума   Ответить с цитированием
Старый 26.09.2016, 09:15   #38
Paul74s
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 584
По умолчанию Re: Эмулятор брелка

Если будеш писать на Ардуино, то точно не влезет, а если не ченить типа CVAVR, то вполне можно уместь
Paul74s вне форума   Ответить с цитированием
Старый 26.09.2016, 14:41   #39
Kurs
Вступил в клуб
 
Аватар для Kurs
 
Регистрация: 02.06.2012
Сообщений: 70
По умолчанию Re: Эмулятор брелка

Цитата:
Сообщение от Paul74s
Если будеш писать на Ардуино, то точно не влезет, а если не ченить типа CVAVR, то вполне можно уместь

С Arduino только на одну команду с засыпанием 876 байт, если просто ногой дёргать
Вложения
Тип файла: rar Видео_2016-09-26_145937.rar (1.20 Мб, 68 просмотров)
Kurs вне форума   Ответить с цитированием
Старый 26.09.2016, 21:37   #40
Paul74s
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 584
По умолчанию Re: Эмулятор брелка

Вот накидал примитивную выбрасывалку посылок на 4 кнопках в форматах Keeloq, Starline, Came, занимает 730 байт (71,3% флеша АТтини13), скомпилирована в CVAVR 3.14 без сна конечно, думаю что в 294 байта вполне можно уложит сон. Причем добавление к любой кнопке выброса дополнительной посылки приводит к увеличению программы на 4 байта на команду и N-байт на саму посылку.
В железе не проверял, только в протеусе, но в протеусе анализатор (который воплощен в железе) посылки ловит.
Код:
/*This program was created by the CodeWizardAVR V3.14 Advanced Automatic Program Generator

Chip type               : ATtiny13
AVR Core Clock frequency: 9,600000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 16
*******************************************************/

#include <tiny13.h>
#include <delay.h>

#define TX_AM PORTB.2
#define KEY1  !PINB.0
#define KEY2  !PINB.1
#define KEY3  !PINB.3
#define KEY4  !PINB.4

flash unsigned char set_bit_levo[8] ={ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };

flash unsigned char p_keeloq[2][8]={
   { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 },
   { 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00 }
};
flash unsigned char p_starline[2][8]={
   { 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00 }
   { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 },
};
flash unsigned int p_came[2]={ 0x0123, 0x0456 };

/////////////////////////////////////////////////////////////////////////////////////////////
void send_keeloq(unsigned char num_p) {
  unsigned char sp, sb;
  for (sb=0; sb<6; sb++) {
    for (sp=0; sp<12; sp++) { 
      TX_AM=1; delay_us(400); TX_AM=0; delay_us(400);
    }
    delay_ms(3); delay_us(600);
    for (sp=0; sp<64; sp++) {
      TX_AM=1; delay_us(400);
      if ( (p_keeloq[num_p][sp/8] & set_bit_levo[sp%8]) ) { 
        TX_AM=0;
      }
      delay_us(400); TX_AM=0; delay_us(400);
    }
    delay_ms(15); 
  }
}
/////////////////////////////////////////////////////////////////////////////////////////////
void send_starline(unsigned char num_p) {
  unsigned char sp, sb;
  for (sb=0; sb<10; sb++) {
    for (sp=0; sp<16; sp++) { 
      TX_AM=1; delay_ms(1); TX_AM=0; delay_ms(1);
    }
    for (sp=0; sp<64; sp++) {
      if ( (p_starline[num_p][sp/8] & set_bit_levo[sp%8])==0 ) { // эта и следующая строка выполняют одну и туже функцию,
      //if ( ((p_starline[num_p][sp/8]>>(sp%8))&1)==0 ) {  // но эта конструкция на 74 байта больше предыдущей, минус массив 8 байт, итого на 66 байт
        TX_AM=1; delay_us(250); TX_AM=0; delay_us(250);
      } else {
        TX_AM=1; delay_us(500); TX_AM=0; delay_us(500);
      }
    }
  }
}
/////////////////////////////////////////////////////////////////////////////////////////////
void send_came (unsigned int c) {
  unsigned char a;
  unsigned int mask;
  c|=0x1000; 
  for (a=0; a<3; a++) {
    mask=0x1000;
    delay_ms(10);
    while (mask) {
      delay_us(320); 
      if ((c&mask)==0) TX_AM=1; 
      delay_us(320);
      TX_AM=1;
      delay_us(320);
      TX_AM=0;
      mask=mask>>1;
    }
  }
}

////////////////////////////////////////////////////////////////////////////////////////
void main(void) {
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=Out Bit1=In Bit0=In 
// State: Bit5=P Bit4=P Bit3=P Bit2=0 Bit1=P Bit0=P 
DDRB =0b00000100;
PORTB=0b00111011;

// Timer/Counter 0 initialization
TCCR0A=0; TCCR0B=0; TCNT0=0; OCR0A=0; OCR0B=0;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0;
// External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: Off
GIMSK=0; MCUCR=0;
// Analog Comparator initialization // Analog Comparator: Off
ACSR=(1<<ACD); // перестановка этой строки после ADCSRA=0; экономит еще 2 байта
ADCSRB=0; DIDR0=0;
// ADC initialization // ADC disabled
ADCSRA=0;

  while (1) {
    if (KEY1) {
      send_came(p_came[0]);
      delay_ms(200);
    }
    if (KEY2) { 
      send_came(p_came[1]);
      delay_ms(200);
    }
    if (KEY3) {
      send_keeloq(0);
      delay_ms(200);
      send_keeloq(1);
      delay_ms(200);
    }
    if (KEY4) {
      send_starline(0);
      delay_ms(200);
      send_starline(1);
      delay_ms(200);
    }

  }
}
Paul74s вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 16:15. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com