• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
DVyacheslavN

Usart И Терминал Пк . Общение Пк С Контроллером.

41 сообщение в этой теме

Хочу организовать Modbus на микроконтроллере для связи c частотным приводом altivar , может кто выложет код или объяснин как реализуется протакол ГУГЛИЛ все пишут все просто но когда смотриш на отрывки кодов в инете все еще более запутанно . вот нашел статью http://mainloop.ru/avr-atmega/modbus-avr.html пока нечего не понял .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

как собрать все библиотеки для пика буду разбераться но хотелось бы чтобы подсказали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    514
смотриш на отрывки кодов в инете все еще более запутанно
А зачем на них смотреть ? Ищите документацию на протокол и разбирайтесь именно в нём. Ну а код Вы и сами напишите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

пишу modbus и появился вопрос. скачал документацию для чайников там пишут "Данный пример описывает чтение регистров 4108-4110 из SL с адресом 06" а в самом примере

http://rghost.ru/8qyzjTphX

Начальный адрес ст. 00

Начальный адрес мл. 6B

Кол-во регистров ст. 00

Кол-во регистров мл. 03

вот вопрос . где здесь 4108 ????? "006B" явно не оно да и "0003" подавно .

или тупо придумать свои адреса

Изменено пользователем DVyacheslavN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

READ COIL STATUS пишу функцию получения статуса ячеек . и появился вопрос как прочитать флешь память контроллера pic и тут встрял значит я использовал стандартную функцию FLASH_READ из <pic.h> заработало но как то не так . сам написал тоже самое выдает пытаюсь прочитать TRISD по адресу 0x88 записал я в него 0b00000001 тобиш (1) ну читаю и вот рзультат. 10410 при изменении занчения 0b11000001 тоже самое выдает. (( . микруха pic 16f877

unsigned int flash_read(unsigned short addr)
{
EEADR=(addr)&0xff ;
EEADRH=(addr)>>8;
WREN=0;
EECON1 |= 0x80;
RD=1;
NOP();
NOP();
    return ((EEDATH << 8) | EEDATA);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    514

Совершенно не понятно, что Вы написали.

Что значит "но как то не так" ? Это как ?

Причём тут TRIS и чтение из flash ? И что у Вас "выдаёт" и куда ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"но как то не так" ? -- значение при запроси из ячейки памяти должно быть 1 (0b00000001) а не 10410.

"Причём тут TRIS и чтение из flash ?" - TIRSD - это регистр порта D отвечающий за его направление ввод/вывод (I/O) . хранящийся во flash памяти микроконтроллера - ( разновидность EEPROM)

И что у Вас "выдаёт" и куда ? В Протеусе собрана схема c виртуальным терминалом . В него и выдает .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    514
должно быть 1 (0b00000001) а не 10410
Ну вообще, если Вы не заметили, функция возвращает int, а это далеко не 1 байт. Так что, что там должно быть, это ещё не известно. Непонятно, откуда такая уверенность у Вас.
TIRSD - это регистр порта D хранящийся во flash памяти
Это Вы сейчас пошутили ? :)

Почитайте повнимательнее раздел по организации памяти в даташите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прочитал только вот все ровно не понятно . есть память данный и память программ. в памяти данных хранятся регистры специального и общего назначения, также есть косвенная и прямая адресация . Если я правильно понял то TRISD это косвенная а 0x88 прямая. только вот почему я оттуда не достаю данные. ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
http://www.pic24.ru/doku.php/articles/mchp/pic18_to_pic24_migration/core/programm_mem из этой статьи . Если я правельно понял я не имею доступа ко всей памяти ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    514

Какой "всей памяти" ? Какой доступ ? Вы пишите какими-то тайнами. Совершенно непонятно ничего.

Доступ к TRISD осуществляется очень просто, через это же имя (TRISD):

TRISD = 0xAA;
var = TRISD;

Не понятно, в чём проблема ?

Причём тут flash-память ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем рассказу в чем задача получаю я запрос на прочтение ячеек памяти там естественно указан адрес который надо читать и чтобы мне не городить городушек я его просто считываю . по адресу . а так получается мне придется делать таблицу соответствия адресов . например если я получил адрес 0x88 то это trisD; и так далее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    514

Курите на тему указателей. Все регистры спокойно через них читаются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот выкладываю свой не доделанный modbus с программой тестером и мануалом которым пользовался , пока нет надобности доделывать. http://rghost.ru/8Xb7RVP2c

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    514

А сюда выложить, не ? Зачем использовать сторонние файлообменники, если форум позволяет прикреплять файлы такого размера ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас