- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
#ifndef __ALTERA_AVALON_LCD_16207_REGS_H__# define __ALTERA_AVALON_LCD_16207_REGS_H__
/* /////////////////////////////////////////////////////////////////////////// // // ALTERA_AVALON_LCD_16207 PERIPHERAL // // Provides a hardware interface that allows software to // access the two (2) internal 8-bit registers in an Optrex // model 16207 (or equivalent) character LCD display (the kind // shipped with the Nios Development Kit, 2 rows x 16 columns). // // Because the interface to the LCD module is "not quite Avalon," // the hardware in this module ends-up mapping the module's // two physical read-write registers into four Avalon-visible // registers: Two read-only registers and two write-only registers. // A picture is worth a thousand words: // // THE REGISTER MAP // // 7 6 5 4 3 2 1 0 Offset // +-----+-----+-----+-----+-----+-----+-----+-----+ // RS = 0 | Command Register (WRITE-Only) | 0 // +-----+-----+-----+-----+-----+-----+-----+-----+ // RS = 0 | Status Register (READ -Only) | 1 // +-----+-----+-----+-----+-----+-----+-----+-----+ // RS = 1 | Data Register (WRITE-Only) | 2 // +-----+-----+-----+-----+-----+-----+-----+-----+ // RS = 1 | Data Register (READ -Only) | 3 // +-----+-----+-----+-----+-----+-----+-----+-----+ // /////////////////////////////////////////////////////////////////////////// */ # include <io.h> # define IOADDR_ALTERA_AVALON_LCD_16207_COMMAND(base) __IO_CALC_ADDRESS_NATIVE(base, 0)# define IOWR_ALTERA_AVALON_LCD_16207_COMMAND(base, data) IOWR(base, 0, data) # define IOADDR_ALTERA_AVALON_LCD_16207_STATUS(base) __IO_CALC_ADDRESS_NATIVE(base, 1)# define IORD_ALTERA_AVALON_LCD_16207_STATUS(base) IORD(base, 1) # define ALTERA_AVALON_LCD_16207_STATUS_BUSY_MSK (0x00000080u)# define ALTERA_AVALON_LCD_16207_STATUS_BUSY_OFST (7) # define IOADDR_ALTERA_AVALON_LCD_16207_DATA_WR(base) __IO_CALC_ADDRESS_NATIVE(base, 2)# define IOWR_ALTERA_AVALON_LCD_16207_DATA(base, data) IOWR(base, 2, data) # define IOADDR_ALTERA_AVALON_LCD_16207_DATA_RD(base) __IO_CALC_ADDRESS_NATIVE(base, 3)# define IORD_ALTERA_AVALON_LCD_16207_DATA(base) IORD(base, 3) # endif who can tell me why the Command Register Offset is 0,Status Register offset is 1 and the other register offset 1,2Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't really get what you're asking here. The registers have these offsets because they are at the respective address. And the "other register" offset seems to be 2 and 3, not 1,2?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thank you!
my mean is how to set the address offset,Can i set the offset below: IOADDR_ALTERA_AVALON_LCD_16207_COMMAND(base) __IO_CALC_ADDRESS_NATIVE(base, 3) IOADDR_ALTERA_AVALON_LCD_16207_STATUS(base) __IO_CALC_ADDRESS_NATIVE(base, 2) IOADDR_ALTERA_AVALON_LCD_16207_DATA_WR(base) __IO_CALC_ADDRESS_NATIVE(base, 0) IOADDR_ALTERA_AVALON_LCD_16207_DATA_RD(base) __IO_CALC_ADDRESS_NATIVE(base, 1)- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can only change the base address of the LCD device, you can not change the offsets for the registers inside the device.
Are you trying to change the macro for reading/writing the registers? I'm still confused what you are trying to do. http://forum.niosforum.com/work2/style_emoticons/<#EMO_DIR#>/smile.gif- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thank you , because i want to write a new Peripheral like the component, i don't write vhdl for the component,so i don't know how to set the offset.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
The BADE address of device depend on your definition in SOPC Builder. And the offset address depend on HDL design files. So you can't modify any of them. FYI. David- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- originally posted by nwpu_zhf2004@Apr 13 2006, 04:38 PM thank you , because i want to write a new peripheral like the component, i don't write vhdl for the component,so i don't know how to set the offset.
<div align='right'><{post_snapback}> (index.php?act=findpost&pid=14331)
--- quote end ---
--- Quote End --- Hi! Offset of regiters depends on HDL part of component. So, Offset is predefined. You must care with it and any result of changes of offset would be unpredictable.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page