sn75176 problēmu

L

losturcos

Guest
čau!
i am pieņemšanas kārtas savienojums rs485 starp pic18f452 un pic16f628.
Šī procedūra ir viena sūtīt baits ziņu citu get it un atbildes kā ok msg.Tas notiek trīs reizes.Tad saņēmēja kļūst par sūtītāja, un to pašu procedūru notiek.
Tagad, programmā darbu, ja es savienotu RX un TX pins tieši.Bet, kad izmantoju sn75176,
pa vienai katrā pic, tas nedarbojas.I iestatītu DERE pin augstu pirms ziņu sūtīšanas un skaidrs, ka pēc nosūtīšanas, tas ir gandrīz tikai starpība kodu.Nav datu pārraidi.Ja man ir liela kavēšanās (150ms) pēc tam, kad nosūtītāja msg, divas vai trīs transmisiju, šķiet, notikt.Pēc tam tā ir slēgts vēlreiz.Kāds varētu būt šo problēmu būt?Vai jums ir guess.Es nosūtīt kodu, kad es sagatavotu tās nosūtīšanai.

Pateicība.

Piezīme: izmantot ne pārtrauc.

 
Polski oddział MasterCard ogłosił dwuletni Program Rozwoju Handlu Elektronicznego, mający zachęcać właścicieli e-sklepów - oraz ich klientów - do korzystania z płatności bezgotówkowych, zamiast popularnych płatności typu Cash on Delivery (CoD). Wsparcie dla przedsiębiorców z tego tytułu tylko w 2015 roku wyniesie 4 mln zł. Jak po nie sięgnąć, i co można zyskać?

Read more...
 
Ja izmantojat RS485 vadītāja RE pin bloķēt cilpa aizmugurē Tx datus uz vietējo uztvērējs UART, jums ir arī
vieta ir pullup rezistors pie RxD pin, citādi Peldošā RxD līmenis var izraisīt ierāmēšanu kļūda uztvērēja
un bloķētu UART, ja vien Jūs reset kļūdu.

 
<img src="http://img188.imageshack.us/img188/7816/basit1.jpg" border="0" alt=""/>Šis ir vienkāršs Proteus shēma sērijas savienojums daļa no mana projekta.
Un kodus, piemēram, šādi:
Kods:/ / SerLib.h

# ifndef SERLIB_H_

# define SERLIB_H_# endif / * SERLIB_H_ * /# define Baud 9600

# define FOSC 4000000L

# define deviņiem 0 / * Izmantojiet 9bit komunikācija?
FALSE = 8bit * /# define dalītājs ((int) (FOSC / (16UL * Baud) -1))

# define HIGH_SPEED 1# ja deviņiem == 1

# define NINE_BITS 0x40

# citur

# define NINE_BITS 0

# endif# ja HIGH_SPEED == 1

# define ĀTRUMS 0x4

# citur

# define SPEED 0

# endif# define RX_PIN TRISB1

# define TX_PIN TRISB2/ / anulēts SendChar (neparakstīta īpašības);

neparakstīts CHAR ReceiveChar (spēkā neesošs);

neparakstīts CHAR getche (spēkā neesošs);

anulēts init_comms (spēkā neesošs);anulēts init_comms ()

(

TRISB1 = 1;

TRISB2 = 0;

SPBRG = dalītāju;

RCSTA = (NINE_BITS | 0x90);

TXSTA = (ĀTRUMS | NINE_BITS | 0x20);

/ / RCIE = 1;

/ / GIE = 1;

)anulēts SendChar (neparakstīta CHAR baits)

(

serialEnable = SEND_ENABLE;

while (! TXIF)

turpināšanu;

TXREG = baits;

serialEnable = RECEIVE_ENABLE;

)neparakstīts CHAR ReceiveChar ()

(

atgriezties RCREG;

)
 
In RS485 puse dubults režīmā, jums būs rūpēties par virzienā kontroli pienācīgā veidā.

Pēc raidot, ja jūs pārbaudīt to TX buferis ir tukšs, un pēc tam pāriet uz saņemt režīmā, pēdējā baits joprojām būtu raidot ar pārraidīšana reģistrā ....Jums tiks truncating pēdējā baits pa vidu of transmission.

Līdz ar to pārbaudīt, TX REĢISTRĒTIES un ne TX buferis ir tukšs PIRMS komutācijas saņemt režīmā.Vēl labāk, sniedz 1 mS aizkavi pirms pārslēgšanas saņemt režīmā.

Pārējās beigām būtu jārūpējas ne atbildēt pirms 1 mS.

Hope this helps.

Urravas

Ravi

 
I kontrolē TRMT bitu, un viens baits transmission veiksmīgi nosūtīts.Bet tad nav pārraides notiek.Es atklāju, ka rāmis kļūda ir iemesls, bet es nevarēju atrast to, kā risināt šo problēmu vēl nav.

 
Arī neaizmirstiet izvirzīti divi termināls rezistori starp A un B (pins 6 un 7), skat 75176 pdf

 

Welcome to EDABoard.com

Sponsor

Back
Top