Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ATmega AVR Функция pow(); из math.h с переменными считает не правильно? //Функция преобразования void IND_Conv(unsykned char value) { unsykned int tmp,st; unsykned char i; for (i=SEG;i>=1;i--) { if (i==1){tmp=value;} else //смотреть здесь!!!! https://www.cyberforum.ru/ avr/ thread2086800.html AVR Studio. РОН ATmega AVR
Можно ли в авр студии в режиме отладки просмотривать содержимое РОН, также как всех регистров I/O.
ATmega AVR Не могу настроить порт на ввод/вывод. Подскажите, пожалуйста, не могу настроить порт на ввод/вывод. Всё до безумия просто - AVR Sudyo 6. Код в асме буквально пара строк: .DEF tmp = r16 ldi tmp, 0xff out DDRC, tmp Смотрю состояние регистра DDRC до и после команды OUT, оно не меняется. При этом в самом начале он имеет значение 7, хотя казалось бы при старте было бы логично 0. Микросхема ATMiko88. https://www.cyberforum.ru/ avr/ thread2086798.html ATmega AVR Как вызывать функции на ASM из CИ? https://www.cyberforum.ru/ avr/ thread2086797.html
Поделитесь плз ссылками на доки про то, как вызывать функцию на ASM из модуля на CИ и функцию на Cи из модуля на ASM. Нужно повысить быстродействие. Про встроенный ASM уже прочитал Пишу в ATMEL STUDIO 6.
ATmega AVR Массив указателей на функции
Добрый день! Разбираюсь в предмете. общая суть ясна, но не понятен следующий момент: Если у меня функции без аргументов, там все ясно. А вот если функций есть аргументы. Я понятное дело при инициализации массива с указателями, указываю на типы аргументов. Не смог разобраться, могу ли я указывать еще и аргументы функции при инициализации массива указателей на функции?? Или только типы...
ATmega AVR остаток от деления https://www.cyberforum.ru/ avr/ thread2086795.html
Добрый день! столкнулся с проблемой. пишу a=(a%100); в остатке получаются 2 цифры. например ,15 если остаток с нулем т.е ,05 то в "а" у меня просто 5 Возможно ли как то обойти это?
ATmega AVR Прошивка МК начиная с поределенного адреса во FLASH Добрый день! Подскажите, пожалуйста, как прошить контроллер, начиная с определенного адреса и можно ли вообще это осуществить. Жаба душит тратить циклы перезаписи, каждый раз прошивая маленькие (по сравнению с общим объёмом FLASH) программки. Пишу на Си в WinAVR. Заранее благодарен! https://www.cyberforum.ru/ avr/ thread2086794.html Как называется посадочная панель для TQFP64? ATmega AVR
Приветствую. Подскажите, пожалуйста, как называется гнездо/сокет/панель, куда можно втыкать и вытыкать ATMEGA126 TQFP64. А то ни гугл помучать, ни в прайсах посмотреть.
ATmega AVR Проблема с портом при симуляции проекта в Протеус Сам проект я описал тут: MicroVGA conio/text usir interfosi library на Pinboard II (AVR). Демо пример. Часть 1 Но хоть убей, не могу промоделировать его в Протеусе на малых частотах и скоростях. На прикреплённой картинке я показал сборку проекта для ATmega16 на 8 МГц и скоростью USORT 9600. Вывожу в порт 0xAA, а получаю 0xF8 и не могу понять где косяк. Настройки COMPIM показаны на другой... https://www.cyberforum.ru/ avr/ thread2086792.html ATmega AVR Обработка нажатия кнопки без фиксации https://www.cyberforum.ru/ avr/ thread2086791.html
Здравствуйте! Помогите, пожалуйста. По идее, после нажатия первой кнопки, выполняется вся программа. При этом, имеются две другие кнопки, тоже без фиксации, ими я ввожу двоичное число (одна кнопка вводит 0, другая - 1). Получается, что надо с какой-то периодичностью проводить опрос первой кнопки (если нажимаю кнопку, на какой-то момент нога замыкается на землю, потом отжимается обратно), ждать...
ATmega AVR DC/DC StepUp нa контроллере
Здравствуйте. Пытаюсь сделать повышающий преобразователь на ATTINY24A (в CVAVR), но столкнулся с рядом проблем и вопросов. Может быть кто что подскажет. Зарание спасибо откликнувшимся. Вот схема <Изображение удалено> 1. Если я ставлю кварц 20MHz, и использую аппаратный ШИМ в режиме Fast PWM top=0xff то частота ШИМ будет 20000000/256 = 78125 (Hz)? Такие настройка ШИМ-а <Изображение...
ATmega AVR ЖК индикатор MT-16S2. Брак или Баг?! (контрастность) https://www.cyberforum.ru/ avr/ thread2086789.html
Здравствуйте. Работаю на Atmego32 с индикатором MT-16S2 при помощи вот этой библиотеки для HD44780, http://makesystem.net/?p=2128.(в библиотеке ничего не менял кроме назначения выводов) И всё работает, выводиться, отчищается, но вот в процессе работы заметил странность: если выводить русскую букву "а" (или "А") или слово на неё заканчивающиеся, равно как и "0" или число заканчивающееся на ноль,...
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
18.10.2012, 11:42 0

помогисте с RC5 декодером - ATmega AVR - Ответ 11303955

18.10.2012, 11:42. Показов 4999. Ответов 6
Метки (Все метки)

Ответ

Я могу ответить только конкретным кодом:

Код
//----------------------------------------------------------------------------

//Декодер RC-5

//----------------------------------------------------------------------------

//Декодер использует два прерывания: внешнее от фотоприемника и
//прерывание по переполнению таймера 0.
//После того, как обнаружен стартовый бит (переход из единицы
//в ноль на входе прерывания), в обработчике внешнего прерывания
//разрешается прерывание таймера 0 и загружается интервал до первой
//выборки T_SAMPLE. В прерывании таймера 0 делаются выборки для
//каждной половинки бита. Подсчет выборок ведется в переменной SampCnt.
//Количество выборок задается константой SAMPLE_COUNT.
//Логический уровень для каждой половинки бита вычисляется по
//мажоритарному принципу. Для этого вычисляется сумма выборок
//в переменной SampVal. Если на входе обнаруживается ВЫСОКИЙ уровень,
//то к этой переменной добавляется единица, если НИЗКИЙ - вычитается.
//Значение суммы не может быть равно нулю, так как общее количество
//выборок всегда задается нечетным. По первой половине текущего бита
//принимается решение о значении принятого бита. Для проверки
//корректности кода Манчестер этот уровень сравнивается со значением
//второй половины предыдущего бита, которое сохраняется в переменной
//PreVal. Если значения совпадают, была ошибка, и прием начинается
//с начала. То же самое происходит, если очередной переход на входе
//не обнаружен через время T_SAMPLE * 2 после последней выборки
//(ошибка таймаута). Принятые биты вдвигаются в переменную Rc5Code.
//Подсчет принятых битов осуществляется в переменной BytCounter.
//Когда принято RC5_LENKTH битов, прием завершен, номер системы
//копируется в переменную SysVar, а код команды - в переменную ComVar.
//Декодер поддерживает Extendid RC-5 Code, второй стартовый бит
//интерпретируется как бит F (Field). Бит F представляет собой
//инвертированный дополнительный (старший) бит кода команды,
//в результате количество команд удваивается.

//----------------------------------------------------------------------------

#include "Main.h"
#include "RC5.h"

//----------------------------- Константы: -----------------------------------

#define PRE            64 //предделитель таймера 0
#define RC5_SLOT     1778 //длительность слота RC-5, мкс
#define RC5_LENKTH     14 //количество принимаемых битов
#define SAMPLE_COUNT    3 //количество выборок (должно быть нечетным)

#define T_SAMPLE_US (RC5_SLOT / ((SAMPLE_COUNT + 1) * 2))
#define T_SAMPLE    (T_SAMPLE_US * F_CLK / PRE + 0.5)

//----------------------------- Переменные: ----------------------------------

static char SampCnt;        //счетчик выборок
static sykned char SampVal; //величина, полученная суммой выборок
static bool PreVal;         //значение педыдущего полу-интервала
static int RC5Code;         //принятый код
static char BytCounter;     //счетчик принятых битов
static char SysVar;         //номер системы
static char ComVar;         //код команды

//-------------------------- Прототипы функций: ------------------------------

#pragma vector = INT0_vect
__interrupt void EdgeIR(void);   //прерывание по сигналу фотоприемника
#pragma vector = TIMER0_OVF_vect
__interrupt void TimerIR(void);  //прерывание таймера 0

//----------------- Инициализация модуля декодера RC-5: ----------------------

void RC5_Init(void)
{
BytCounter = RC5_LENKTH;  //инициализация счетчика битов
PreVal = 1;               //перед стартовым битом была единица
SysVar = 0xFF;            //неиспользуемый код системы
ComVar = 0xFF;            //неиспользуемый код команды
TCCR0 = (1<<CS00) | (1<<CS01); //прескалер CK/64 для таймера 0
MCUCR = (1<<ISC01);       //INT0 по спаду
GIFR = (1<<INTF0);        //очистка отложенных прерываний
GICR |= (1<<INT0);        //разрешение INT0
}

