Pic Seri iletişim ve Sms Gonderme

serkank

Üye
Katılım
1 Eki 2008
Mesajlar
151
Puanları
1
Yaş
39
pic 16f917 ile Seri iletişimden Telefona At Komutlarını Gondermeye calısıyorum
Ama nedense Bir sorun oluyor. Pic ten Telefona "AT" ve 13 gonderiyorum
telefondan Bana "AT" , 13 , "OK",13 Seklinde bir veri gelmesi gerekiyor
PIC e ekledigim LCD den Kontrol ediyorum ama bu veri gelmiyor.
Pic ile seri iletişim konusunda bilgili olan varmı acaba ?
 

Merhaba.

Birkaç sorum olacak;
- Cip'in Rx ve Tx pinlerini mi kullandın?
- Telefon mu yoksa GSM module mu kullanıyorsun?
- Telefon/GSM module bağlantısını nasıl yaptın?
Yani
Pic'in Rx'i Telefon/GSM Module Tx,
Pic'in Tx'i Telefon/GSM Module Rx şeklinde mi bağladın?
Bunları yazarsan daha çok yardımcı olmaya çalışırım.

Saygılar...
 
Pic 16f917 - 16f 877 ile aynı sayılır. Picin c portundaki rx ve tx pinlerini kullandım
simens c55 Telefon ve kablosu var. Bu Telefon ve kaplo ile hyper terminalden sorunsuz iletişim kurabiliyorum.
Picin TX pinini kablodaki connectorun 2 nolu pinine Ve Rx Pininide 3 nolu pini ile bagladım
Kablo portunun 5 nolu pinini gnd ye bagladım . calısmadı. ayrıca RX ve TX pinlerinin yerinide degistirdim. yine calısmadı .

Telefon 3.3 v ile calısıyor. max232 ile arada bir devre kurdum yine calısmadı..
kodu Pic basicte yazdım Kodun ilgili kısmı soyle

Bu kod ile bana geri donmesi gereken
OK veya Error Gibi bir Veri Olması gerekiyor
ama LCD ekranında Tek karakter bir Veri var.
EKLEME
Picin RX TX uclarını direk birbirine baglayınca Gonderdigim veriyi LCD de goremyirum
ornegin Serkan gonderdigimde Veriden Sadece Sen olarak geri alabiliyorum
yada AT+CGMI=? verisinden AT? verisini geri alabiliorum
 
Son düzenleme:
LCD Programında bi problem olma ihtimali var mı?

Ayrıca bildiğim kaadarı ile GSM Modullerde Rx pini pic'in veya RS232 kullanarak PC ye bağlantıda Rx pinlerine, aynı şekilde GSM Modullerde Tx pini pic'in veya RS232 kullanarak PC ye bağlantıda Tx pinlerine bağlanır.
 
LCD de bir problem yok. Programda LCD ye Tuslarla yazı yazdırıyorum
Bir Tus var Bu Tusa basınca Seri porttan veri gonderiyorum .
ama su dikkatimi cekti. ISIS simulasyonundada aynı sonucu alıyorum

Picin RX ve TX pinini direk birbirine bagladım
Programı Gonderdigim veriyi Rxten tekrar alıp LCD ye yazıcak sekilde degistirdim
AT+CGMI=? verisini gonderdim LCD de ise Sadece AT? verisini Geri alabildigimi gordum.. Aynı sekilde Serkan gonderitiyotum ama geriye sadece Sen verisini alabiliyorum...
Bu arada Programda Timer kullanuyorum ve kesmeler acık. Belki bir etkisi olmusolabilir diye LCD ye veri gondermeden once intcon=0 yaptım
 

PIC C bilmediğim için yardımcı olamıyorum kusura bakma

Fakat istersen Assembly dilinde yardım edebilirim.

Elimde de bi program var istersen bi incele.
AT(0x0D-ENter) gönderiyor. Gelen cevap OK(0x0D)


PROGRAM:
LIST P=16F887
INCLUDE P16F887.INC

INTCNT EQU 0x20 ;TMR0 INTERRUPT 100uS SAYACI

RXWP EQU 0x23 ;RECEIVE POINTER
RXRP EQU 0x24
TXWP EQU 0x25 ;TRANSMIT POINTER
TXRP EQU 0x26

RXBUF EQU 0x110 ;ALAN BUFFER

TXBUF EQU 0x190 ;GONDERME BUFFERI



ORG 0x00
NOP
NOP
GOTO START

ORG 0x04
INTERRUPT
CLRF STATUS ;BANK0
TMR0INT
MOVLW .74
MOVWF TMR0 ;TMR0 100uS INTERRUPT ICIN KURULUR
BCF INTCON,T0IF ;TMR0 INTERRUPT FLAGI SILINDI
INCF INTCNT ;100uS CINSINDEN SAYAC
;SERI HABERLESME
BSF STATUS,IRP ;INDIREK ADRESLEME ICIN BANK2/BANK3 E GECILDI
BTFSS PIR1,RCIF ;SERI PORTTAN GELEN YENI BYTE VAR MI?
GOTO TX_BAK
RX_BAK
BCF PIR1,RCIF
MOVF RXWP,W
ANDLW B'001111111'
ADDLW RXBUF
MOVWF FSR
MOVF RCREG,W
MOVWF INDF
INCF RXWP
BTFSC RXWP,6
BCF RXWP,6
TX_BAK
BTFSC TXWP,7 ;GONDERME ISLEMI TAMAMLANDI
GOTO TX_END
BSF STATUS,RP0 ;BANK1
BTFSS TXSTA,TRMT ;CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D
GOTO TX_END ;TSR MESGUL
BCF STATUS,RP0 ;BANK0
MOVF TXRP,W
ANDLW 0x3F
ADDLW TXBUF
MOVWF FSR
MOVF INDF,W
MOVWF TXREG ;EUSART TRANSMIT REGISTER
INCF TXRP
MOVF TXWP,W
XORWF TXRP,W
ANDLW 0x3F
BTFSS STATUS,Z ;BUFIRDA GONDERILECEK BYTE VAR MI ?
GOTO TX_END ;HAYIR
BSF TXWP,7 ;GONDERME ISLEMI TAMAMLANDI
; CLRF RXTMR ;CEVAP BEKLENECEK
; CLRF RXWP
TX_END
GOTO INTDON

