Конечно нужно делать остановы.Только так скорость вашего восприятия совпадает со скоростью программы.Так же если все время на стрелку смотреть можно всю жизнь просидеть и не отловить всех жуков.Чтобы не смотреть там где вам не нужно контроллер работает в обычном режиме.
Сделал остановы, та же фигня. может какие настройки выставить?
Добрый день! Прошу помощи, совета по интерфейсу SPI. В устройстве 10 плат, на каждой из которых находится микроконтроллер Mega8 (собирает информацию от др. микросхем). Все десять плат завязаны по SPI на общую плату (там стоит Mega32), куда поступает информация для последующей передачи на компьютер по Ethernet’у. Вот у меня и вопрос: Mega32 как ведущее устройство должна сама по очереди опрашивать ведомые (Mega8) или есть всё же возможность (по прерыванию) ведомому инициировать передачу информации?! Что то в даташите не совсем вкурил… Спасибо заранее!!
Сделал остановы, та же фигня. может какие настройки выставить?
разобрался я, косяк был в настройках кварца. Да, кстати, он даже без выставления точек останова по шагам идет, а не тупо выполняет программу, как писали выше
Прошу помощи, совета по интерфейсу SPI. В устройстве 10 плат, на каждой из которых находится микроконтроллер Mega8 (собирает информацию от др. микросхем). Все десять плат завязаны по SPI на общую плату (там стоит Mega32)
В подобных системах для связи между контроллерами использую UART. Там есть специальный режим многопроцессорной связи, когда адрес передается с установленным девятым битом. Каждый процессор автоматически откликается на "свою" посылку. Если линия короткая, то передаю данные в формате TTL (в качестве буферов с Z-состоянием использую 74125). Если платы далеко друг от друга, то применяю ADM485. Делать мультимастерную сеть не советую, очень трудно будет реализовать арбитраж (если только не использовать CAN). Пусть лучше всегда обмен инициирует единственный мастер.
Димаn По моему субъективному мнению, SPI хорош на малых расстояниях. Хотя можно ставить шинные формирователи-и-приемники, удлинняя линию, но на практике этого не встречал.
, кстати, он даже без выставления точек останова по шагам идет, а не тупо выполняет программу, как писали выше
Кто его знает как там в железном стимуляторе выглядит я еще не запускал своего дракона в режиме отладки, камней подходящих не было.Но вот что точно известно, что если на Run нажать вы там стрелку не увидите, пока до точки останова не дойдете.Либо на паузу не нажмете.
_________________ В поисках истины человек развивается.
Заголовок сообщения: Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт авг 23, 2012 12:01:36
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 20034 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
vitalik_1984 писал(а):
Кто его знает как там в железном стимуляторе выглядит я еще не запускал своего дракона в режиме отладки, камней подходящих не было.Но вот что точно известно, что если на Run нажать вы там стрелку не увидите, пока до точки останова не дойдете.Либо на паузу не нажмете.
Также в СиЛабовском отладчике.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Спасибо, Леонид Иванович, SmarTrunk!! Действительно, наверное USART'ом лучше сделать. Хотя платы находятся в корпусе под 19'' стойку (соединены между собой шлейфами) - сложно оценить близко это или нет, да и помехи... Просто настораживает что центральный контроллер Mega32 будет всё время опрос производить своих подчиненных Meg8 на предмет наличия изменения состояния линий (к этим Мегам подключены 2-а расширитля портов PCF8575 - итого на каждой плате 32 входа).
P.S. Строчц быстро, надо успеть на обеде еще миску молока съесть....
Просто настораживает что центральный контроллер Mega32 будет всё время опрос производить своих подчиненных Meg8 на предмет наличия изменения состояния линий
У меня была похожая задача, в подчиненных процессорах был организован буфер событий. Вообще, нужно подробнее знать задачу (частоту поступления событий, требуемое время реакции). Можно еще организовать общую линию INT, куда подключить выходы с открытым коллектором от всех контроллеров. Этот сигнал будет говорить о том, что нужно опросить контроллеры, что-то поменялось.
Если платы соединены шлейфами, я бы все-таки использовал драйверы RS-485. Это ненамного дороже обычных TTL-буферов с тремя состояниями, зато помехозащищенность отличная и надежность в плане выхода из строя при перекоммутации разъемов.
В дополнение и развитие сказанного Л.И. ( пока ходил котов накормить, он меня опередил ) . Линию INT я бы задействовал так. Исходное состоянеие - все на приеме. Периодически раз в несколько мс ( мкс в зав. от времени ответа ) ведущий посылает стартовый импульс и переходит на прием. Если кто-то из ведомых имеет что сообщить, он в отведенное ему время посылает ответный импульс. По длительности задержки ответа определяется номер ведомого, желающего сказать. 485-й, если сеть идет не в пределах предприятия, а внутри одной стойки - по-моему, избыточно. У меня банальная токовая петля работала внутри помещения без вопросов. Конечно, все зависит от конкретного задания.
У меня была похожая задача, в подчиненных процессорах был организован буфер событий...
Похоже, у меня похожая задача! А вообще делаю что то вроде сигнализации для дежурной смены. Например пропадание канала связи или сбой аппаратуры отследить на компьютере. Очевидно, что эти события не часты и носят случайный характер, ну а время реакции наверное должно составлять несколько секунд, что для временных показателей микроконтроллеров даже вполне по силам. Входные сигналы - банально земелька станционная (делаю через оптопару развязку). Насчет 485.... Гмм.... Может не надо если в одном корпусе всё?!
Спасибо, Jack_A! Я вот тоже насчет INT подумал что хорошая идея! Не надо центральный контроллер "гонять" по напрасну по кругу. А вообще в микросхеме-расширителе портов PCF8575 уже есть выход INT - как токо на входе портов что то меняется - он выдает 0. Токо выход этой микросхемы - I2C.
485-й, если сеть идет не в пределах предприятия, а внутри одной стойки - по-моему, избыточно. У меня банальная токовая петля работала внутри помещения без вопросов. Конечно, все зависит от конкретного задания.
Внутри помещения (метра четыре UTP и шлейфов) у меня работает I2C. ATmega328 опрашивает как раз десяток ATmega48. На 400 кГц и на семи метрах устойчиво работало день, но потом от греха подальше опустил на 100 кГц, так как и 50 достаточно. Обстановка в общем спокойная, рядом симисторами включаются несколько вентиляторов разного размера и клапанов (CO2 и всякие гадости в установку пускают).
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Пока пил кофий, идея конкретизировалась. INT для ведущего пассивный, активным его делает запросивший ведомый. И не надо через расширитель портов - прямо на самом МК разве свободного входа не осталось ? Получив запрос, ведущий по UART (SPI) посылает широковещательный запрос : "Кто меня звал ?" . Для ведомых в зависимости от его номера выделяется свой тайм-слот, поэтому если поговорить захотят одновременно несколько, сообщение каждого не будет иметь коллизий с остальными. А уж разобравшись, кто там возникает, уже обычным адресным сообщением ведущий : " N-й, ну че там у тебя ? "
Получив запрос, ведущий по UART (SPI) посылает широковещательный запрос : "Кто меня звал ?"
А я вот никак не соберусь («работает — не трогай!») переписать у себя I2C всё начисто на мультимастер. Вот у кого что возникло — посылает по I2C на адрес хоста (ATmega328).
Если возникло «почти одновремённо», то арбитраж разрулит и просто сообщение от второго немного задержится. С учётом нечастости во времени таких вещей шина только разгрузится. И без прерываний ненужный поллинг уберётся, точнее, будет перывание по приходу чего-то на I2C (в пакете — обратный адрес пославшего).
Если хосту что-то конкретное захотелось записать в устройство — посылает запись.
Если что-то нужно прочитать (а оно может не сразу быть готово! сейчас с одним мастером и поллингом приходится записать команду, после чего читать до получения результата, лишняя работа на шине), то хост просто шлёт в устройство «дай мне вон то», когда оно будет готово, устройство запишет в хост ответ (со своим адресом в пакете для разбора). Т.е. операция чтения из устройства распадается на две операции записи из хоста в устройство и и з устройства в хост, между ними шина свободна.
Это всё потребует немного больше ОЗУ в хосте (есть лишнее, так что всё нормально), но упростит общую логику. Но, как уже сказал, «работает — не трогай!»
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
как замерять импульсный ток и напряжение на тиристорном автомобильной зу. Если использовать просто делитель напряжения, то будет что попало показывать, как отфильтровать? Конденсатор?
Похоже, у меня похожая задача! А вообще делаю что то вроде сигнализации для дежурной смены.
Я тоже делал сигнализацию, контролирующую состояние спец. аппаратуры. Центральный процессор регулярно опрашивал всех подчиненных, потому что кроме чтения событий нужно было мониторить наличие и исправность подчиненных.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения