ADV11-A vs. ADV11-C and 22-bit Bus
Mark Matlock
mark at matlockfamily.com
Sun Jan 28 12:23:27 CST 2018
Jerry, Noel,
Thanks for your feedback. Also, Noel was correct on the typos I made on DD1, DE1, and DF1. I was copying from a scanned .pdf and some strange OCR translation was occurring and I missed correcting those.
Yesterday I stuck the ADV11-A in a MINC-23 with 256 KB memory and verified that it worked. The CSR is different than a MNCAD and the voltage range bits may be different, but when I connected a 40 pin cable and a IDE to screw terminal connector on the I could match up the +4.5 and -4.5 reference voltage signals with the diagram with the screw terminals and then make voltage changes on channel 0 and see the A/D counts change.
Today, I cut the BDAL18 BC1 trace to ground, verified it still worked in the MINC, then moved it to a PDP-11/73 RSX11M+ system I use for hardware testing. The RSX system was not configured for this card and the default 400 vector conflicts (I think) with the bottom of kernel stack so I’ll need to either move the vector switches on the card down or re-sysgen this test RSX system. Thus, the only quick testing I could do is via the CSR.
Also, to make it easy to see values change I used the 2 digit LED display next to the console port to display the least significant bits of the readings. This is a technique I use to debug interrupt routines as you can write a 2 digit octal number with a simple MOV.
I didn’t loop on the status bit because RSX is multiuser/tasking, but just used a 1 second mark time to assure the conversion was done. This would be changed to an interrupt service routine once I fix the vector issue. Using the LED display made the test code very simple:
.TITLE ADTST
.ENABL LC
.IDENT /280118/
; TKB commands: IDLE/PR:5/-FP=IDLE
.MCALL EXIT$S MRKT$S WTSE$S
LEDCSR = 177524
ADCSR = 170400
ADBUF = 170402
.even
LEDS: MOV #177777,R0
MOV #100,R1 ; COUNT
10$: MOV R0,@#LEDCSR ; Display inverted contents of R0
CLR @#ADCSR ; Clear A/D status register
INC @#ADCSR ; START A/D
MRKT$S #1,#1,#2 ; Set Mark Time for 1 sec on eflg #1
WTSE$S #1 ; Wait for eflg #1
MOV @#ADBUF,R0 ; Get A/D value
BIS #177700,R0 ; Set all bits high but lower 100
; DEC R0 ; this line counts to 77 octal on display
SOB R1,10$
MOV #177777,@#LEDCSR ; Reset LEDs to .
EXIT$S
.END LEDS
So Noel and Jerry, you are correct it is that simple. If the A/D was DMA, that would be another situation (like the RX02 controller).
Best Regards,
Mark
More information about the cctalk
mailing list