ROM selection in 2066 controller



  • atlantaswl
    Thanks for looking, problem has been solved (FINALLY - yes, I'm shouting).
    It turns out that any command that precedes a data write (e.g., setting the ROM selection, setting the DDRAM address), there must be a short delay after the command and before the data write.

    This also includes setting the DDRAM address command followed by a data byte. So, the initialization snippet becomes:

         ldi temp, 0x2A
         rcall display_command
         ldi temp, 0x72
         rcall display_command
         rcall delay_2_msec
         ldi temp, 0
         rcall display_data

    In addition, setting the cursor to the second row and outputting the cursor becomes

         ldi 0xC0  ; Set DDRAM address to 1st character, 2nd line
         rcall display_command
         rcall delay_2_msec
         ldi temp, 0x1D ; up carat character in ROM A
         rcall display_data

    Without the small delay before the cursor character is written, nothing shows up on the line. Adding the short delay, and the character does appear.

    I'm running this XMEGA chip at 32 MHz, so very short delays aren't noticeable in display updates and optical encoder setting the operating frequency.

    This was very instructive. And the problem is resolved.

    Fred Love
  • Ted M.
    NHD Staff

    Hi Fred,

    It's good to hear you have this working!
    Thanks for sharing your solution as it will help others facing a similar issue.

    Best Regards,


Please sign in to leave a comment.