Λοιπόν, η συνδεσομολογία είχε προβλήματα οπότε έφτιαξα νέο κύκλωμα. Χρησιμοποίησα αυτή τη φορά MAX232 και ανέβασα και το σχηματικό (οι 2 πυκνωτές στο κρύσταλλο είναι 22nF ο καθένας).
Ο κώδικας σε assembly είναι ο εξής:
Κώδικας:
LIST P=16F688
INCLUDE P16F688.INC
INCLUDE INITMC.ASM
ERRORLEVEL -302,-205,-207
__CONFIG _FCMEN_OFF & _IESO_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_ON & _XT_OSC
ORG H'00'
GOTO RESET
ORG H'20'
RESET CALL INITIALIZE
BSF PORTA,2 ;rts
BTFSS PORTC,3 ;check if a cts has arrived
GOTO $-1 ;else check again
MOVLW 'A'
MOVWF TXREG
CALL TXWAIT
MOVLW 'T'
MOVWF TXREG
CALL TXWAIT
MOVLW '+'
MOVWF TXREG
CALL TXWAIT
MOVLW 'C'
MOVWF TXREG
CALL TXWAIT
MOVLW 'P'
MOVWF TXREG
CALL TXWAIT
MOVLW 'I'
MOVWF TXREG
CALL TXWAIT
MOVLW 'N'
MOVWF TXREG
CALL TXWAIT
MOVLW '='
MOVWF TXREG
CALL TXWAIT
MOVLW 0x31 ;1
MOVWF TXREG
CALL TXWAIT
MOVLW 0x32 ;2
MOVWF TXREG
CALL TXWAIT
MOVLW 0x33 ;3
MOVWF TXREG
CALL TXWAIT
MOVLW 0x34 ;4
MOVWF TXREG
CALL TXWAIT
MOVLW 0x0D ;CR
MOVWF TXREG
CALL TXWAIT
BCF PORTA,1
GOTO $
TXWAIT BTFSS TXSTA,TRMT
GOTO $-1
RETURN
END
και το αρχείο initmc.asm είναι το εξής:
Κώδικας:
ERRORLEVEL -302,-205,-207
ORG H'50'
INITIALIZE
MOVLW B'00000111' ;ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ ΣΥΓΚΡΙΤΗ
MOVWF CMCON0
MOVLW B'00011001' ;CHANNEL 6, AtoD ON
MOVWF ADCON0
BSF STATUS,RP0
BCF TRISA,2 ;PORTA,1 OUTPUT
BSF TRISC,3 ;PORTC,3 INPUT
MOVLW B'01110000' ;ΕΚΤΟΣ ΤΩΝ ΑΝ4-6 ΟΙ ΑΛΛΕΣ ΑΝΑΛΟΓΙΚΕΣ ΕΙΣΟΔΟΙ ΝΑ ΜΕΤΑΒΟΥΝ ΣΕ ΨΗΦΙΑΚΕΣ
MOVWF ANSEL
MOVLW B'01010000' ;Fosc/16,ΡΥΘΜΟΣ ΜΕΤΑΤΡΟΠΗΣ
MOVWF ADCON1
BCF STATUS,RP0
MOVLW B'00100110' ;TX ENABLE,HIGH SPEED
MOVWF TXSTA
MOVLW B'10010000'
MOVWF RCSTA ;ΕΝΕΡΓΟΠΟΙΗΣΗ ΣΕΙΡΙΑΚΗΣ,ΛΗΨΗ
MOVLW B'00001000' ;16BIT BAUD GENERATOR
MOVWF BAUDCTL ;
MOVLW D'8' ;115200BPS
MOVWF SPBRG
RETURN
Το δοκίμασα αρχικά συνδέοντας το κύκλωμα στο PC και λαμβάνει χωρίς πρόβλημα την ακολουθία των χαρακτήρων.
Μέτρησα επίσης τη τάση στο pin Tx στο βύσμα DB9 και έχει τιμή 4.3V αν δώσω 1 στο Tx pin του PIC και 0.09V αν δώσω 0.
Παρ'όλα αυτά αν το συνδέσω με το modem δεν καταφέρνω να το κάνω να δεχτεί την ΑΤ εντολή για να μπει στο δίκτυο.
Παρατήρησα επίσης κάτι ακόμα: τα pin 2 και 6 στο MAX232 δίνουν έξοδο -14 με -16.4V και τα 2 αντί για 8.5V και -8.5 αντίστοιχα όπως αναφέρει το datasheet. Γιατί συμβαίνει αυτό;