Re: Aux I/O not responding
Scott Henion <[email protected]>
| Newsgroups | gmane.comp.hardware.rabbit-semiconductor |
|---|---|
| Message-ID | <[email protected]> |
On 8/2/2013 10:07 AM, Taiwo wrote:
> Hello guys
>
> I'm quite new to the Rabbit MCU. I have been trying to send some
> messages to an OLED through the aux I/O pins, but none of the pins
> associated with the Aux I/O are responsding (including /IORD and /IOWR).
> I have macro definition at the start of the source file, amongst others.
> Please what am I missing out in the source file.
>
> Below is a brief description of my file.
>
>
>
> #define PORTA_AUX_IO // Enable the external I/O bus
>
> void SendToOLED(int addr, char value)
> {
> WrPortE(addr, NULL, value);
> }
>
>
> int main()
> {
> WrPortI(IB7CR, &IB7CRShadow, 0x4C); // Invert
>
> // Ensure tht the 6-bit address external I/O bus is enabled
> MsDelay(1000); // Wait for one second to allow OLED to reset
> itself
>
> SendToOLED(1, '\B00111001'); // 8-bit, 2 line, 5x8 dots, Western
> European font
> SendToOLED(1, '\B00001100'); // Display On, Cursor Off, Non-Blinking
> cursor
> SendToOLED(1, '\B00000110'); // Increment and Non-shift Entire
> Display
> }
The address for the external I/O is:
PE0 - 0000-1FFF
PE1 - 2000-3FFF
... and so on...
PE6 - C000-DFFF
PE7 - E000-FFFF
So try:
void SendToOLED(int addr, char value)
{
WrPortE(addr+0xE000, NULL, value);
}
You will probably need to add checks to make sure the display is ready
to write to. Add a check for the ready bit in the display status
register before writing or you could just add delays if you can't read
the display.
<Scott>
--
------------------------------------------
Scott G. Henion, Consultant
Web site: http://SHDesigns.org
------------------------------------------