Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
22.10.2013, 10:53
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Я знаю. Вы не поняли как делаю я. Я подсчитываю каждый импульс , это подсчитанное "время" сохраняю в память. А потом накладываю гистерезис при проверке.
Раньше, я брал уже ранее введенное время и сохранял не время каждого импульса а лог. уровень (если попали в интервал - значит единица) но этот метод хуже гораздо....
|
|
|
|
22.10.2013, 11:19
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Блин... уже голова пухнет....
Не пойму где накосячил. Некорректно пишутся или читаются данные в/с еепром 24С16....
Хочу уменьшить объем писанины, сделал так:
Код:
|
///======================= запись массива в блок ЕЕпром ====================================///
byte_block_cnt=0; // адрес блока
for(byte_mass=0; byte_mass‹7; byte_mass++) // Запись первой половины блока (одной команды ДУ)
{
eep_write_1byte_page(0xA2, byte_block_cnt, data_ir_eep0[byte_block_cnt]);
for(byte_mass1=1; byte_mass1‹16; byte_mass1++)
{
byte_block_cnt++;
eep_write_page(data_ir_eep0[byte_block_cnt]);
if(byte_block_cnt›99)
{
byte_mass1=16;
byte_mass=7;
byte_block_cnt=100;
}
}
byte_block_cnt++; // увеличиваем счетчик для исключения нахлеста данных
i2c_stop_();
delay_ms(20);
}
byte_block_cnt=100; // адрес блока
for(byte_mass=0; byte_mass‹7; byte_mass++) // Запись первой половины блока (одной команды ДУ)
{
eep_write_1byte_page(0xA2, byte_block_cnt, data_ir_eep1[byte_block_cnt-100]);
for(byte_mass1=1; byte_mass1‹16; byte_mass1++)
{
byte_block_cnt++;
eep_write_page(data_ir_eep1[byte_block_cnt-100]);
if(byte_block_cnt›99)
{
byte_mass1=16;
byte_mass=7;
byte_block_cnt=100;
}
}
byte_block_cnt++; // увеличиваем счетчик для исключения нахлеста данных
i2c_stop_();
delay_ms(20);
} |
Пишем 200 байт ....
Код:
|
///======================= чтение из блока ЕЕпром ====================================///
data_ir_eep0[0] = eep_read_(0xA2,0x00);
for(byte_mass=1; byte_mass‹100; byte_mass++)
{
data_ir_eep0[byte_mass] = eep_read_page();
}
for(byte_mass=0; byte_mass‹100; byte_mass++)
{
data_ir_eep1[byte_mass] = eep_read_page();
}
data_end_read = eep_read_page_end(); |
читаем 200 байт.
Кто со свежей головой , взгляните пожалуйста.
На вскидку, первая сотня читается / пишется вроде нормально, остальное - нет...
Последний раз редактировалось artyomugr; 22.10.2013 в 11:23.
|
|
|
|
22.10.2013, 12:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,354
Сказал спасибо: 85
Сказали Спасибо 610 раз(а) в 369 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Сообщение от artyomugr
|
На вскидку, первая сотня читается / пишется вроде нормально, остальное - нет..
|
Не вдавался в подробности, но размер страницы в 2416 сколько?
Может за раз пытаетесь больше 1-й страницы писать?
|
|
|
Сказали "Спасибо" pambaru
|
|
|
22.10.2013, 13:00
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Размер вроде 256 байт , всего 8 страниц.
Используется 200 байт каждой страницы , кроме первой и двух последних
Первой страницы использую около 20 байт.
|
|
|
|
22.10.2013, 13:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,354
Сказал спасибо: 85
Сказали Спасибо 610 раз(а) в 369 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Сообщение от artyomugr
|
Размер вроде 256 байт
|
Хм, не поленился заглянуть в дашит, для 2416:
16 byte page write mode
|
|
|
|
22.10.2013, 14:03
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
так страница , ясен пень 16 байт , я так и пишу. А блок - 256байт
Я неправильно выразился...
8 блоков по 16 страниц каждый блок.
Последний раз редактировалось artyomugr; 22.10.2013 в 14:05.
|
|
|
|
22.10.2013, 14:07
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Сейчас распечатал данные при записи и данные при чтении , разбираюсь где у меня массив съехал в сторону
|
|
|
|
22.10.2013, 17:39
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Я победил еепромину
Код:
|
///======================= запись массива в блок ЕЕпром ====================================///
byte_block_cnt=0; // адрес блока
for(byte_mass=0; byte_mass‹7; byte_mass++) // Запись первой половины блока (одной команды ДУ)
{
eep_write_1byte_page(0xA2, byte_block_cnt, data_ir_eep0[byte_block_cnt]);
for(byte_mass1=1; byte_mass1‹16; byte_mass1++)
{
byte_block_cnt++;
eep_write_page(data_ir_eep0[byte_block_cnt]);
}
byte_block_cnt++; // увеличиваем счетчик для исключения нахлеста данных
i2c_stop_();
delay_ms(20);
}
byte_block_cnt=0; // адрес блока
for(byte_mass=0; byte_mass‹7; byte_mass++) // Запись первой половины блока (одной команды ДУ)
{
eep_write_1byte_page(0xA2, (byte_block_cnt+112) , data_ir_eep1[byte_block_cnt]);
for(byte_mass1=1; byte_mass1‹16; byte_mass1++)
{
byte_block_cnt++;
eep_write_page(data_ir_eep1[byte_block_cnt]);
}
byte_block_cnt++; // увеличиваем счетчик для исключения нахлеста данных
i2c_stop_();
delay_ms(20);
} |
Пишем 224 байта
Код:
|
data_ir_eep0[0] = eep_read_(0xA2,0x00);
for(byte_mass=1; byte_mass‹=111; byte_mass++)
{
data_ir_eep0[byte_mass] = eep_read_page();
}
for(byte_mass=0; byte_mass‹=111; byte_mass++)
{
data_ir_eep1[byte_mass] = eep_read_page();
}
data_end_read = eep_read_page_end(); |
читаем 224 байта
Вот это компактный код.
Надо было всего-навсего читать/писать кратно 16
|
|
|
|
22.10.2013, 17:41
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Итого: одна команда весит 112 байт : )))
|
|
|
|
22.10.2013, 17:45
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Все что есть в хозяйстве пульты - дружат с декодером, а их у меня полтора десятка.
Даже пульт с кондиционера работает.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:21.
|
|