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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

Jack_A писал(а):Получив запрос, ведущий по UART (SPI) посылает широковещательный запрос : "Кто меня звал ?"
А я вот никак не соберусь («работает — не трогай!») переписать у себя I2C всё начисто на мультимастер. Вот у кого что возникло — посылает по I2C на адрес хоста (ATmega328).

Если возникло «почти одновремённо», то арбитраж разрулит и просто сообщение от второго немного задержится. С учётом нечастости во времени таких вещей шина только разгрузится. И без прерываний ненужный поллинг уберётся, точнее, будет перывание по приходу чего-то на I2C (в пакете — обратный адрес пославшего).

Если хосту что-то конкретное захотелось записать в устройство — посылает запись.

Если что-то нужно прочитать (а оно может не сразу быть готово! сейчас с одним мастером и поллингом приходится записать команду, после чего читать до получения результата, лишняя работа на шине), то хост просто шлёт в устройство «дай мне вон то», когда оно будет готово, устройство запишет в хост ответ (со своим адресом в пакете для разбора).
Т.е. операция чтения из устройства распадается на две операции записи из хоста в устройство и и з устройства в хост, между ними шина свободна.

Это всё потребует немного больше ОЗУ в хосте (есть лишнее, так что всё нормально), но упростит общую логику.
Но, как уже сказал, «работает — не трогай!» :-)
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Встал на лапы
Сообщения: 124
Зарегистрирован: Вт июл 10, 2012 00:13:27
Откуда: Белгородская обл.

Сообщение mr.boroda »

как замерять импульсный ток и напряжение на тиристорном автомобильной зу. Если использовать просто делитель напряжения, то будет что попало показывать, как отфильтровать? Конденсатор?
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Димаn писал(а):Похоже, у меня похожая задача! А вообще делаю что то вроде сигнализации для дежурной смены.
Я тоже делал сигнализацию, контролирующую состояние спец. аппаратуры. Центральный процессор регулярно опрашивал всех подчиненных, потому что кроме чтения событий нужно было мониторить наличие и исправность подчиненных.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 66
Зарегистрирован: Пн авг 18, 2008 22:29:59
Откуда: Архангельск

Сообщение Димаn »

Забыл сказать, помимо чтения примерно 300 линий надо еще и в обратную сторону примерно 50-60 линий управлять (выдавать земельку). Тогда и правда может ModBus использовать (USART)?! А по SPI я буду с Ethernet-модулем общаться. :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Димаn писал(а):Забыл сказать, помимо чтения примерно 300 линий надо еще и в обратную сторону примерно 50-60 линий управлять (выдавать земельку).
Ну я тоже управляю. И что? Какая разница, в какую сторону информация передается?
Димаn писал(а):Тогда и правда может ModBus использовать (USART)?!
А при чем здесь ModBus? У меня обмен с подчиненными процессорами выглядит просто:
Протокол обмена:
Параметры настройки UART следующие:
длина слова - 9 бит
четность - нет
скорость обмена - 115200 бод
Пакет имеет следующий вид:
1. Адрес подчиненного процессора
2. Код команды для выполнения
3. Количество байт данных в пакете
4. Собственно байты данных
Адрес подчиненного процессора передается с единичным 9-м битом,
остальная часть пакета передается с нулевым 9-м битом.
Количество байт данных в пакете может быть нулевым.
Ответ передается с нулевым 9-м битом и
имеет следующий вид:
1. Количество байт данных в пакете
2. Собственно байты данных
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 66
Зарегистрирован: Пн авг 18, 2008 22:29:59
Откуда: Архангельск

Сообщение Димаn »

Леонид Иванович Спасибо большое!
Опередили меня - я следующим вопросом хотел спросить про протокол как раз. :))
А про ModBus я просто в личке с Jack_A разговаривал.... :idea:
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

ModBus - очень древний, можно сказать, устаревший протокол. Держится лишь за счет того, что на нем работает куча промышленного оборудования. Сам по себе в настоящее время он абсурден. Когда в собственных задачах стала задача сделать замену ModBus, я сделал Wake: http://digit-el.com/files/open/wake/wake.html
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6350
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

"Че-то мне твое лицо знакомо - ну прямо как мое!" (С) "Свадьба в Малиновке"

Это я к тому, что мой протокол был очень похож :)
1. Длина пакета ( включая его самого и CRC ) = 5...255
2. Адрес ( обычный, 8-битный ) . (1...127) "Всехный" адрес - 0
3. Команда
4. Данные
5. CRC

