roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 ноя 2024, 02:16

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 108, 109, 110, 111, 112, 113, 114 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 июн 2010, 01:25 
Не в сети

Зарегистрирован: 24 фев 2010, 17:33
Сообщения: 14
Откуда: Симферополь
Michael_K писал(а):
когда вы ставите SPI enable,проц его конфигуряет как вход независимо от настроек порта.

Если я на ногу не включаю подтяжку (0 логический на ноге), то во входящем регисторе 0х00, если включаю (1 логическая на ноге) - то 0хFF. Оно и понятно, если память никак на уровень не влияет (в моем случае, дохлая может?), то микроконтроллер интерпретирует состояние на входе так. Так что, как показывает в моем случае практика, зависит от настроек :(

Michael_K писал(а):
Обратите внимание: SS на МАСТЕРЕ должен быть или настроен на ВЫХОД, или подтянут к плюсу
(иначе он в режим слейва самопроизвольно перейдет)

Спасибо за совет. SS у меня выходом сделан. И еще на нем 1 поднята. Без результатов :(
Есть один ньюанс. Я микросхемой памяти управляю не ногой SS, а другим пином, конкретно PB5 -так по разводке удобнее было. Соответственно в программе я её "дергаю" для включения-выключения памяти. Может в этом причина неработоспособности? Поэтому я на всякий случай и SS дергаю, но она, как уже сказал, в воздухе висит...

Еще вопрос. Правильно ли я считываю STATUS REGISTER? Написал следующую процедуру в CVAVR:
Код:
unsigned char status_load (void)

   unsigned char status_register_from_spdr;
   unsigned char temp = 0x80;
   
   PORTB &= ~DF_CHIP_SELECT;               // enable DataFlash (DF_CHIP_SELECT определено выше по коду)
   
   SPDR = STATUS_REGISTER;                 // STATUS_REGISTER - бит команды, определен выше.
   while (!(SPSR & temp));
     
   SPDR = 0xFF;                            //записываем произвольный байт, как сказано в посте ниже !
   while (!(SPSR & temp));

   status_register_from_spdr = SPDR;
   
   PORTB |= DF_CHIP_SELECT;                // disable DataFlash and start transaction     
   
   return (status_register_from_spdr & 0x80);
}


Соответственно применяю её так:
Код:
while(!(status_load()));              // в цикле, пока память занята
SPDR = ... выполняю загрузку в SPDR новой команды


Последний раз редактировалось rat12 08 июн 2010, 12:19, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 июн 2010, 01:50 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Эммм... ничего не понял.
Эта память начнет активно управлять ногой SO только после того, когда вы затолкаете ей правильную команду на ногу SI. А до этого момента она в воздухе висит, но и процу результат неважен.

Общая процедура примерно такая:

Опускаете ЦС

Посылаете команду в СПДР
Ждете когда завершится посылка
Считываете что там в ответ пришло и выкидываете нафиг (это висячая в воздухе нога она не интересна)

Посылаете что попало в СПДР (просто чтобы СЦК пощелкал, я обычно отправляю FF)
Ждете когда завершится посылка
Считываете ответ на команду (это пришел реальный ответ)

Поднимаете ногу ЦС

Ну только и команды и ответы там кажется могут быть многобайтные...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 июн 2010, 13:08 
Не в сети

Зарегистрирован: 24 фев 2010, 17:33
Сообщения: 14
Откуда: Симферополь
Спасибо большое Michael_K и avr123 !
После Ваших замечаний и комментариев мне наконец удалось собрать работоспособный код!
Кусочек его привел в посте выше, для случая, если нет физической ноги RDY, можно применять эту конструкцию, считывать значения бита RDY из регистра статуса микросхемы памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 июн 2010, 21:48 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Хорошо что добили задачу.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 14 июн 2010, 23:49 
Не в сети
Аватара пользователя

Зарегистрирован: 07 сен 2009, 20:06
Сообщения: 333
прог. языки: c, c#
ФИО: Евгений
Приведите пожалуйста пример кода для загрузки числа в последовательный сдвиговый регистр.
Я написал такую функцию:
Код:
void send(unsigned int data,unsigned int length)

int i,j;
for(i=length;i!=0;i--)
   { 
   wait
   for(j=i;j!=0;j--)
   {
   CLK=1;
   wait
   if((data & (1<<i))!=0)
   {
   DATA=1; 
   }     
   else
   {
   DATA=0;
   }     
   wait
   CLK=0;   
   wait
   }
  } }
