Phatline Posted February 4, 2021 Report Share Posted February 4, 2021 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 }; Quote Link to comment Share on other sites More sharing options...
Antichambre Posted February 5, 2021 Report Share Posted February 5, 2021 ;) Quote Link to comment Share on other sites More sharing options...
Phatline Posted February 9, 2021 Author Report Share Posted February 9, 2021 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 ) 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: 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 ;) ) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.