Changeset 8c41328 in avrstuff
- Timestamp:
- Sep 9, 2010, 7:14:21 PM (14 years ago)
- Branches:
- main
- Children:
- d3f2c17
- Parents:
- aeff83b
- Location:
- aktousb/code
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
aktousb/code/Makefile
raeff83b r8c41328 1 1 #Set vars 2 COMPILE = avr-gcc -Wall -Os -Iusbdrv -I. - mmcu=atmega8 -DF_CPU=160000002 COMPILE = avr-gcc -Wall -Os -Iusbdrv -I. -std=c99 -mmcu=atmega8 -DF_CPU=16000000 3 3 4 4 #Rules -
aktousb/code/keyboard.hex
raeff83b r8c41328 1 :10000000A7C0 ACC2CAC0BFC0BEC0BDC0BCC0BBC0201 :10000000A7C089C2CAC0BFC0BEC0BDC0BCC0BBC043 2 2 :10001000BAC0B9C0B8C0B7C0B6C0B5C0B4C0B3C02C 3 3 :10002000B2C0B1C0B0C0351E1F2021222324252616 … … 7 7 :100060003800635F60612C2A2B5828294C0000005F 8 8 :10007000560052514F503A3B3C3D3E3F4041424377 9 :10008000 4A4D54555745000039000000000000005B9 :1000800082835455577500003900000000000000BD 10 10 :10009000000000000000022000010440088005016B 11 11 :1000A0000906A101050719E029E7150025017501D9 … … 21 21 :100140002101010001223F000705810308000A0088 22 22 :1001500011241FBECFE5D4E0DEBFCDBF10E0A0E686 23 :10016000B0E0E 2E5FAE002C005900D92A436B107D623 :10016000B0E0E4E0FAE002C005900D92A436B107D9 24 24 :10017000D9F710E0A4E6B0E001C01D92AC3AB10797 25 :10018000E1F728D1 64C43CCF8C9A949884E591E03F25 :10018000E1F728D13DC43CCF8C9A949884E591E066 26 26 :100190000197F1F7949A8C9808951F920F920FB6D9 27 27 :1001A0000F9211242F933F938F939F9383992CC089 … … 60 60 :1003B00081E0089580E00895FC0180916400882325 61 61 :1003C00029F0613019F480818093650010926400F7 62 :1003D00081E00895FF920F931F93CF93DF932FE057 63 :1003E00088E190E00FB6F894A89581BD0FBE21BDBD 64 :1003F00085E083BF8E9A88E0E8E6F0E0DF011D9299 65 :100400008A95E9F7CCD11ADF789400E0C0E1D0E01A 66 :10041000FF24F39401C0012FA895CED180917500DF 67 :1004200080917500882391F0F8DE982F969580FDD5 68 :1004300003C0892F17DF02C0892F3CDF8091810024 69 :1004400084FF04C088E690E068E0DED208B600FED3 70 :10045000E3CFF8BE80916600882321F0969A219719 71 :1004600019F025C0969823C0109266004091610053 72 :1004700022E030E013C0F901E859FF4F8081893351 73 :1004800059F404C02F5F3F4F81818193273031059C 74 :10049000CCF310926F0041502F5F3F4F842F90E0BC 75 :1004A0002817390744F340936100C0E1D0E0109170 76 :1004B0006700112309F4B0CF053010F00550ACCF20 77 :1004C00080916600882321F082E6F4DE10926600B7 78 :1004D0008091810084FF9FCF88E690E068E094D20D 79 :1004E0009ACFDF93CF93CDB7DEB728970FB6F894A6 80 :1004F000DEBF0FBECDBF982F8091810084FFFCCF5F 81 :10050000FE01319688E0DF011D928A95E9F7998313 82 :100510006B83CF0168E078D228960FB6F894DEBFDF 83 :100520000FBECDBFCF91DF910895A82FB92F80E0E6 84 :1005300090E041E050EA609530E009C02D918227BB 85 :100540009795879510F084279527305EC8F36F5FE5 86 :10055000A8F30895EADF8D939D930895CF93CFB7C5 87 :10056000CF93DF93C395859BE9F7859B0BC0859B54 88 :1005700009C0859B07C0859B05C0859B03C0859BE3 89 :1005800001C08BC06F93C0918F00DD27CA56DF4F2B 90 :100590002F9365E5859B03C02F916F91E6CF0F9355 91 :1005A0001F934F9320E040E15F9300B3047205FB7B 92 :1005B00027F93F9350E03BE039C0147240642F7735 93 :1005C000012F5F5F1EC0406810B314722F77525026 94 :1005D0001FC0406400B32F770472D1F15F5F00C089 95 :1005E00023C0406210B32F77147291F15F5F00C097 96 :1005F00025C004721027515012F45D5F00001150A5 97 :1006000027952C3F10B3C8F6147201270150279587 98 :100610002C3FC8F64227499300B3047210274F734A 99 :10062000115027952C3FA8F64695469510B31472A5 100 :1006300079F00127015027952C3F98F66B5A60F30B 101 :10064000315000B3B0F600C010E41ABF002719C043 102 :100650003B503195C31BD04010E41ABF0881033CC6 103 :1006600009F10B34F9F020918D001981110F12134B 104 :10067000EDCF4A81441F093651F10D3211F0013E90 105 :1006800029F7009394003F915F914F911F910F9133 106 :100690002F916F91CAB7C6FD65CFDF91CF91CFBFC4 107 :1006A000CF91189520919400222369F31091920024 108 :1006B000112391F5343092F13093920020938E0003 109 :1006C00010918F003BE0311B30938F0027C00091C9 110 :1006D000920001300CF50AE54F7049F43091620048 111 :1006E00034FD1DC000936200C6E7D0E01CC030910D 112 :1006F000810034FD14C000938100C2E8D0E013C033 113 :10070000052710E000C0000002BB1AC0052710E05A 114 :10071000221F1DC010E021C04AE502C032ED432F68 115 :10072000C4E1D0E032E011B31462959A02B311BB78 116 :1007300054E220E865E320FF052702BB27951795C3 117 :100740001C3FF0F66695B8F7B1F720FF052702BB0E 118 :10075000279517951C3FD0F62795179517FF052766 119 :1007600000001C3F02BBB0F629913A9519F70B7DAA 120 :1007700010919300110FC651D04002BB11F010939D 121 :100780008D0010E41ABF006211B31B7D402F4B7D1A 122 :1007900054E05A95F1F702BB11BB42BB74CF85B749 123 :1007A000836085BF8BB780648BBF8BE480938200AE 124 :1007B0008AE58093810008951F93CF93DF93609122 125 :1007C0009200635067FDC4C080918F00CCE0D0E000 126 :1007D000C81BD109CA56DF4F80918E008D3209F0B7 127 :1007E000A4C0683009F0B2C083EC809376008AE53B 128 :1007F00080936200109270008881807641F0CE0173 129 :100800000E94A101282F8F3F09F47EC084C09A81E5 130 :1008100010927F008981882321F41092800022E0C9 131 :100820006CC0853019F49093930066C0863009F04F 132 :100830004FC08B81813041F48BE191E09093910026 133 :100840008093900022E140C0823041F48DE291E03B 134 :10085000909391008093900022E236C08330F9F4A7 135 :100860008A81882341F48DED90E0909391008093EC 136 :10087000900024E029C0813041F481EE90E0909313 137 :1008800091008093900024E21FC08230E1F485E063 138 :1008900091E0909391008093900026E115C0813201 139 :1008A00041F48FE391E0909391008093900029E0D0 140 :1008B0000BC0823241F48EE990E0909391008093D6 141 :1008C00090002FE301C020E080E48093700023C0FB 142 :1008D000883021F421E085E990E011C0893019F4D5 143 :1008E0009093950009C08A3011F421E006C08B3046 144 :1008F00019F48BE48093820020E08FE790E09093DE 145 :1009000091008093900007C0888187FD2E8180E848 146 :100910008093700006C08F81882319F48E8182171E 147 :1009200008F0822F8093630011C08091700087FFD0 148 :100930000DC0CE010E94DC018F3F21F48EE1809337 149 :10094000620004C0882311F010926300109292009C 150 :100950008091620084FF4AC0809163008F3F09F458 151 :1009600045C0182F893008F018E0811B8093630080 152 :100970008091760098E8892780937600112341F1D1 153 :1009800020919000309191008091700086FF0DC001 154 :10099000A7E7B0E080E090E0F901E80FF91FE491EB 155 :1009A000ED9301961817C1F708C0912FD901E7E719 156 :1009B000F0E08D9181939150E1F71150812F90E0FB 157 :1009C0001F5F0196820F931F909391008093900078 158 :1009D00087E790E0612F0E94AA02612F6C5F6C3064 159 :1009E00019F08FEF809363006093620094E180B30D 160 :1009F000847231F49150D9F71092930010928D00C7 161 :100A0000DF91CF911F9108951F93DC01162F8091E4 162 :100A1000810084FF07C08091820098E88927809335 163 :100A2000820003C08AE580938100912FE3E8F0E023 164 :100A30008D91819391501916DCF383E890E0612F3A 165 :100A40000E94AA021C5F109381001F910895F894E0 166 :020A5000FFCFD6 167 :040A520001025AFF44 62 :1003D00081E00895EF92FF920F931F93CF93DF93E5 63 :1003E0002FE088E190E00FB6F894A89581BD0FBE8C 64 :1003F00021BD84E083BF8E9A88E0E8E6F0E0DF016B 65 :100400001D928A95E9F7A8D119DF789400E0FF24BE 66 :1004100010E0C0E1D0E0EE24E394A895AAD1809149 67 :10042000750080917500882369F0F7DE982F969506 68 :1004300080FD04C0892F16DF969A06C0892F3ADF07 69 :10044000FF24F394002361F08091810084FD02C0B9 70 :1004500001E006C088E690E068E0B0D2969800E03F 71 :1004600008B600FEDACFE8BE80916600882329F145 72 :10047000219719F5109266004091610022E030E06A 73 :1004800013C0F901E859FF4F8081893359F404C042 74 :100490002F5F3F4F8181819327303105CCF310923C 75 :1004A0006F0041502F5F3F4F842F90E0281739078E 76 :1004B00044F340936100C0E1D0E0812F8F5F85302D 77 :1004C00010F01450AACF10916700FF2009F4A5CFB7 78 :1004D0008091810084FFA1CF88E690E068E06ED231 79 :1004E000FF249BCFA82FB92F80E090E041E050EA95 80 :1004F000609530E009C02D9182279795879510F07F 81 :1005000084279527305EC8F36F5FA8F30895EADF6C 82 :100510008D939D930895CF93CFB7CF93DF93C395DA 83 :10052000859BE9F7859B0BC0859B09C0859B07C010 84 :10053000859B05C0859B03C0859B01C08BC06F93C5 85 :10054000C0918F00DD27CA56DF4F2F9365E5859B4D 86 :1005500003C02F916F91E6CF0F931F934F9320E02D 87 :1005600040E15F9300B3047205FB27F93F9350E02D 88 :100570003BE039C0147240642F77012F5F5F1EC0CB 89 :10058000406810B314722F7752501FC0406400B3FC 90 :100590002F770472D1F15F5F00C023C0406210B3B7 91 :1005A0002F77147291F15F5F00C025C0047210278D 92 :1005B000515012F45D5F0000115027952C3F10B38D 93 :1005C000C8F614720127015027952C3FC8F6422720 94 :1005D000499300B3047210274F73115027952C3F95 95 :1005E000A8F64695469510B3147279F0012701508C 96 :1005F00027952C3F98F66B5A60F3315000B3B0F654 97 :1006000000C010E41ABF002719C03B503195C31B2E 98 :10061000D04010E41ABF0881033C09F10B34F9F013 99 :1006200020918D001981110F1213EDCF4A81441FC3 100 :10063000093651F10D3211F0013E29F70093940073 101 :100640003F915F914F911F910F912F916F91CAB779 102 :10065000C6FD65CFDF91CF91CFBFCF911895209187 103 :100660009400222369F310919200112391F5343004 104 :1006700092F13093920020938E0010918F003BE016 105 :10068000311B30938F0027C00091920001300CF590 106 :100690000AE54F7049F43091620034FD1DC00093AB 107 :1006A0006200C6E7D0E01CC03091810034FD14C068 108 :1006B00000938100C2E8D0E013C0052710E000C01D 109 :1006C000000002BB1AC0052710E0221F1DC010E069 110 :1006D00021C04AE502C032ED432FC4E1D0E032E050 111 :1006E00011B31462959A02B311BB54E220E865E39A 112 :1006F00020FF052702BB279517951C3FF0F666954E 113 :10070000B8F7B1F720FF052702BB279517951C3FC7 114 :10071000D0F62795179517FF052700001C3F02BB51 115 :10072000B0F629913A9519F70B7D10919300110FAE 116 :10073000C651D04002BB11F010938D0010E41ABFD7 117 :10074000006211B31B7D402F4B7D54E05A95F1F7A9 118 :1007500002BB11BB42BB74CF85B7836085BF8BB72B 119 :1007600080648BBF8BE4809382008AE58093810054 120 :1007700008951F93CF93DF9360919200635067FDBC 121 :10078000C2C080918F00CCE0D0E0C81BD109CA560E 122 :10079000DF4F80918E008D3209F0A3C0683009F0E0 123 :1007A000B0C083EC809376008AE58093620010925B 124 :1007B00070008881807639F0CE01C3DD282F8F3F0D 125 :1007C00009F47EC084C09A8110927F0089818823B9 126 :1007D00021F41092800022E06CC0853019F49093CF 127 :1007E000930066C0863009F04FC08B81813041F4A0 128 :1007F0008BE191E0909391008093900022E140C0C2 129 :10080000823041F48DE291E09093910080939000CA 130 :1008100022E236C08330F9F48A81882341F48DEDD9 131 :1008200090E0909391008093900024E029C0813063 132 :1008300041F481EE90E0909391008093900024E247 133 :100840001FC08230E1F485E091E0909391008093A5 134 :10085000900026E115C0813241F48FE391E090933E 135 :1008600091008093900029E00BC0823241F48EE920 136 :1008700090E090939100809390002FE301C020E0DE 137 :1008800080E48093700023C0883021F421E085E962 138 :1008900090E011C0893019F49093950009C08A3016 139 :1008A00011F421E006C08B3019F48BE480938200B0 140 :1008B00020E08FE790E0909391008093900007C034 141 :1008C000888187FD2E8180E88093700006C08F812B 142 :1008D000882319F48E81821708F0822F8093630099 143 :1008E00010C08091700087FF0CC0CE0165DD8F3F86 144 :1008F00021F48EE18093620004C0882311F01092ED 145 :100900006300109292008091620084FF49C0809140 146 :1009100063008F3F09F444C0182F893008F018E0B5 147 :10092000811B809363008091760098E889278093EB 148 :100930007600112341F12091900030919100809137 149 :10094000700086FF0DC0A7E7B0E080E090E0F901FD 150 :10095000E80FF91FE491ED9301961817C1F708C04D 151 :10096000912FD901E7E7F0E08D9181939150E1F764 152 :100970001150812F90E01F5F0196820F931F90937B 153 :1009800091008093900087E790E0612FC0DD612F98 154 :100990006C5F6C3019F08FEF80936300609362009E 155 :1009A00094E180B3847231F49150D9F7109293009E 156 :1009B00010928D00DF91CF911F9108951F93DC015C 157 :1009C000162F8091810084FF07C08091820098E8F3 158 :1009D00089278093820003C08AE580938100912F4C 159 :1009E000E3E8F0E08D91819391501916DCF383E8F0 160 :1009F00090E0612F8CDD1C5F109381001F910895A2 161 :040A0000F894FFCF98 162 :040A040001025AFF92 168 163 :00000001FF -
aktousb/code/main.c
raeff83b r8c41328 6 6 7 7 #include <string.h> 8 #include <stdbool.h> 8 9 9 10 #include "amiga_keyboard/amiga_keyboard.h" … … 11 12 #include "keycodes.h" 12 13 14 #define LEDSWAP PORTD ^= (1<<PD6) 15 #define LEDON PORTD |= 1<<PD6 16 #define LEDOFF PORTD &= ~(1<<PD6) 17 13 18 static uint8_t pressingCaps = 0; 14 19 15 20 const uint8_t PROGMEM keymatrix[0x70] = { 16 // 0 1 2 3 4 5 6 7 8 9 A B C D E F17 KEY_grave, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_minus, KEY_equals, KEY_F11, KEY_Reserved, KEY_KP0, //018 KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_lbracket, KEY_rbracket, KEY_Reserved, KEY_KP1, KEY_KP2, KEY_KP3, //119 KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_semicolon, KEY_apostroph,KEY_hash, KEY_Reserved, KEY_KP4, KEY_KP5, KEY_KP6, //220 KEY_Euro, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_comma, KEY_dot, KEY_slash, KEY_Reserved, KEY_KPcomma, KEY_KP7, KEY_KP8, KEY_KP9, //321 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 22 KEY_grave, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_minus, KEY_equals, KEY_F11, KEY_Reserved, KEY_KP0, //0 23 KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_lbracket, KEY_rbracket, KEY_Reserved, KEY_KP1, KEY_KP2, KEY_KP3, //1 24 KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_semicolon, KEY_apostroph,KEY_hash, KEY_Reserved, KEY_KP4, KEY_KP5, KEY_KP6, //2 25 KEY_Euro, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_comma, KEY_dot, KEY_slash, KEY_Reserved, KEY_KPcomma, KEY_KP7, KEY_KP8, KEY_KP9, //3 21 26 KEY_Spacebar,KEY_DELETE, KEY_Tab, KEY_KPenter, KEY_Return,KEY_ESCAPE,KEY_DeleteForward,KEY_Reserved,KEY_Reserved,KEY_Reserved, KEY_KPminus, KEY_Reserved, KEY_UpArrow, KEY_DownArrow, KEY_RightArrow,KEY_LeftArrow,//4 22 KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_Home, KEY_End, KEY_KPslash, KEY_KPasterisk,KEY_KPplus, KEY_F12, //523 KEY_Reserved,KEY_Reserved,KEY_capslock,KEY_Reserved,KEY_Reserved,KEY_Reserved,KEY_Reserved, KEY_Reserved,KEY_Reserved,KEY_Reserved,KEY_Reserved,KEY_Reserved,KEY_Reserved,KEY_Reserved, KEY_Reserved, KEY_Reserved, //627 KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_KPLParen, KEY_KPRParen, KEY_KPslash, KEY_KPasterisk,KEY_KPplus, KEY_Help, //5 28 KEY_Reserved,KEY_Reserved,KEY_capslock,KEY_Reserved,KEY_Reserved,KEY_Reserved,KEY_Reserved, KEY_Reserved,KEY_Reserved,KEY_Reserved, KEY_Reserved, KEY_Reserved, KEY_Reserved, KEY_Reserved, KEY_Reserved, KEY_Reserved, //6 24 29 }; 25 30 … … 86 91 87 92 93 /* 88 94 void usbSendReport(uint8_t mode, uint8_t key) { 89 95 // buffer for HID reports. we use a private one, so nobody gets disturbed … … 94 100 usbSetInterrupt(repBuffer, sizeof(repBuffer)); // send 95 101 } 96 102 */ 97 103 98 104 int main() { … … 102 108 103 109 wdt_enable(WDTO_2S); 104 // configure timer 0 for a rate of 1 2M/(1024 * 256) = 45.78Hz (~22ms)105 TCCR0 = 5; // timer 0 prescaler: 1024110 // configure timer 0 for a rate of 16M/(256 * 256) = ~244Hz 111 TCCR0 = 4; // timer 0 prescaler: 256 106 112 107 113 //debug LED - output … … 116 122 ak_init_keyboard(); 117 123 sei(); 124 bool doReport = false; 125 bool doRelease = false; 118 126 119 127 while(1) { … … 126 134 key_code = ak_read_scancode(); 127 135 // if an update is needed, send the report 128 if ((key_code & 1) == 0) 136 if ((key_code & 1) == 0) { 129 137 fillReportBuffer(key_code>>1); 130 else 138 LEDON; 139 doReport = true; 140 } else { 131 141 emptyReportBuffer(key_code>>1); 132 if (usbInterruptIsReady()) 133 usbSetInterrupt(reportBuffer, sizeof(reportBuffer)); 142 doRelease = true; 143 } 144 } 145 146 if (doReport && usbInterruptIsReady()) { 147 usbSetInterrupt(reportBuffer, sizeof(reportBuffer)); 148 LEDOFF; 149 doReport = false; 134 150 } 135 151 … … 138 154 if (TIFR & (1 << TOV0)) { 139 155 TIFR = (1 << TOV0); // reset flag 140 141 // PORTD ^= (1<<PD6); // blink del : we are alive !142 if (pressingCaps)143 PORTD |= 1<<PD6;144 else145 PORTD &= ~(1<<PD6);146 156 147 157 if (pressingCaps) { … … 162 172 } 163 173 164 if (idleRate != 0) { // do we need periodic reports? 165 if(idleCounter > 4){ // yes, but not yet 166 idleCounter -= 5; // 22ms in units of 4ms 167 } else { // yes, it is time now 168 idleCounter = idleRate; 169 if (pressingCaps) { 170 emptyReportBuffer(0x62); 171 pressingCaps = 0; 172 } 173 if (usbInterruptIsReady()) 174 usbSetInterrupt(reportBuffer, sizeof(reportBuffer)); 174 ++idleCounter; 175 if(idleCounter > 4){ // yes, but not yet 176 idleCounter -= 5; // 22ms in units of 4ms 177 } else { // yes, it is time now 178 idleCounter = idleRate; 179 /* 180 if (pressingCaps) { 181 emptyReportBuffer(0x62); 182 pressingCaps = 0; 183 } 184 */ 185 if (doRelease && usbInterruptIsReady()) { 186 usbSetInterrupt(reportBuffer, sizeof(reportBuffer)); 187 doRelease = false; 175 188 } 176 189 } 177 178 190 } 179 191 }
Note:
See TracChangeset
for help on using the changeset viewer.