Разрабатываю небольшой проектик на mega8 с использование rc-5 протокола, а в протеусе не могу полноценно его проверить, приходится постоянно на рабочем железе тестить, у меня уже одна микросхемка от количества прошивок нагнулась , вот и хотелось какимто образом ето протестить без таких побочных действий. Програмировать начал не так давно, поэтому много чево еще не знаю.
Помогите пожалуйста сэмулировать rc-5 пультик в протеусе, может быть у кого есть уже готовый элемент в библиотеку, буду очень благодарен за помощь.
Arduino 300 рублей писал(а):Добавьте на схему еще МК который будет симулировать то что вам надо.
+5
я так отлаживал 1-wire-slave: прилепил прямо в демо-проект (который идет с протеусом для 1-wire сети) свой МК с поддержкой 1-wire-slave-mode и смотрел, как он определяется и т.п.
обалденно удобно!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Я для генерации кодов rc-5, не мучаясь долго, натыкал несколько SCRIPTABLE GENERATOR с разными командами (через выключатели). Подключая любой - получаю код нужной мне кнопки. Конечно, если требуется вся "клавиатура", да ещё и учитывать toggle-бит, то лучше будет имитировать пульт на какой-нить меге.
З.Ы. Этот код вроде даёт большие паузы между посылками, не по стандарту, но мне лень исправлять Также, может потребоваться инверсия сигнала, но это легко исправляется.
REM Enter the generator script here.
REM N.B. The output is called 'OUT',
// настроить на нужную команду
INT TOGGLE = 1
INT ADDRESS = 0
INT COMMAND = 0
//Constant bit time of 1.778ms (64 cycles of 36 kHz)
FLOAT BITTIME = 0.889m
INT j
//
//"1"
// OUT = 0
// SLEEP FOR BITTIME
// OUT = 1
// SLEEP FOR BITTIME
//
//"0"
// OUT = 1
// SLEEP FOR BITTIME
// OUT = 0
// SLEEP FOR BITTIME
// Bit Bang a RC-5
// 2 Start bit
OUT = 0
SLEEP FOR BITTIME * 128
START:
OUT = 0
SLEEP FOR BITTIME
OUT = 1
SLEEP FOR BITTIME
OUT = 0
SLEEP FOR BITTIME
OUT = 1
SLEEP FOR BITTIME
// 1 toggle bit
IF TOGGLE == 1 THEN
OUT = 0
SLEEP FOR BITTIME
OUT = 1
SLEEP FOR BITTIME
ELSE
OUT = 1
SLEEP FOR BITTIME
OUT = 0
SLEEP FOR BITTIME
ENDIF
// address bits
FOR j=0 TO 4
OUT = (ADDRESS & (1 << j)) == 0
SLEEP FOR BITTIME
OUT = (ADDRESS & (1 << j)) != 0
SLEEP FOR BITTIME
NEXT j
// commands bits
FOR j=0 TO 5
OUT = (COMMAND & (1 << j)) == 0
SLEEP FOR BITTIME
OUT = (COMMAND & (1 << j)) != 0
SLEEP FOR BITTIME
NEXT j
// Stop bit
OUT = 0
SLEEP FOR BITTIME * 128
GOTO START