
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hey, Jo, > > Problem: Habe mein altes 2W-Bus-Modem mit I2C-Schnittstelle > über den Jordan gejagt! > > Bei Conrad gibt es nur noch das Modem-SM mit serieller > Schnittstelle RS232.(Hutschienenmodell) > Frage: Da ja an der CControl Basic-Unit eine 2. serielle > Schnittstelle vorhanden ist, die bisher bei mir immer > brach lag (angeschlossen an Ports PA 6 und 7 und schon verdrahtet mit dem Schnittstellenwandler MAX232) möchte ich > diese mittels eines Treibers für dieses Modem aktivieren. > Die 1. Schnittstelle bleibt dann auch wunderbar frei für > den Terminalanschluss und ich habe noch 2 Ports dazugewonnen.(PB 6 und 7 - kann man immer gebrauchen.) > Hat jemand dafür eine Lösung parat, wie man das Modem > über diesen Anschluss kommunizieren lassen kann? > Für Hilfe wäre ich sehr dankbar. Man muß noch ein neues Datenkabel zusammenbauen, wo die Kabel für RTS und CTS herausgeführt sind.Die schließt man dann an die das 2W-Bus Modem-SM an. Pin7 nach Modem RX Pin8 nach Modem TX Jetzt ist es möglich mit dem Modem und C-Contol Station zu kommunizieren und gleichzeitig ein Terminalprogramm am PC zu benutzen. ;-------------------------------------------------------------------------- ;Treiberprogramm zum Ansteuern des 2W-Bus Modems-SM mit serieller Schnittstel- ;le an der C-Control Basic, Ports A7(RTS) u. A8(CTS).Es wird jeweils ein Da- ;tenramen von 8 Bytes bertragen, beim Senden MSB zuerst. ;Vorbereitung zum Senden brset $06,$00,spr11;jump if Pin7,PortA high loop1: brset $07,$00,loop1 loop0: brclr $07,$00,loop0 bset $06,$00 ;Pin 7 von PortA high setzen (RTS) ;----------------------------------------------- ; Senderoutine spr11: ldx #$00 spr4: lda $a1,x ;Anfang Buffer (sog. RS232 Schnittstelle) $a1-$a8, wie beim 2W-Bus Modem mit I2C Schnittstelle incx ; stx $dc ;Register zwischenspeichern (RAM-Speicherstelle) sec ;markiert des Ende der Bytes (set carry) $111 spr1: bclr $06,$00 ;Pin 7 von Port A low setzen (Startbit senden) spr2: ldx #$20 ;Verzgerung spr3: decx bne spr3 rora ; rotate right thru carry, LSB zuerst bcc spr1 ; branch if carry clear clc ; alle Bits die im Datenbyte gestzt sind werden $120 ; gelscht,so da?am Ende im accu 0 steht bset $06,$00 ; eine 1 senden (keine Beeinflussung der Flags) bne spr2 ; alle 8 Bits bertragen?,dann Aussprung bset $06,$00 ; Stopbit setzen ldx #$20 ; Verzgerung spr5: decx bne spr5 ldx $dc cpx #$08 ; alle 8 Byts durch? bne spr4 ;----------------------------------------------- ; Empfangsroutine ; bclr $07,$04 ; Pin 8 PortA auf Eingang schalten (CTS) ; (nicht ntig, alle Ports sind bei Initialisie- ; rung auf Eingang geschaltet ldx #$a1 ; Startadresse Buffer nach (x) spr6: brset $07,$00,spr6 ; Pin 8 PortA low, warten auf Startbit lda #$31 ;Verzgerung, 2 cycles $132 spr7: deca ; 1 cycle bne spr7 ; 2 3*32+2=98 lda #$80 ;im accu jetzt Byte: b10000000 sta,x ;das gesetzte Bit1 wird jeweils 8 mal nach spr10: brclr $07,$00,spr8 ;rechts geschoben und wird dann zum carry, spr8: lda #$22 ;was den Aussprung aus der Schleife bewirkt. spr9: deca ;Verzgerung bne spr9 ror,x ;carry bit speichern, LSB zuerst $142 bcc spr10 ;weiter bis alle 8 Bits empfangen ;spr11: brclr $07,$00,spr11;warte solange PortA,Pin 8 low ist incx ;ist das letztes Byte empfangen? cmpx #$a9 bne spr6 ; cli rts |
| Antwort schreiben |