Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение unalex »

uuuu писал(а):как переключаться между тремя портами по сигналу

зачем так много действий, и зачем вообще if, которые ничего не делают?

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

while(1)
{
   PORTD = ~PINB;
}
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение misterkuk »

Собрал схему и запитал pic16f628a от 3.7 вольт. Но он не запускается от этого напряжения, а от 5в работает на рас. Может что-то программно в нём включать или выставлять? Схемы самой нет, еотил сразу печатку ведь там проц и 3 74HC595 которые зажигают светодиоды. Питание- литий полимерный аккумулятор.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение HHIMERA »

Смотрите BOR и Brown-out Reset Voltage... 3.65 Vmin ... 4.35 Vmax ...
"Я не даю готовых решений, я заставляю думать!"(С)
Faton_11
Родился
Сообщения: 1
Зарегистрирован: Ср фев 13, 2013 19:25:40

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Faton_11 »

Добрый вечер!

output reg [length-1:0] adr1_out,//регистр со значением адреса
output wire [length-1:0] adr1_bus,//8-разрядная шина адреса

Значения с шины можно записать в регистр таким образом:
adr1_out<=adr1_bus;

Но мне нужно наоборот, записать данные из регистра на шину. Насколько я понимаю, такая форма записи не приемлема:
adr1_bus<=adr1_out;

Изучаю недавно, подскажите, как можно записать правильно?
uuuu
Родился
Сообщения: 9
Зарегистрирован: Ср фев 13, 2013 11:47:56

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение uuuu »

unalex писал(а):зачем так много действий, и зачем вообще if, которые ничего не делают?

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

while(1)
{
   PORTD = ~PINB;
}

мне нужно от переключателя с тремя положениями управлять led индикатором,и чтоб на входах была логическая 1 ,а на выходах 0(led индикатор с общим анодом)

на самом деле на портах D будет не по одному нулю,а больше .один ноль -один сегмент индикатора,я ещё не определился какиеножки порта d будут активны,но не в этом загвоздка,как переключаться между ними?if я убрал,получилось так:
while(1)
{
while(PINB==0b00000001)
{PORTD=0b11111110;}



while(PINB==0b00000010)
{PORTD=0b11111101;}



while(PINB==0b00000100)
{PORTD=0b11111011;},но как между ними переключаться то?
Последний раз редактировалось Gudd-Head Чт фев 14, 2013 09:12:23, всего редактировалось 2 раза.
Причина: Нарушение пп. 2.2 и 2.7 Правил Форума
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

честно говоря вообще вопрос какой то непонятный-" как между ними переключаться?"
в вашем случае лучше использовать маску для входа, так как выключатель выдает три единицы по очереди, а вы читаете весь порт.
Маска накладывается так

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

#define MASK  0b00000111
temp =PINB &MASK; 

далее по идее знаки для сегментного индикатора лучше хранить в массиве, сколько знаков, столько и элементов массива

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

 char show[]={0b00000001, 0b00000010, 0b00000100, 0b00000111}  

дальше, чтобы не использовать лишних циклов пишем так
Спойлер

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

 
 
#define MASK  0b00000111 
// объявление переменных
 char temp=0,show[]={0b11111110, 0b11111101, 0b11111011, 0b00000111};
//---------- цикл
temp =PINB &MASK; 
switch 
(temp){
       case (0b00000001): PORTD =show[1];break;
       case (0b00000010): PORTD =show[2];break;
       case (0b00000100): PORTD =show[3];break; 
default 
: PORTD =show[4] ;
}
//end of switch        
Последний раз редактировалось vitalik_1984 Пт фев 15, 2013 00:00:26, всего редактировалось 3 раза.
uuuu
Родился
Сообщения: 9
Зарегистрирован: Ср фев 13, 2013 11:47:56

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение uuuu »

vitalik_1984 писал(а):
Спойлер

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

 
 
#define MASK  0x00000111 
// объявление переменных
 char show[]={0x11111110, 0x11111101, 0x11111011, 0x00000111};                       //Error: must declare first in block
//---------- цикл
temp =PINB &MASK;                                                                              //Error: undefined symbol 'temp'
switch (temp){                                                                                   //Error: undefined symbol 'temp'
       case (0x00000001): PORTD =show[1];break;
       case (0x00000010): PORTD =show[2];break;
       case (0x00000100): PORTD =show[3];break; 
default 
: PORTD =show[4] ;
}
//end of switch        

СпойлерCODE VISION ВЫРУГАЛСЯ ОШИБКАМИ НА ВАШ КОД,Я ИХ НАПИСАЛ НАПРОТИВ ТЕХ СТРОК.МНЕ НУЖНО ЕСЛИ ПЕРЕКЛЮЧАТЕЛЬ В ПЕРВОМ ПОЛОЖЕНИИ -ГОРИТ ЦИФРА 1,ВО ВТОРОМ-ЦИФРА 2,В ТРЕТЬЕМ-ЦИФРА 3.В ПРИНЦИПЕ МОЙ КОД ПРАВИЛЬНЫЙ,РАБОТАЕТ ,НО ОН НЕ ПЕРЕКЛЮЧАЕТ.Т.Е.ЕСЛИ ПЕРЕКЛЮЧАТЕЛЬ ВКЛЮЧЕН В ПЕРВОЕ ПОЛОЖЕНИЕ,ЗАГОРАЮТСЯ СЕГМЕНТЫ ,КОТОРЫЕ Я УКАЖУ В PORTD,НО КАК ТОЛЬКО Я ВКЛЮЧАЮ ВО ВТОРОЕ ИЛИ ТРЕТЬЕ ПОЛОЖЕНИЕ ПЕРЕКЛЮЧАТЕЛЬ ПРОГРАММА НЕ ПЕРЕХОДИТ СООТВЕТСТВЕННО ВО ВТОРУЮ И ТРЕТЬЮ ЧАСТЬ,А ПРОДОЛЖАЕТ ВЫПОЛНЯТЬСЯ ПЕРВАЯ.
Последний раз редактировалось Gudd-Head Чт фев 14, 2013 15:59:16, всего редактировалось 1 раз.
Причина: Нарушение п.2.7 Правил Форума
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

а догадаться нельзя? раз пишет неопределенный символ, значит нужно его определить

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

//определение переменных
unsigned char temp =0
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение zero648 »

uuuu, замени все иксы "х" на "b"
grindripperMi
Открыл глаза
Сообщения: 47
Зарегистрирован: Чт янв 21, 2010 21:39:22

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение grindripperMi »

Здравия, хвостатые!;) Подогнались микроконтроллеры: ATMEL 121,122, 322, 552, 618 с "расширением" 24 CO 1A, и AT 89C52(S52) все 24PC или PI. В разделе "для дома, для семьи" их можно как нибудь пристроить? Посоветуйте со схемами и с программами, если не затруднит кого нибудь из почтенного общества. Без издёвок! С уважением Михаил!
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

zero648 писал(а):uuuu, замени все иксы "х" на "b"

:facepalm: чет запарился, хотя вроде не должно быть при этом сильных косяков, 111 не превышает 255, просто гореть будет не то, что предполагается.
В поисках истины человек развивается.
nirq
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение nirq »

24C01 - память, в гугле про неё есть. Небольшая.
89x52 - устаревшее и/или на любителя, программатор мутить специально для.

Схема с программой рожается из головы для решения поставленной задачи, иначе смысл процесса.... присоединять деталь А к детали Б по инструкции, чтоб добро не пропадало?
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение unalex »

uuuu

эта конструкция делает все то, что вы написали выше(порт D ножки 0 1 2 выдают ноль ели на соответствующих ногах порта B единички(кнопка замыкает на массу), на остальных ногах порта D всегда висят единички),
проверьте сначала, потом пишите что не так

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

while(1)
{
   PORTD = ~(PINB & 0x07);
}
Последний раз редактировалось unalex Пт фев 15, 2013 02:58:15, всего редактировалось 1 раз.
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение unalex »

uuuu писал(а):char show[]={0x11111110, 0x11111101, 0x11111011, 0x00000111};


ну тут явно больше 255

да и вообще к чему такие громоздкие конструкции, когда мой пример делает то же самое в одну строчку
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение MS24 »

Ребят подскажите, нужно соединить HCPL-0931 и MAX13487. Делаю преобразователь USB - RS485. HCPL гальваническая развязка, MAX13487 - согласователь уровней с автоопределением направления. В даташите есть принципиальная схема включения на оптронах, а как Максимку подключить к HCPL-0931 я никак не могу понять.

Вот такой вариант будет работать?
http://we.easyelectronics.ru/GYUR22/max ... s-485.html
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение unalex »

MAX13487 1(RO) ->- HCPL-9031 2(IN1), HCPL-9031 7(OUT1) ->- RXD
MAX13487 4(DI) -<- HCPL-9031 3(OUT2), HCPL-9031 6(IN2) -<- TXD

или

MAX13487 1(RO) ->- HCPL-9031 6(IN2), HCPL-9031 3(OUT2) ->- RXD
MAX13487 4(DI) -<- HCPL-9031 7(OUT1), HCPL-9031 2(IN1) -<- TXD

как удобнее
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
uuuu
Родился
Сообщения: 9
Зарегистрирован: Ср фев 13, 2013 11:47:56

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение uuuu »

код
Последний раз редактировалось uuuu Сб фев 16, 2013 08:47:00, всего редактировалось 1 раз.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Может, заменить whil-ы на if'ы else-if'ы?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение a_skr »

uuuu писал(а):вы как будто меня не слышите?
проверяете в железе или симуляторе? На первый взгляд должно работать, но нужны подтягивающие к корпусу резисторы на всех входах. Если их нет, то можно предположить, что при включении на входах вначале низкий уровень, переключатель сразу дает высокий на одном входе, срабатывает нужный while, выставляет нужное значение на выходе, далее входы "подплывают" к логической единице и ни один while уже не сработает.
Можно сделать кнопки (переключатель) с замыканием на корпус, а не на плюс, включить внутреннюю подтяжку к питанию и не ставить внешние резисторы.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

unalex писал(а):проверьте сначала, потом пишите что не так

Ваш код работает так,что светодиод горит только пока нажата кнопка или какой либо выключатель.А uuuu, похоже, нужно чтобы при нажатии переключалось.

uuuu ваш код отлично работает, сейчас проверил в симуляции. Активное положение кнопок- 1.
При совместно включенном состоянии ничего не происходит, и это понятно, так как эти состояния не описаны.

И не нужно одно и то же повторять несколько раз. Лучше нарисуйте схемку сего устройства и приложите инициализацию портов, может где подтяжка включена, а это как раз не описанное состояние.
Я уже помогал делать проект для включения реле в нужной последовательности через нажатие на кнопки плюс-минус, могу приложить.
Ответить

Вернуться в «Разные вопросы по МК»