DVyacheslavN

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

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

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

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


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

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

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

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

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

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


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

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


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

пишу 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    494

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

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

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

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


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

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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
Alex    494
должно быть 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    494

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

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

TRISD = 0xAA;
var = TRISD;

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


  • Сообщения

    • Согласен с вами. Недавно микшер ремонтировал (тоже звуковая аппаратура), внутри сплошная керамика и электролиты. Я ещё слышал про сетевые трансформаторы специально для питания усилителей, которые наматывались под музыку Бетховина и Баха.
    • Вы так и не ответили на основной вопрос. Исправный ИИП стабилизирован и должен выдавать 5 Вольт без всяких "просадок" на токах до 4 Ампер. Так сколько потребляет плата при "просадке"? Дел-то, дорожку разрезать и померять...  Ток больше 4А - ищите, куда утекает. Меньше 4А - "кривой"  ИИП. Никаких чудес, и вопрос решен. 5 минут. 
    • Есть ферриты и трансы. Не могу однозначно идентифицировать даже по маркировке, может кто сталкивался с продукцией Pulse. Комплект в подарок за даташит или что-то похожее. Да и интересно вообще все это?  
    • Абжатова Айгуль. Есть такой продавец на украинских интернет аукцыонах. И магазины вроде какие то есть. Доказывал мне что irf840 не могут работать в электронном баласте на 250w. Потому что у транзисторов мошность меньше по даташиту. Еще и отправлял закон ома учить ну и всякие нехорошие слова. Непомогло даже видео на котором я ему показываю как настоящие irf840 а не его перемарк свободно качают лампу 250w. Даже документ от ir не помог. Не ведитесь на низкие цены. Ибо получите не то за что заплатили. Вот кусок. спрашиваю. может ли irfz44 включать и выключать нагрузку 500W. отвечает теперь о 44, смотрим даташит http://www.vishay.com/docs/91291/91291.pdf неужели трудно посмотреть,что он максимально рассеивает 150Вт..... ну и где 500.Элементарные вещи же....хоть немного напрягайтесь
    • Распай с оборудования связи европейской сборки. Количество и цена пробные. Что целесообразно проверить, проверяется. Торг, скидки за объем. Оплата/доставка по договоренности.  Со спойлером не разобрался,  фото есть на все позиции. В облаке. Интересна критика.      
    • Меня впишите в свою компанию посмотреть/почитать, мож и я чего ...