\ Soft Uart test on Beta V0.86, with Tx/Rx buffering \ Provided by GTiani \ \ The routine transmits on PE6 and receives on PE7. \ Connect a jumper from PE6 to PE7. \ The software checks to see if the transmitted character \ is equal to the received character. \ The values, count and errors are displayed. \ \ I tested the software uart up to 1,000,000 characters with no errors. \ SCRUB VARIABLE TX2-BUFFERv 25 ALLOT EEWORD VARIABLE RX2-BUFFERv 25 ALLOT EEWORD VARIABLE COM2BUFv 100 ALLOT EEWORD \ bytes = 2N-7 VARIABLE WAKEv : SET-TIME-OUT \ N --; WAKEv ! 0 TCFTICKS ! ; EEWORD : WT \ N --; SET-TIME-OUT BEGIN TCFTICKS @ WAKEv @ > UNTIL ; EEWORD : ASCII ( "a" -- n ) BL WORD 1+ C@ [COMPILE] LITERAL ; IMMEDIATE EEWORD : S" ( "string" -- a) STATE @ IF COMPILE BRANCH >MARK THEN ASCII " WORD DUP >R C@ 1+ ALLOT STATE @ IF >RESOLVE THEN R> [COMPILE] LITERAL ; IMMEDIATE EEWORD : TIME? TCFTICKS @ WAKEv @ > ; EEWORD : SET-COM2 PE6 ON \ init PE6 as output PE7 ON? DROP \ init PE7 as input TX2-BUFFERv 20 PE6 TXBUFFER RX2-BUFFERv 20 PE7 RXBUFFER 9600 PE6 BAUD 9600 PE7 BAUD ; EEWORD : TX2? PE6 TX? ; EEWORD : TX2 PE6 TX ; EEWORD : RX2? PE7 RX? ; EEWORD : RX2 PE7 RX ; EEWORD : TYPE-COM2 \ str-adr cnt --; send string to com1 port 0 DO DUP I + @ TX2 \ send each char in string LOOP DROP ; EEWORD : CR-LF2 13 TX2 10 TX2 ; EEWORD DVARIABLE DCNTv EEWORD VARIABLE CHR-TXv EEWORD VARIABLE CHR-RXv EEWORD VARIABLE ERR-CNTv EEWORD : TEST-COM2 SET-COM2 \ set up com2 0 ERR-CNTv ! \ zero error count 0. DCNTv D! \ zero counter BEGIN BEGIN PE6 TX? 0= NOT UNTIL \ wait for room RAND 255 AND CHR-TXv ! \ get a random char CHR-TXv @ PE6 TX \ send random char 100 SET-TIME-OUT BEGIN PE7 RX? 0= NOT \ wait for data TIME? OR \ or time-out UNTIL TIME? IF -1 CHR-RXv ! \ dummy read if time-out ELSE PE7 RX CHR-RXv ! \ read char THEN DCNTv D@ 10. DMOD 0. D= IF CR DCNTv D@ D. ." ERR=" ERR-CNTv @ . THEN CHR-RXv @ . CHR-TXv @ CHR-RXv @ = NOT IF CR 1 ERR-CNTv +! ." **ERROR** " ." RECEIVED " CHR-RXv @ . ." SHOULD BE " CHR-TXv @ . ." TIME IS " TCFTICKS @ . CR THEN DCNTv D@ 1. D+ DCNTv D! ?KEY UNTIL ; EEWORD \ TEST-COM2