Shop OBEX P1 Docs P2 Docs Learn Events
VGA Issue with Propeller Professional Development Board Rev A using P8X32A-D40 P1 chip — Parallax Forums

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.

  • 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

Sign In or Register to comment.