Поскольку количество элементов ( кроме данных ) фиксировано, выделять длину блока данных не стал - она определяется вычитанием - 5.
В ответе 7-й бит = 1 ( 80h ... FFh ) - чтобы сидящие на шине слейвы знали, что это ответ и не реагировали. Команда = переданной команде + 80h , если ошибка.
Без затей - просто, надежно, и никаких терок со Шнайдер Электрик за лицензию :) Про Б.Гейтса - отдельная песня :(
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

Да похоже все идут похожим путём. Правда у меня команд на 255 не тянуло и процессоров 8 в подчинении , поэтому я "слил" адрес и команду вместе. Правда был префекс перед началом основной посылки и ответ проца , если он префекс правильно получил. Это как бы занят не занят.
Родился
Сообщения: 5
Зарегистрирован: Пт июл 13, 2012 08:59:08

Сообщение Mr.SerZ »

Привет всем котам.
Обращаюсь с таким вопросом:
Прошивал микросхемы 24C64W6 и 24C64WP всё проходит вроде неплохо- код записывается и считывается, но при установке в стиральную машинку чипа начинает без конца выполнять программу.
Подскажите в чём тут может быть дело микросхемы в корпусе soic, прошивались через колодку- переходник. Программатор вот этот http://www.5v.ru/extrapic.htm
Друг Кота
Аватара пользователя
Сообщения: 6350
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

ILYAUL писал(а):Правда у меня команд на 255 не тянуло и процессоров 8 в подчинении , поэтому я "слил" адрес и команду вместе.
Был у меня такой печальный опыт. Я тогда работал в паре с одним молодым программером, делавшим верхний уровень. Исходя из здравого смысла : короче пакет - быстрее передача - меньше вероятность ошибки, я тоже слил. Но молодой коллега заявил : расцепи, а то я не могу применить в проге верх. уровня оператор case . На мое недоумение : у тебя могучий Селерон, тебе проще приспособиться к ресурсам маленького 8535 - он ответил : Я ЗДЕСЬ ГЛАВНЫЙ. И я понял, что ему уже бесполезно доказывать, что 99% выпущенных нами дивайсов работают ( и будут работать ) в автономе вообще без всякого сетевого интерфейса, поэтому главным ты не можешь быть по определению .
Трудно было работать, когда как минимум 3 сверху_стоящих точно знали, как я должен проектировать интерфейсный протокол, хотя никто из них в жизни не написал и строчки кода :(
Открыл глаза
Аватара пользователя
Сообщения: 66
Зарегистрирован: Пн авг 18, 2008 22:29:59
Откуда: Архангельск

Сообщение Димаn »

Леонид Иванович
Пните пожайлуйста, где почитать про мультипроцессорный режим работы USART микроконтроллеров. А то у Евстифеева что то мало написано... Я раньше только комп с Meg'ой соединял. :dont_know:
Или кусочек программы где посмотреть.... Пожалуйста! :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

ILYAUL писал(а):Да похоже все идут похожим путём. Правда у меня команд на 255 не тянуло и процессоров 8
Команд то получается тоже 127 как я понял.в команде первый бит ведь ноликом должен быть, чтобы отличать от адреса, если адрес не передается.
Но молодой коллега заявил : расцепи, а то я не могу применить в проге верх. уровня оператор case .
Печально когда коллега нуб.
Решается вопрос с case добавлением всего одной строчки перед каждым switch. Не знаю конечно как там точно, но предполагаю что все равно адрес и команда отдельно рассматриваются в программе.

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

temp =buffer[1]&ADDRESS_MASK;
switch (temp){
/yours code ...
}
 
В поисках истины человек развивается.
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

Команд то получается тоже 127 как я понял.в команде первый бит ведь ноликом должен быть, чтобы отличать от адреса, если адрес не передается.
Команд было толи 11 - толи 12 ( домой приду посмотрю) . Старшие 4 бита -адрес . Младшие команда
Открыл глаза
Аватара пользователя
Сообщения: 66
Зарегистрирован: Пн авг 18, 2008 22:29:59
Откуда: Архангельск

Сообщение Димаn »

А схемка получается цепочкой?! Передатчик (Мастер) -> приемник (Ведомый 1) передатчик -> приемник (Ведомый 2) передатчик ->....
Друг Кота
Аватара пользователя
Сообщения: 6350
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

vitalik_1984 писал(а): Печально когда коллега нуб.
Отож. Но он позже нашел себя в торговле забугорными железяками, кажется, Сименса.
Друг Кота
Аватара пользователя
Сообщения: 6350
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Димаn писал(а):А схемка получается цепочкой?! Передатчик (Мастер) -> приемник (Ведомый 1) передатчик -> приемник (Ведомый 2) передатчик ->....
Если применить RS-485, то там 2 линии А и Б с терминаторами на концах, а на них через преобразователь вешаются TxD,RxD , и каждый может быть как передатчиком, так и приемником , и кто в конкретный момент будет передатчиком - определяется протоколом сети.
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Вт мар 25, 2008 22:10:23
Откуда: Минск

Сообщение Лютик »

Всем привет!
Есть микросхемы из оптической мыши http://www.pixart.com.tw/upload/PAW3101 ... 090338.pdf, которая общается по i2c(twi).
есть контроллер mega8. скачал библиотеку twi http://blindage.org/wp-content/uploads/2011/06/twi.c http://blindage.org/wp-content/uploads/2011/06/twi.h.
Но никак не удается сконнектиться с датчиком =(
что-то не совсем разобрался я с i2c видимо...
делаю так:
инициализирую интерфейс:

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

void initI2C(void)
{
CLEARBIT(DDRC,4);
CLEARBIT(DDRC,5);
SETBIT(PORTC,4);
SETBIT(PORTC,5);
TWSR = 0x00;
TWBR = 0x20;   
}
в теле цикла пытаюсь считать регистр с адресом 0x02:

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

twi_send(0x02);
a=(unsigned char)twi_receive(1);
в итоге получаю зависание.. =(
Встал на лапы
Сообщения: 119
Зарегистрирован: Чт май 10, 2012 21:56:27
Откуда: Львов

Сообщение DrHlus »

Здраствуйте, уважаемые форумчане!
Кто-нибуть работал с Atmega16u4?
Есть ли какие-то подводные камни, о которых не написано в даташите?
И правда, что в нем зашит бутлоадер, позволяющий запрограмировать его без программатора?
Ответить

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