Переопределение выходов и создание виртуального порта

Обсуждаем контроллеры компании Atmel.
Ответить
Ziper
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Сб июн 27, 2009 10:56:00

Переопределение выходов и создание виртуального порта

Сообщение Ziper »

Приветсвую любителей кошачьего семейства и электроники. :)
Обращаюсь я к вам за помощью так как попал в затруднительное положение первый раз столкнулся с такой задачей и не знаю как эффективно её реализовать.
Суть проблемы в чём, рассказываю. У меня есть автомобиль я сам за рулём ,так вот собрал я се как то такой забавный девайсес на Attiny2313 к контролеру подключались две RGB ленты в два канала одна лента подсвечивает панель приборов вторая лента отвечает за подсветку пола и находиться она под передними сиденьями управление цветом и яркостью каждого канала осуществляется с телефона через блютуз модуль (HC-05)подключенный к USART контролера.
Проработал у меня этот замечательный и очень нужный девайсесик (по другому его не как и не назовёшь)больше года на удивление всем кому я его демонстрировал все в восторге особенно девушкам очень нравится он а дружбанны говорят типа так > уууаааууу зделай мне так же.))) Во общем решил я ему зделать UPGRATE добавить дополнительно функций разных полезных . но обнаружел что памяти Attiny2313 не хватает для воплощения моих идей я решил портировать его на Atmega8 или другой контроллер с большей паметью. Портировать прошивку то я портировал это не сложно но вот с чем столкнулся!!!! В моём девайсеса первом на Attiny2313 там на подключение двух лент подсветки и каналов ШИМ выделен полностью PORTB то есть младшая тетрада PORTB управляет RGB лентой панели а старшая тетрада PORTB управляет RGB лентой пола. Код так реализован есть две функции с одним параметром цветом свечения ленты. Одна функция управляет лентой пола другая лентой панели.

void WritePortPanel(unsigned char Hi);//цвет панели
void WritePortPol(unsigned char Low);// цвет пола

А в контроллере Atmega8 нет единого порта чтоб так же использовать эти функции. Там или мешают ноги кварцевого резонатора или нога RESET или USART (см. фото )
:idea: Так вот я хочу переназначить выходы с других портов и обьеденить их в один виртуальный порт и через него разговаривать с выходами разных портов как будто это один физический порт. Тут то и возникает проблема как это реализовать??? я так думаю через указатели и адреса тортов и пинов но как конкретно??
Можно же конфигурировать шины USI или I2S или в библиотеке под жк экранов тоже можно настроить разные пины под конкретную нужду как там это реализовано кто знает помогите пожалуйста. :roll:
Надо что то в роди этого:
Создаём переменную виртуального порта PORTtest и настраиваем как то так
PORTtest.0 -> PORTB.1
PORTtest.1 -> PORTB.2
PORTtest.2 -> PORTB.3
PORTtest.3 -> PORTB.0
PORTtest.4 -> PORTB.5
PORTtest.5 -> PORTD.1
PORTtest.6 -> PORTD.2
PORTtest.7 -> PORTD.3
и уже в самой программе разговаривать с PORTtest (составленный который из пинов разных портов) как с обычным аппаратным портом.

PS; в CodeVision 2.05

Изображение
Реклама
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Переопределение выходов и создание виртуального порта

Сообщение uk8amk »

Если совсем просто то примерно так:

Код: Выделить всё

void WritePortPanel(unsigned char Hi)//цвет панели
{
if(Hi & (1<<0)) // младший разряд тетрады
	PORTB.1 = 1;
else
	PORTB.1 = 0;

if(Hi & (1<<1)) 
	PORTB.2 = 1;
else
	PORTB.2 = 0;

if(Hi & (1<<2)) 
	PORTB.3 = 1;
else
	PORTB.3 = 0;

if(Hi & (1<<3)) // старший разряд
	PORTB.0 = 1;
else
	PORTB.0 = 0;
}
Отдельные разряды в AVR не адресуются. Их изменение доступно только через битовые операции и инструкции sbi, cbi.
Реклама
Ziper
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Сб июн 27, 2009 10:56:00

Re: Переопределение выходов и создание виртуального порта

Сообщение Ziper »

ага спасибо uk8amk :)
у меня была идея так на скидочку чтоб эту тему реализовать через switch какой нибуть там всего 6 цветов каждый охотник желает знать сидит фазан
плюс белый и всё off когда и в switchем проверять и по отдельность каждый пин ставить и снимать где надо. А потом мысль пришла что можно число параметр по битно разобрать и пинам присваивать соответствующий бит тетрады :) посмотрел а ты как раз мне эту тему реализовал большое спасибо за это тебе дружище. :) я сам то не особо пьющий а еслиб был таковым тогдаб такого котика поставил бы обязательно -> :beer: но злоупотреблять алкоголем это не приемлемо для эффективный перспективных людей к тому же это плохо действует на потенцию :o поэтому ставлю два таких котика :) :) и одного такого 8) думаю так оно будет лучше даже!!!
Аватара пользователя
vek
Вымогатель припоя
Сообщения: 563
Зарегистрирован: Чт апр 16, 2009 04:53:41

Re: Переопределение выходов и создание виртуального порта

Сообщение vek »

Не проще порты переписать в асме?


помоему на сайте уважаемого ARV было про динамическую индикацию, и как это дело можно приспособить под безумно-любые ноги, думаю вам пригодиться.
Только очень вдумчиво читайте,а то там ошибки есть :) Но в целом очень доступно :)
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
Реклама
Эиком - электронные компоненты и радиодетали
Ziper
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Сб июн 27, 2009 10:56:00

Re: Переопределение выходов и создание виртуального порта

Сообщение Ziper »

Не проще порты переписать в асме?


помоему на сайте уважаемого ARV было про динамическую индикацию, и как это дело можно приспособить под безумно-любые ноги, думаю вам пригодиться.
а что за сайт такой можно ссылочку пожалуйста.
вот тут есть статьи http://radiokot.ru/search/?au=ARV от ARV в какой про это было написанно ? я чёт посмотрел не нашол нигде про это :(
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15561
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Переопределение выходов и создание виртуального порта

Сообщение BOB51 »

В программе использовать буфер-регистр для результата всяческих обработок, а уж куда его содержимое перетыкивать - на усмотрение пользователя.
На асме есть автомат световых эффектов под АТтини2313:
http://radiokot.ru/cherdak/03/
там для рисунка псевдоязык описания с маанюсеньким ядром. Но... рисунок фиксированный - для смены надо часть кода, ответственную за рисунок сменить.
:beer:
Реклама
Аватара пользователя
vek
Вымогатель припоя
Сообщения: 563
Зарегистрирован: Чт апр 16, 2009 04:53:41

Re: Переопределение выходов и создание виртуального порта

Сообщение vek »

http://www.radiokot.ru/forum/memberlist ... ile&u=1187
Это зиперу. В профиле найдешь его сайь
В первый раз меня ударило током - и я подумал что ни черта не соображаю в электричестве. Во второй раз был аккуратнее и меня не ударило - теперь я возомнил из себя крутого микроэлектронщика.
Ответить

Вернуться в «AVR»