VGA Issue with Propeller Professional Development Board Rev A using P8X32A-D40 P1 chip
Hello all,
I am trying to run the PCMProp/Chapter_10/Source/prop_serial_slave_010.spin demo using the Propeller Professional Development Board Rev A (the schematic for it is https://www.mouser.com/datasheet/2/321/parallax_32111-ppdb-reva-schematic-1197376.pdf), but I'm having trouble getting the VGA driver to initialize. With this board I have to using jumper wires to connect the pins that go to the VGA input to the pins for the P1 chip. The schematic linked about does not show which P1 pins the VGA pins should go to so I based it off of the schematic for the Prop Demo Board using the P8X32A-Q44 P1 chip (https://www.robotshop.com/media/files/PDF/propeller-demo-board-schematic-32100.pdf). But this does not seem to be working correctly.
Has anyone else run into this issue or know if my assumption that the pin out for the two chips are identical is incorrect?
Thanks for the help,
Zach
Comments
In your spin code did you select the correct pin group.
Check this schematic, your links don't work
Like this
Make sure you have all resistors in line. Here is the demo board schematic:
So in my spin code I'd call that pin group 2, Prop pins 16 thru 23
Hi @DigitalBob and @Publison ,
Thank you both for the responses.
Pasted below is the snippet of demo code that I'm trying to use with the Prop. Prof. Dev. Board Rev. A (part number 32111). I only copied and pasted up to the point after the VGA is initialized. In this code the base pin is set to 23.
CON ' I prefer to use a 10Mhz xtal, if you are using a standard Propeller Demo board ' they usually have 5Mhz xtals, this change the pll factor to pll16x and the clock ' rate to 5_000_000, 5Mhz _clkmode = xtal1 + pll8x ' enable external clock and pll multiplication factor for 80Mhz final frequency _xinfreq = 5_000_000 ' set frequency to 10 MHZ (if you have a 5MHz xtal make sure to change it here) _stack = 128 ' accomodate display memory and stack CLOCKS_PER_MICROSECOND = _xinfreq / 1_000_000 ' used for delay function ' ASCII codes for ease of parser development ASCII_A = 65 ASCII_B = 66 ASCII_C = 67 ASCII_D = 68 ASCII_E = 69 ASCII_F = 70 ASCII_G = 71 ASCII_H = 72 ASCII_O = 79 ASCII_P = 80 ASCII_Z = 90 ASCII_0 = 48 ASCII_9 = 57 ASCII_BS = 127 ' backspace ASCII_LF = $0A ' line feed ASCII_CR = $0D ' carriage return ASCII_ESC = $1B ' escape ASCII_HEX = $24 ' $ for hex ASCII_BIN = $25 ' % for binary ASCII_LB = $5B ' [ ASCII_SEMI = $3A ' ; ASCII_EQUALS = $3D ' = ASCII_PERIOD = $2E ' . ASCII_COMMA = $2C ' , ASCII_SHARP = $23 ' # ASCII_NULL = $00 ' null character ASCII_SPACE = $20 ' space ' null pointer, null character NULL = 0 '////////////////////////////////////////////////////////////////////////////// ' VARS SECTION //////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// VAR long cogon, cog ' ids for cogs byte input_buff[80] ' storage for input buffer long input_buff_index ' index into current position of command buffer byte tok_buff[80] ' storage for token buffer during processing byte prompt[32] ' storage for user prompt long tok_buff_index ' index into current position of tokenbuffer long token_ptr ' used to point to output token from tokenizer long tokens[ 16 ] ' array of pointers to parsed tokens ready for processing long num_tokens ' number of tokens in token array long cmd_token ' a single command token long cmd_data_ptr ' ptr to command token long cmd_parse_index ' index of command token in array long arg1, arg2, arg3, arg4 ' general parameters used during parameter extraction ' state vars for strtok_r function, basically static locals that we must define long strtok_string_ptr long strtok_string_index long strtok_string_length '////////////////////////////////////////////////////////////////////////////// 'OBJS SECTION ///////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// OBJ serial : "FullDuplexserial_drv_012.spin" ' the full duplex serial driver term_ntsc : "TV_Text_Half_Height_011.spin" ' the NTSC driver term_vga : "VGA_Text_010.spin" ' the VGA driver kbd : "keyboard_010.spin" ' the PS/2 keyboard driver snd : "NS_sound_drv_052_11khz_16bit.spin" ' the Sound driver '////////////////////////////////////////////////////////////////////////////// 'MAIN SECTION ///////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// PUB Main : status | ch, index ' initialize variables section ' for parser input_buff_index := -1 ' copy default prompt bytemove( @prompt, @ready_string, strsize (@ready_string)+1) ' let the system initialize Delay( 1_000_000 ) ' initialize the NTSC graphics terminal term_ntsc.start(12,0,0,40,15) term_ntsc.ink(0) 'print a string to NTSC term_ntsc.newline term_ntsc.pstring(@ntsc_startup_string) ' initialize VGA graphics terminal term_vga.start(%10111) 'print a string VGA term_vga.newline term_vga.pstring(@vga_startup_string)
Also attached below is a picture of the pin out for the VGA input on the P1 Prop. Prof. Dev. Board Rev. A. I had initially thought that I would wire up my board the same way that the Prop Demo Board is wired up until I saw that the resistors were switched between them to a degree. For instance, R0 for my board has a 470 ohm resistor while R0 on the Prop Demo Board seems to show it having a 270 ohm resistor. So I had the R0 on my board to go to P22 instead of P23 so that the resistors between the two pin outs would match up. But I don't know if this causes an issue or if that means I have to change the base pin designation in the demo.
Try this tile driver originally written by some else. But it works petty good, I trimmed it down and rewrote the Demo object to keep it simple. I'm running it now so I know it works. My board just has 3 extra resistors to Vss.
I don't any of your objects in your program to test it out
Thank you @DigitalBob !
I'll try those demos out. I did end up getting the demo I was trying to work. But I'm still not completely sure what the issue was. When I went into the code and, on a whim, changed the basepin from 10111 to 00010111 to give it an 8 bit binary, I know they're both the number 23, that got the demo to work. But as a check to make sure that was indeed the fix, I switched it back to 10111 and it still worked...Now it works either way and I'm not having any issues. I'm not sure if putting the extra zeros in cleared some sort of artifact away or what, but it works now, and I've been able to successfully run other programs with VGA inputs.
Strange.
Great, I forgot about those Parallax AN004, AN005 GUI notes, running some now