DVyacheslavN

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

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

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

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


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

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

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

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

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

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


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

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


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

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

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

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

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

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


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

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

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

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

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


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

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

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

TRISD = 0xAA;
var = TRISD;

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


  • Сообщения

    • Это шумодав гитарный. Делали люди знающие. Вот ссылка - http://guitar-gear.ru/2016/noise-gate/.
      Сайт известный. Люди говорят хороший шумодав. Там где то есть на форуме тема по этой сборке.
    • На первом фото справа- преобразователь DC\DC, так что врядли вместо этого могучего ЗУ. А блок на тиристоре и Д226- реле по высокой стороне, имхо. Типа выключает все это устройство при заряженном акке
    • Нет слов. Какая физика? Просто a=b*c; d=a*b. Задача: выразить одно через другое. Проходил это в 6 классе 50 лет назад. Сейчас, наверное в третьем проходят, не знаю. И потом: если уж подался в электронику, то должен четко понимать, что за звери такие: ток, сопротивление, напряжение, мощность и пр. Мощность не оседает, а выделяется на сопротивлении в виде тепла в точном соответствии с законом Ома.
    • И несколько она износостойкая? Она же бывает разных внутренних диаметров?
    • Помогите советом. Немного не про Акулиничева, но все же ... Вопрос о измерении параметров усилителя. Есть усилитель, двойное моно (на моем фото на этой странице в начале) свои трансы, свои блоки питания на каждый канал, свои платы защит со своими раздельными источниками питания с отдельных обмоток трансформаторов своих каналов, земли каналов соединены на входных разъёмах и там же сидят на корпусе. от руки набросал. Как подключены цепи измерений тамже на картинке - нагрузка 4 ома, делитель, далее Цап с балансными входами, выход цапа идет на вход усилителя. Земли цапа входов и выходов между собой не соединены (балансные входы), между собой соединены земли выходных разъемов цапа. Земляных петель нет. Ситуация такая - на выходе усилителя медленные транзисторы (корпус то-3 с частотой 3мгц). Все скоммутировано для измерений. На мощности 25 ват появляется конкретный "мех" в спектрлабе (смотри картинку, только уровнем до -10 дб, не догадался сфотать в нужный момент), не плавно, скачкообразно появился и он есть с одной амплитудой, не зависящей от дальнейшего увеличения входного сигнала. На осциллографе проявляется в дрожании нижней части синусоиды на отрицательной полуволне. Не лечится никакими штатными корректирующими цепями (конденсатор база колектор), никакой реакции. Когда питание одного канала отключаю (убираю предохранители по плюсу и минусу, идущему на плату усилителя) скажем образно "возбуд" остается во втором канале. Когда отпаиваю земли , идущие на обесточенный канал (на картинке карандашом отделил)  от разьема "возбуд" пропадает. При замене транзисторов на более быстрые (частота более 15 мгц) картина повторяется во всем, но начинается эта гадость с 3х ват!!! И эта гадость ничем не убирается (кандер база колектор). Немного можно задавить емкостью между коллекторами дифкаскада (470 пф). Гадость начинается с примерно 12 ват. Подскажите, на что это больше похоже - на неустойчивость усилителя, или всё-таки усилитель конфликтует какимто образом с цапом ? Такое ощущение, что с быстрыми транзисторами усилитель раньше реагирует на непонять что. Закралось подозрение, что я у Акулиничева наизмерял не понять что...  
    • Переменники в наличие! Ручки к переменникам также в наличие!