void main(void)
{
  send(0b10001110110110,14);
  while(1);
}

Но кажись работает она не правильно, вторым циклом продвигаем бит по сдвиговому регистру, первым циклом берем следующий бит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 02:51 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
А для чего два цикла?

Код:
void send(unsigned int data, unsigned int length)
{
    unsigned int mask = 1 << length;
    while (length--) {
        CLK=1;
        wait;
        DATA = (data & mask) ? 1 : 0;
        CLK=0;
        wait;
        data <<= 1;
    }
}

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 10:00 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Начинающим возможно не понятна будет строка а возможно не верно понята
Код:
while (length--) {

Проще наверно так написать
Код:
while (length) {
length--;


Это вообще в ступор введет
Код:
DATA = (data & mask) ? 1 : 0;


и int для length крутовато. С запасом.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 13:56 
Не в сети

Зарегистрирован: 31 мар 2010, 16:15
Сообщения: 23
Добрый день.
Я хочу из одного SPI Mega8 сделать два независимых интерфейса. И не знаю какой микросхемкой это можно осуществить. Мультиплексор вроде не подходит т.к. интерфейс двунаправленный, Мультиплексор и демультиплексор как-то криво выглядит. Свич (коммутатор), еще не разобрался но тоже ничего хорошего не получается. Подскажите где можно такое решение подсмотреть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 14:05 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Зачем?

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 14:35 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
greyder писал(а):
Я хочу из одного SPI Mega8 сделать два независимых интерфейса.

Это невозможно пожалуй. Можно несколько устройств подключить параллельно но отдельными ножками МК выбирать какое устройство активно.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 17:10 
Не в сети

Зарегистрирован: 31 мар 2010, 16:15
Сообщения: 23
Ответ на вопрос blindman'a я пытался изобразить на 106 страницы данной ветки. Мое видение данной задачи в прикрепленной картинке.
При нормальной работе сигналом MA/SL выбрана секция Slave для работы с детьми, устройства адресуются SS1, SS2, SS3 ... . При появлении сигнала на MasterSS прерываем работу с детьми, меняем сигнал MA/SL т.е. выбираем работу с родителем и работаем дальше с ним.
Про невозможность: скорее возможно но с ограничениями.
Вопрос как это реализовать?


Вложения:
MA_SL.JPG
MA_SL.JPG [ 16.16 КиБ | Просмотров: 1850 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 июн 2010, 18:54 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Вы не должны этого хотеть. Больше мне сказать нечего

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 16 июн 2010, 15:39 
Не в сети

Зарегистрирован: 31 мар 2010, 16:15
Сообщения: 23
Со-дер-жательный ответ. Надо понимать что AVR и топология дерево не совместимы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 16 июн 2010, 18:48 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
А скорости большие нужны? Я бы аппаратный SPI подключил в слейв режиме к родителю, а детей на второй (программный) SPI с общими MOSI/MISO/SCK и выбором детенка отдельными ногами SS. А мультиплексировать слейв-SPI еще с кем-то плохо, ведь родитель может начать обмен когда ему вздумается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 16 июн 2010, 19:11 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Это у горе-програмеров так.

А у нормальных эмбедеров, мастера живут по графику по алгоритму - так же как и вся другая бодяга.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 108, 109, 110, 111, 112, 113, 114 ... 144  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO