PIC18 & RS-485 support

Jun 13, 2006 3 Replies

All,



þÉÔÁÀ ÎÁ ÐÅÒ×ÙÈ ÓÔÒÁÎÉÃÁÈ ÄÁÔÁÛÉÔÏ× ÎÁ ðéë18 ÓÌÅÄÕÀÝÅÅ: Peripheral Features: Two Addressable USART modules:

- Supports RS-485 and RS-232



HÕ, ÄÕÍÁÀ, ÎÁËÏÎÅÃ-ÔÏ ÄÏÂÁ×ÉÌÉ ÎÏÒÍÁÌØÎÕÀ ÐÏÄÄÅÒÖËÕ ÄÌÑ ÏÒÇÁÎÉÚÁÃÉÉ RS-485 É ÎÅ ÎÁÄÏ ÂÕÄÅÔ ÏÐÒÁÛÉ×ÁÔØ ÂÉÔ TRMT (ÏÐÕÓÔÏÛÅÎÉÑ ÓÄ×ÉÇÏ×ÏÇÏ ÒÅÇÉÓÔÒÁ) ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÍÏÍÅÎÔÁ ÐÅÒÅËÌÀÞÅÎÉÑ ÎÁÐÒÁ×ÌÅÎÉÑ, ÕÖ ÂÏÌØÎÏ ÜÔÏ ÎÅÕÄÏÂÎÏ, ÐÏ ÐÒÅÒÙ×ÁÎÉÀ ÂÙÌÏ ÂÙ ÎÁÍÎÏÇÏ ËÕÚÑ×ÅÊ. èÅÈ, ÒÁÚÍÅÞÔÁÌÓÑ...



þÉÔÁÀ ÇÌÁ×Õ "ADDRESSABLE UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER (USART)", Á ÔÁÍ ×ӣ ÐÏ ÓÔÁÒÏÍÕ, ÞÔÏ É ÂÙÌÏ Õ 16-È ÐÉËÏ×, É ÎÉËÁËÉÈ ÓÌÏ× ÐÒÏ Supports RS-485. íÏÖ ÎÅ ÔÁÍ ÞÉÔÁÀ? ëÏÌÌÅÇÉ, ÐÏÄÓËÁÖÉÔÅ ÐÌÉÚ.
÷ÌÁÄÉÍÉÒ þÅËÉÎ

VC> Читаю на первых страницах даташитов на ПИК18 следующее: VC> Peripheral Features: VC> Two Addressable USART modules: VC> - Supports RS-485 and RS-232

VC> Hу, думаю, наконец-то добавили нормальную поддержку для организации RS-485 и VC> не надо будет опрашивать бит TRMT (опустошения сдвигового регистра) для VC> определения момента переключения направления, уж больно это неудобно, по VC> прерыванию было бы намного кузявей. Хех, размечтался...

А ты по прерыванию и работай - не опрашивай этот бит. Посылаешь последний байт, запускаешь таймер, и по его отработке переключаешься. Этот же таймер задействуй для фиксации конца кадра посылки от мастера (Модбас)

VC> Читаю главу "ADDRESSABLE UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER VC> TRANSMITTER (USART)", а там всё по старому, что и было у 16- х пиков, и VC> никаких слов про Supports RS-485. Мож не там читаю? Коллеги, подскажите плиз.

а в чем, по твоему, должна заключаться эта поддержка? камню все пофигу, что у него на юарте - 232, 422, 485

Rifkat,

RA> á ÔÙ ÐÏ ÐÒÅÒÙ×ÁÎÉÀ É ÒÁÂÏÔÁÊ - ÎÅ ÏÐÒÁÛÉ×ÁÊ ÜÔÏÔ ÂÉÔ. ðÏÓÙÌÁÅÛØ RA> ÐÏÓÌÅÄÎÉÊ ÂÁÊÔ, ÚÁÐÕÓËÁÅÛØ ÔÁÊÍÅÒ, É ÐÏ ÅÇÏ ÏÔÒÁÂÏÔËÅ ÐÅÒÅËÌÀÞÁÅÛØÓÑ. RA> üÔÏÔ ÖÅ ÔÁÊÍÅÒ ÚÁÄÅÊÓÔ×ÕÊ ÄÌÑ ÆÉËÓÁÃÉÉ ËÏÎÃÁ ËÁÄÒÁ ÐÏÓÙÌËÉ ÏÔ ÍÁÓÔÅÒÁ RA> (íÏÄÂÁÓ) üÔÏ ÐÏÎÑÔÎÏ. HÏ ËÁË-ÔÏ ÎÅÓÉÓÔÅÍÎÏ ÐÏÌÕÞÁÅÔÓÑ. åÓÔØ ÐÅÒÉÆÅÒÉÊÎÙÊ ÍÏÄÕÌØ USART ÓÏ Ó×ÏÉÍÉ ÐÒÅÒÙ×ÁÎÉÑÍÉ, Á Ë ÎÅÍÕ ÎÁÄÏ Åݣ ÍÏÄÕÌØ ÐÒÉËÒÕÞÉ×ÁÔØ. ðÏÄ ËÁÖÄÕÀ ÓËÏÒÏÓÔØ ÎÁÄÏ ÐÒÉËÉÄÙ×ÁÔØ ÜÔÏ ×ÒÅÍÑ ÄÌÑ ÚÁÇÒÕÚËÉ ÄÏÐÏÌÎÉÔÅÌØÎÏÇÏ ÔÁÊÍÅÒÁ. óÍÅÎÉÌ ÓËÏÒÏÓÔØ, ÞÁÓÔÏÔÕ Ë×ÁÒÃÁ, ÎÅ ÚÁÂÕÄØ ÔÁÊÍÅÒ ÐÅÒÅÓÞÉÔÁÔØ. á ÂÙ×ÁÅÔ ÔÁË, ÞÔÏ ÎÅÔ Ó×ÏÂÏÄÎÙÈ ÔÁÊÍÅÒÏ× É ÎÁÄÏ ÏÒÇÁÎÉÚÏ×Ù×ÁÔØ ÐÅÒÅËÉÄËÕ ÔÁÊÍÅÒÁ ÍÅÖÄÕ ÆÕÎËÃÉÑÍÉ, ÞÔÏ ÐÌÏÄÉÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÒÏÂÌÅÍÙ. ÷ ÄÒÕÇÏÊ ÚÁÄÁÞÅ ÐÒÉģÔÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÒÕÇÏÊ ÔÁÊÍÅÒ, ÐÏÔÏÍÕ ÞÔÏ ÜÔÏÔ ÐÏ ËÁËÉÍ-ÔÏ ÓÏÏÂÒÁÖÅÎÉÑÍ ÂÏÌÅÅ ÎÕÖÅÎ × ÄÒÕÇÏÍ ÍÅÓÔÅ, Õ ðéëÏ× ÔÏÌØËÏ ÏÄÉÎ ÔÁÊÍÅÒ TMR0 ÎÅÚÁ×ÉÓÉÍÙÊ, ÎÁ ×ÓÅ ÏÓÔÁÌØÎÙÅ ÎÁ×ÅÛÁÎÙ ËÁÐÞÕÒÙ É ÛÉÍÙ. ô.Å. ÐÉËÏÍÁÎÓÔ×Ï × ÞÉÓÔÏÍ ×ÉÄÅ, ÓÐÁÓÉÂÏ ÷.÷ÁÓÉÌÅ×ÓËÏÍÕ ÚÁ ÍÅÔËÉÊ ÔÅÒÍÉÎ :)

VC>> þÉÔÁÀ ÇÌÁ×Õ "ADDRESSABLE UNIVERSAL SYNCHRONOUS VC>> ÎÉËÁËÉÈ ÓÌÏ× ÐÒÏ Supports RS-485. íÏÖ ÎÅ ÔÁÍ ÞÉÔÁÀ?

RA> Á × ÞÅÍ, ÐÏ Ô×ÏÅÍÕ, ÄÏÌÖÎÁ ÚÁËÌÀÞÁÔØÓÑ ÜÔÁ ÐÏÄÄÅÒÖËÁ? âÙÌÁ ÎÁÄÅÖÄÁ, ÞÔÏ ÄÏÂÁ×ÉÌÉ ÐÒÅÒÙ×ÁÎÉÅ ÐÏ ÏËÏÎÞÁÎÉÀ ÓÔÏÐ ÂÉÔÁ, ÞÔÏ ÎÅ ÚÁÍÏÒÁÞÉ×ÁÔØÓÑ Ó ÏÐÒÏÓÏÍ TRMT ÉÌÉ ÄÏÐÏÌÎÉÔÅÌØÎÙÍ ÔÁÊÍÅÒÏÍ.

RA> ËÁÍÎÀ ×ÓÅ ÐÏÆÉÇÕ, ÞÔÏ Õ ÎÅÇÏ ÎÁ ÀÁÒÔÅ - 232, 422, 485 ëÁÍÎÀ ÄÁ, ×ÎÅÛÎÅÊ ÐÅÒÉÆÅÒÉÉ É ÐÒÏÇÒÁÍÍÅ ÎÅÔ: 232 ÄÒÁÊ×ÅÒ ÐÏÌÎÙÊ ÄÕÐÌÅËÓ, ÔÁÍ ÜÔÏ ÐÏÆÉÇ, Á 485 ÐÏÌÕÄÕÐÌÅËÓ - ÎÁÄÏ ×Ù×ÏÄ ÎÁÐÒÁ×ÌÅÎÉÑ ÐÅÒÅÄÁÞÉ ÎÁ ÄÒÁÊ×ÅÒÅ ÐÅÒÅËÌÀÞÁÔØ.

÷ÌÁÄÉÍÉÒ þÅËÉÎ

RA>> А ты по прерыванию и работай - не опрашивай этот бит. Посылаешь RA>> последний байт, запускаешь таймер, и по его отработке переключаешься. RA>> Этот же таймер задействуй для фиксации конца кадра посылки от мастера RA>> (Модбас) VC> Это понятно. Hо как-то несистемно получается. Есть периферийный модуль USART VC> со своими прерываниями, а к нему надо ещё модуль прикручивать. Под каждую VC> скорость надо прикидывать это время для загрузки дополнительного таймера. VC> Сменил скорость, частоту кварца, не забудь таймер пересчитать.

А фиг его знает, что они этот недостаток таскают из серии в серию. Да и программирование а-ля I2C (ножки еще одной, что-ли, жалко?)- чего бы не перейти в нормальный SPI - и скорости, и удобство в разы возросло бы

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required