Jump to content

const u8 mios32_dout_reverse_tab[256] - how to use


Phatline
 Share

Recommended Posts

Whats the deal with that?

So a 595er Pin15 "O0" reacts on MIOS32_DOUT_PinSet(0,  0); instead of  MIOS32_DOUT_PinSet(7,  0) ? or what is it for?

 

temporary help array to mirror a byte (could be provided as MIOS32 help function later) 

and how to use it? something like this >  MIOS32_DOUT_PinSet(mios32_dout_reverse_tab[7],  0) --- when i want it to work like a "MIOS32_DOUT_PinSet(0,  0)"   (because of old or wrong PCB-Design...)

 

mios_32

/////////////////////////////////////////////////////////////////////////////
//! temporary help array to mirror a byte
//! (could be provided as MIOS32 help function later)
/////////////////////////////////////////////////////////////////////////////

// DOUT bits are uploaded in reversed order compared to PIC based MIOS, and
// especially compared to the order on DIN registers
// Most applications would have to convert this - therefore it's already done
// by MIOS32_DOUT_* functions

// mirroring could work with:
// u8 mirror_u8(u8 b)
// { return  ((b&0x01)<<7) | ((b&0x02)<<5) | ((b&0x04)<<3) | ((b&0x08)<<1) | ((b&0x10)>>1) | ((b&0x20)>>3) | ((b&0x40)>>5) | ((b&0x80)>>7); }
// bit this would be a bit slow, e.g. for SR copy routines - therefore we use a table based approached:

// the table has been generated with:
// perl -e 'for($b=0; $b<256; ++$b) { printf("0x%02x,", (($b&0x01)<<7) | (($b&0x02)<<5) | (($b&0x04)<<3) | (($b&0x08)<<1) | (($b&0x10)>>1) | (($b&0x20)>>3) | (($b&0x40)>>5) | (($b&0x80)>>7)); }; printf("\n");'

const u8 mios32_dout_reverse_tab[256] = {
  0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,
  0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,
  0x04,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
  0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
  0x02,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,
  0x0a,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,
  0x06,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,
  0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,
  0x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,
  0x09,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,
  0x05,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
  0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
  0x03,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,
  0x0b,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,
  0x07,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,
  0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff
};

 

Link to comment
Share on other sites

thx bro!

i forget that i already made that Circuit-Desigin-Reverse-Failure! DAM²

for my LRE5LCD2 PCB i choose this method (and its working :cheers:)

i like it because, so i can set the LED-Matrix to be from 0-19 instead of beeing 23-whatever.... so a for(x=0;x<19;x++ ...) is more simple

in the top of the program i made:

// DOUT-TABLE       0   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
const u8 led[64] = {26,25,24,39,38,37,36,35,34,33,32,47,46,45,44,43,42,41,40,31,30,29,28,27,15,14,13,12,11,10,9, 8, 23,22,21,20,19,18,17,16, 6, 5, 4, 3, 2, 1, 0, 7,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};

i use it for example like this:

    // 1.b Deactivate Anodes
    for (x=0; x<19; x++) {MIOS32_DOUT_PinSet( led[x], 1); }

and made a doku like this:

DOUT-Table.thumb.png.2ee39f19a493f4e1f2f53f3832309145.png

and there is the libre calc tab:

DOUT-Table.ods

(have a nice day, and hopeing not to need this topic in the future, but if - to find it ;)  )

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...