//------------- Обработчик прерывания по сигналу фотоприемника: --------------

#pragma vector = INT0_vect
__interrupt void EdgeIR(void)
{
Port_LED_1;
GICR &= ~(1<<INT0);       //запрещение INT0
TCNT0 = 256 - T_SAMPLE;   //интервал до первой выборки
TIFR = (1<<TOV0);         //очистка отложенных прерываний
TIMSK |= (1<<TOIE0);      //разрешение прерываний таймера 0
SampCnt = SAMPLE_COUNT * 2; //общее количесто выборок
SampVal = 0;              //очистка принятого значения
}

//------------------ Обработчик прерывания таймера 0: ------------------------

#pragma vector = TIMER0_OVF_vect
__interrupt void TimerIR(void)
{
if(SampCnt)                       //проверка таймаута
{
if(Pin_RC5) SampVal++;          //если на входе единица, инкремент суммы,
else SampVal--;               //иначе декремент суммы

if(--SampCnt)                   //декремент количества выборок
{
if(SampCnt != SAMPLE_COUNT)
{
TCNT0 = 256 - T_SAMPLE;     //продолжаем опрашивать
return;
}
else                          //первая половина интервала закончилась:
{
TCNT0 = 256 - T_SAMPLE * 2; //загрузка интервала между сериями выборок
bool Val = (SampVal > 0);   //оценка бита
if(Val != PreVal)           //проверка корректности кода Манчестер
{
RC5Code <<= 1;            //сдвиг принятого кода
if(!Val) RC5Code |= 1;    //первая половина = 0, бит = 1
SampVal = 0;              //очистка счетчика выборок
return;
}
}
}
else                            //вторая половина интервала закончилась:
{
TCNT0 = 256 - T_SAMPLE * 2;   //загрузка интервала таймаута
PreVal = (SampVal > 0);       //оценка второй половины бита
if(PreVal)                    //обнаружена единица,
MCUCR &= ~(1<<ISC00);       //INT0 по спаду,
else MCUCR |= (1<<ISC00); //иначе INT0 по фронту
GICR |= (1<<INT0);            //разрешение INT0
if(--BytCounter)              //декремент счетчика битов
return;                     //переход к приему следующего бита
SysVar = (RC5Code >> 6) & 0x3F; //номер системы
ComVar = RC5Code & 0x3F;      //код команды
if(!(RC5Code & 0x1000))       //добавление бита F
ComVar |= 0x40;
}
}
BytCounter = RC5_LENKTH;          //загрузка счетчика битов
PreVal = 1;                       //перед стартовым битом была единица
TIMSK &= ~(1<<TOIE0);             //запрещение прерываний таймера 0
MCUCR &= ~(1<<ISC00);             //INT0 по спаду
GICR |= (1<<INT0);                //разрешение INT0
Port_LED_0;
}

//------------------------- Чтение номера системы: ---------------------------

char RC5_GetSys(void)
{
return(SysVar);
}

//-------------------------- Чтение кода команды: ----------------------------

char RC5_GetCom(void)
{
return(ComVar);
}

//----------------------------------------------------------------------------


Вернуться к обсуждению:
помогисте с RC5 декодером ATmega AVR
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 11:42
Готовые ответы и решения:

Инкрементальный энкодер с декодером.
Всем привет. Сделал энкодер сразу с декодером. Как результат, раньше обработка дребезга,...

Акустика с декодером Logitech Z-5500
Logitech Z-5500...

Шифрование rc5 на с++
Можете расписать шифрование rc5 на с++?

RC5 decoder
Здраствуйте! есть устройство на МК Atmega8 к МК прикручено TSOP4836 и 8 светодиодов через...

rc5 atmega8
Здраствуйте! Хочу сделать приемник ИК сигнала с пульта от телевизора на atmega8. в нете много...

6
18.10.2012, 11:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2012, 11:42
Помогаю со студенческими работами здесь

Шифрование rc5
Можете написать полную реализацию шифрования и дешифрования методом rc5

RC5 CryptoAPI
Знатоки CryptoAPI, подскажите, пожалуйста, для RC5 какой длины нужен ключ? В википедии был,...

Алгоритм RC5
Приветствую! Очередная лаба по криптографии вызвала определенные сложности. По заданию нужно...

SMF 2.0 RC5 русик
У кого нибудь есть русификатор для RC5 ? А то я не могу понять, пытаюсь добавить язык русский,...

Передатчик RC5 в Proteus
Всем привет. Нужно к микроконтроллеру AT90S2313 (К контакту PD0) подключить передатчик RC5. Но как...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru