Работа ведущего устройства с двумя ведомыми при помощи функций библиотеки AXLIB


• О проекте
• Обратная связь
• Полезные ссылки
• Полезные программы
• Друзья сайта


Последние комментарии

Алексей: Генератор кода библиотеки axlib
Ну, а в чем пробл...

Андрей: 3D Модели для DipTrace
ОК, понял. За PB...




           

Библиотека для AVR





AXLIB Генератор





Помощь сайту


   
				

Работа ведущего устройства с двумя ведомыми при помощи функций библиотеки AXLIB

	
	
	

Дата: 26 Декабря 2015. Автор: Алексей

	
	
Пример работы ПК и слейва.

Таки я все таки разобрался с мастером и слейвами.
Расписывать код я не буду, так как лучше один раз увидеть, чем сто раз прочитать. В двух словах. Есть мастер на ATMega8A. К мастеру подключен ЖК дисплей на две строки по 16 символов. Подключение ЖК можно подсмотреть в файле main_init.h. На UART подключен драйвер RS-485 на микросхеме MAX485. Два слейва имеют так же 485 интерфейс и у каждого по датчику температуры DS1820 на порту С на нулевом пине. Алгоритм работы прост. При старте мастера он сначала раздает сетевые адреса слевам, а затем по очереди опрашивает на предмет температуры. Полученную температуру с датчиков выводит на ЖК дисплей. Ниже я прикрепил файлы проектов для мастера и слейвов. Если захочется повторить в железе, то необходимо у слейвов при заливке менять ID, а то они все хором поменяют сетевые адреса.

Проект для мастера
Проект для слейвов

И конечно видюшка. Запись звука во время разбора кода не ахти из-за того что у меня звуковая карата отстойная. Сейчаз из китая ползет внешняя звуковуха и микрофон, так что надеюсь что следующие записи будут хорошими.

JW Player goes here



Юрий    20.01.16 14:29

Два датчика с ID 65530 slave 20 и 65531 slave 21 работают нормально, прописываю третий датчик ID 65532 slave 22, а мастер его видит как slave 21. Что я не так делаю. Спасибо.

Алексей    20.01.16 15:39

А Вы ему точно прописываете 22 адрес?

Юрий    20.01.16 18:30

Заработало когда я стал прописывать ID c 65530, 65529, 65528 и т. д.

Алексей    20.01.16 18:36

Странно. Такого не должно быть. ID уникальны как и сетевые адреса.

Юрий    20.01.16 19:01

В датчику (slave) нужно измерять раз в секунду напряжение, я естественно поставил таймер-счетчик, а у него вектор прерывания имеет приоритет чем прерывание по приему данных, и получается что не всегда может мастер достучатся до слейвов.Алексей подскажи как решить задачу? Спасибо.

Алексей    20.01.16 19:10

А зачем слейву такая точность? Проще замерять напряжение по запросу мастера. Иначе какой смысл проводить измерения. Для самого себя.

Юрий    20.01.16 19:28

В том и вопрос, что датчик нужно питать импульсами и после импульса измерять напряжение значение которого нужно отправлять мастеру. И как решить не знаю.

Алексей    20.01.16 20:33

Балансный протокол. В таких случаях слейв прикидывается мастером и шлет данные. И естественно нужно обрабатывать коллизии.

Алексей    20.01.16 20:34

Предлагаю перейти на форум, а то мы тут одной проблемой все комменты забъем.

Иван    22.04.16 10:41

Подскажи, или покажи как организовать команду записи данных в EEPROM slave устройств

Алексей    22.04.16 11:18

А память внешняя или внутреняя?

Иван    22.04.16 11:35

Внутреняя. Нужно мне записать в каждое slave устройство два числа (два пороги), с которыми сигнал будет сравниваться. Спасибо.

Алексей    22.04.16 11:44

Тогда можно использовать функции студии. Я сейчас на ходу, до дома доберусь напишу как их использовать.

Алексей    23.04.16 18:44

Для того чтобы записать в EEPROM данные. Справедливо только для режима Сейв.
volatile BYTE eeprom_data EEMEM; // Переменная в EEPROM.
BYTE data = 0xAB; // Переменная с данными
eeprom_write_byte(&eeprom_data, data); // Запись данных в переменную в EEPROM.
data = eeprom_read_byte(&eeprom_data); // Чтение из EEPROM

Иван    23.04.16 19:58

Мастер должен отправлять слейвам два числа, которые слейвы сохраняют в EEPROM. По сути организовать команду (#define MH_BUS_WRITE_ADD_PARAM 0x33 // Записать значение параметра в регистр по адресу). Спасибо

Алексей    23.04.16 21:37

Это да, но нужно понимать что протокол лишь передает пакеты от устройства к устройству, а что с ними делает получатель это уже другая песня.

Евгений    12.10.16 15:27

Алексей, а есть схемки подключения и мастера и слейва ? Разберусь и сам конечно,но может есть. А ЖК какой можно применить ? МЭЛТовский заработает на чипе HD44780 ?

Алексей    12.10.16 15:31

Вот пример работы мастер-слейв

Алексей    12.10.16 15:33

ЖК любой. А МЭЛТовский работает на КБ1013ВГ6, а не на HD44780)))

Алексей    12.10.16 15:36

Выписка из доки МЭЛТа.
Контроллер управления КБ1013ВГ6, производства ОАО «АНГСТРЕМ» (www.angstrem.ru), аналогичен HD44780 фирмы HITACHI и KS0066 фирмы SAMSUNG

Евгений    12.10.16 15:53

Ну, вернее да, аналог... согласен

Евгений    14.10.16 20:07

Алексей, а по какой схемке повесить ds18b20 ? там просто 2 схемы вкючения есть у датчика

Алексей    14.10.16 20:49

По какой нравится. Библиотека axlib работает по 3-х проводной схеме. То есть GND, VCC и DATA.

Евгений    11.01.17 20:41

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

Алексей    11.01.17 21:35

Без отладчика. Плату разрабатывал сам для себя со всем что нужно. На плате слот для разных мк, микросхема памяти еепром, часы, сдвиговый регистр, жк дисплей 16х2, уарт, рс-485, энкодер, узел для ацп, 8 нопок и 8 светодиодов, преобразователь юсб-уарт. Датчик температуры дс18б20. ИК приемник. Вроде ничего не забыл.




Чтобы вставить ссылку используйте форму вида[url]http://www.адрес.ru[/url][text]текст ссылки[/text]
Чтобы вставить код используйте форму вида[code]код[/code]

Имя:   





  








Вверх


Рейтинг@Mail.ru Яндекс.Метрика