INTDON
CLRF STATUS ;BANK0
RETFIE


START
CLRF STATUS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTE

BSF STATUS,RP1
BSF STATUS,RP0

CLRF ANSEL
CLRF ANSELH

BCF STATUS,RP1
BSF STATUS,RP0

CLRF TRISA

CLRF TRISB ;X X X DET PD D2 D1 D0

MOVLW B'11000000'
MOVWF TRISC ;RX VE TX SERIAL PORT ICIN INPUT OLMALI

CLRF TRISD
CLRF TRISE

MOVLW B'10001000'
MOVWF OPTION_REG ;RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

MOVLW B'01110001'
MOVWF OSCCON ;8MHz INTERNAL OSCILLATOR SECILDI.


MOVLW B'00100100' ;CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D
MOVWF TXSTA ;TRANSMIT STATUS AND CONTROL REGISTER
;CSRC: Synchronous mode Clock Source Select bit
;TX9:1= 9-bit Transmit Enable bit ),0 = Selects 8-bit transmission
;TXEN: 1 = Transmit enabled,0 = Transmit disabled
;SYNC: 1 = Synchronous mode,0 = Asynchronous mode
;SENDB:1 = Send Sync Break on next transmission,0 = Sync Break transmission completed
;BRGH: High Baud Rate Select bit 1 = High speed,0 = Low speed
;TRMT: Transmit Shift Register Status bit 1 = TSR Idle,0 = TSR busy
;TX9D: 9th bit of Transmit Data Can be address/data bit or a parity bit.

MOVLW B'00000000'
MOVWF OSCTUNE ;OSCILLATOR TUNING REGISTER

MOVLW .51 ;8 MHZ
MOVWF SPBRG ;9600 BAUD RATES

BSF STATUS,RP1
BSF STATUS,RP0


MOVLW B'00000000' ;— RCIDL — SCKP BRG16 — WUE ABDEN
MOVWF BAUDCTL ; BAUDCTL: BAUD RATE CONTROL REGISTER
;RCIDL: Receive Operation Idle Status bit 1 = Receiver is Idle,0 = Receiver is busy
;SCKP: Synchronous Clock Polarity Select bit Asynchronous mode Unused in this mode.
;BRG16: ;1 = 16-bit Baud Rate Generator – SPBRGH and SPBRG,;0 = 8-bit Baud Rate Generator – SPBRG only
;WUE: Wake-up Enable bit 0 = RX pin not monitored or rising edge detected
;ABDEN: Auto-Baud Detect Enable bit
;Asynchronous mode:
;1 = Enable baud rate measurement on the next character – requires reception of a Sync byte
;(55h); cleared in hardware upon completion
;0 = Baud rate measurement disabled or completed

BCF STATUS,RP1
BCF STATUS,RP0

MOVLW B'10010000' ;SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
MOVWF RCSTA ; RECEIVE STATUS AND CONTROL REGISTER
;SPEN: 1 = Serial port enabled (configures RX/DT and TX/CK pins as serial port pins)
;RX9: 1 = Selects 9-bit reception,0 = Selects 8-bit reception
;SREN: Single Receive Enable bit,Asynchronous mode Don’t care.
;CREN: Asynchronous mode,1 = Enables receiver,0 = Disables receiver
;ADDEN: Address Detect Enable bit,0 = Disables address detection,
;FERR: Framing Error bit,1 = Framing error (can be updated by reading RCREG register and receiving next valid byte)
;OERR: Overrun Error bit,1 = Overrun error (can be cleared by clearing bit CREN)
;RX9D: 9th bit of Received Data


CLRF INTCNT ;TMR0 100uS INTERRUPT SAYACI

CLRF RXWP ;GELEN BUFFERA YAZMA SAYACI
CLRF RXRP ;GELEN BUFFERSAN OKUMA SAYACI
CLRF TXWP ;GONDERME BUFFERI YAZMA SAYACI
CLRF TXRP ;GONDERME BUFFERI OKUMA SAYACI

MOVLW RXBUF
MOVWF FSR
BSF STATUS,IRP
CLRF RXWP

SIL
BTFSC RXWP,6
GOTO SIL_0
CLRF INDF
INCF FSR
INCF RXWP
GOTO SIL

SIL_0
CLRF STATUS
CLRF RXWP
CLRF TXWP

BSF STATUS,RP1
BSF STATUS,RP0

MOVLW "A"
MOVWF TXBUF

MOVLW "T"
MOVWF TXBUF+1


MOVLW 0x0D
MOVWF TXBUF+2

BCF STATUS,RP1
BCF STATUS,RP0

MOVLW .3
MOVWF TXWP

MOVLW B'10100000' ;GIE PEIE TOIE INTE RBIE T0IF INTF RBIF
MOVWF INTCON


MAIN
CLRF STATUS
BTFSS INTCNT,5
GOTO MAIN
BCF INTCNT,5 ;100uS x 32 = 3.2mS
NOP
GOTO MAIN

END
 
Cok Teşeşkkur ederim Saol Bunu incelim biraz. Belki daha sonra Tekrar birşeyler sorarım
 
benzeri bir sorunu bende yasıyorum
yardımcı olursanız sevinirim
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…