Changeset 50 in projects
- Timestamp:
- Dec 14, 2009, 7:26:15 PM (14 years ago)
- Location:
- punch-card
- Files:
-
- 6 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
punch-card/driver/documation-m200/avr-m200-card-reader-controller.aps
r46 r50 1 <AVRStudio><MANAGEMENT><ProjectName>avr-m200-card-reader-controller</ProjectName><Created>03-Dec-2009 19:44:28</Created><LastEdit> 03-Dec-2009 20:16:26</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>03-Dec-2009 19:44:28</Created><Version>4</Version><Build>4, 17, 0, 655</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>bin\avr-m200-card-reader-controller.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>src\main.c</SOURCEFILE><SOURCEFILE>src\punchcard.c</SOURCEFILE><HEADERFILE>src\punchcard.h</HEADERFILE><HEADERFILE>src\wiring.h</HEADERFILE><OTHERFILE>bin\avr-m200-card-reader-controller.lss</OTHERFILE><OTHERFILE>bin\avr-m200-card-reader-controller.map</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>avr-m200-card-reader-controller.elf</OUTPUTFILENAME><OUTPUTDIR>bin\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>D:\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>D:\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/><sort sorted="0" column="0" ordername="0" orderaddress="1" ordergroup="0"/></IOView><Files></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>1 <AVRStudio><MANAGEMENT><ProjectName>avr-m200-card-reader-controller</ProjectName><Created>03-Dec-2009 19:44:28</Created><LastEdit>14-Dec-2009 19:22:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>03-Dec-2009 19:44:28</Created><Version>4</Version><Build>4, 17, 0, 655</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>bin\avr-m200-card-reader-controller.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>src\main.c</SOURCEFILE><SOURCEFILE>src\punchcard.c</SOURCEFILE><SOURCEFILE>src\io.c</SOURCEFILE><HEADERFILE>src\punchcard.h</HEADERFILE><HEADERFILE>src\wiring.h</HEADERFILE><HEADERFILE>D:\Server\htdocs\paper-tape-project\punch-card\protocols\documation-m200\pc-uc-protocol.h</HEADERFILE><HEADERFILE>src\io.h</HEADERFILE><OTHERFILE>bin\avr-m200-card-reader-controller.lss</OTHERFILE><OTHERFILE>bin\avr-m200-card-reader-controller.map</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>avr-m200-card-reader-controller.elf</OUTPUTFILENAME><OUTPUTDIR>bin\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS/><INCDIRS><INCLUDE>..\protocols\documation-m200\</INCLUDE><INCLUDE>..\..\protocols\documation-m200\</INCLUDE></INCDIRS><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>D:\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>D:\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\src\punchcard.h</Name><Name>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\src\wiring.h</Name><Name>D:\Server\htdocs\paper-tape-project\punch-card\protocols\documation-m200\pc-uc-protocol.h</Name><Name>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\src\io.h</Name><Name>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\src\main.c</Name><Name>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\src\punchcard.c</Name><Name>D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\src\io.c</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="0" column="0" ordername="1" orderaddress="0" ordergroup="1"/></IOView><Files><File00000><FileId>00000</FileId><FileName>src\main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>src\punchcard.h</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>src\wiring.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>src\io.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>src\io.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>src\punchcard.c</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>D:\Server\htdocs\paper-tape-project\punch-card\protocols\documation-m200\pc-uc-protocol.h</FileName><Status>1</Status></File00006></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> -
punch-card/driver/documation-m200/bin/Makefile
r46 r50 16 16 ## Compile options common for all C compilation units. 17 17 CFLAGS = $(COMMON) 18 CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums18 CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums 19 19 CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d 20 20 … … 37 37 38 38 39 ## Include Directories 40 INCLUDES = -I"D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\..\protocols\documation-m200" -I"D:\Server\htdocs\paper-tape-project\punch-card\driver\documation-m200\..\..\protocols\documation-m200" 41 39 42 ## Objects that must be built in order to link 40 OBJECTS = main.o punchcard.o 43 OBJECTS = main.o punchcard.o io.o 41 44 42 45 ## Objects explicitly added by the user … … 51 54 52 55 punchcard.o: ../src/punchcard.c 56 $(CC) $(INCLUDES) $(CFLAGS) -c $< 57 58 io.o: ../src/io.c 53 59 $(CC) $(INCLUDES) $(CFLAGS) -c $< 54 60 -
punch-card/driver/documation-m200/src/main.c
r46 r50 44 44 #include "punchcard.h" 45 45 #include "wiring.h" 46 #include "io.h" 46 47 47 48 char Text1[80]; 48 49 49 int uart_transmit(char c, FILE* stream);50 50 static FILE uart = FDEV_SETUP_STREAM(uart_transmit, NULL, _FDEV_SETUP_WRITE); 51 51 … … 84 84 } 85 85 86 86 87 void UartInit(uint32_t Baud) 87 88 { 88 int BaudRate = OSCSPEED / (16 * Baud) - 1; 89 90 UBRR0H = (unsigned char) BaudRate>>8; 91 UBRR0L = (unsigned char) BaudRate; 92 //set BaudRate 93 94 UCSR0B = UCSR0B | (0b00011000); 95 // RXEN & TXEN enable (Bits 4, 3 = 1) 96 97 UCSR0C = (UCSR0C | (0b10000110)); 98 // USART Register Select (Bit 7 = 1) 99 // 8 data bits per frame (Bit 2, 1 = 1) 100 101 UCSR0C = UCSR0C & 0b11110111; 102 // 1 Stop bit (Bit 3 = 0) 103 } 104 105 int uart_transmit(char c, FILE* stream) { 106 if(c == '\n') 107 uart_transmit('\r', stream); 108 109 while (!(UCSR0A & 0b00100000)); 110 // PENDING: Hardware flow control 111 UDR0 = c; 112 return 0; 113 } 114 115 unsigned char UartReceive(void) 116 { 117 if (UCSR0A & 0b10000000) 118 //if RXC(Bit 7) = 1 119 return UDR0; 120 else 121 return 0; 122 } 123 124 void UartTransmit(unsigned char Data) 125 { 126 while (!(UCSR0A & 0b00100000)); 127 //while UDRE = 0 --> ; 128 UDR0 = Data; 129 } 130 131 void LedMode (unsigned char Temp) 132 { 133 switch (Temp) 134 { 135 // 1 - LED ON 136 case 1: PORTB = PORTB & 0&11111110; 137 PORTC = PORTC & 0&10111111; 138 break; 139 // 2 - Led OFF 140 case 2: PORTB = PORTB | 0b00000001; 141 PORTC = PORTC | 0b01000000; 142 break; 143 // 3 - Toggle Led 144 case 3: if (PINB & 0b00000001) PORTB = PORTB & 0b11111110; 145 else PORTB = PORTB | 0b00000001; break; 146 } 147 } 148 149 unsigned char Length(char Temp[20]) 150 { 151 unsigned char L=0; 152 while (Temp[L]) L++; 153 return L; 154 } 155 156 void Write(char Text[80]) 157 { 158 unsigned char Len, i, T; 159 Len = Length(Text); 160 //UartTransmit(Len); 161 for (i=0; i<Len; i++) 162 { 163 T = Text[i]; 164 UartTransmit(T); 165 } 166 strcpy(Text, ""); 167 } 168 169 void WriteLn(char Text[80]) 170 { 171 unsigned char Len, i, T; 172 Len = Length(Text); 173 //UartTransmit(Len); 174 for (i=0; i<Len; i++) 175 { 176 T = Text[i]; 177 UartTransmit(T); 178 } 179 strcpy(Text, ""); 180 UartTransmit(10); 181 UartTransmit(13); 182 } 183 184 void BlinkLed(void) 185 { 186 unsigned int Br; 187 unsigned char State, End=0; 188 State = PINB; 189 WriteLn(""); 190 strcpy(Text1, "Press any Key"); 191 WriteLn(Text1); 192 while (End == 0) 193 { 194 End = UartReceive(); 195 if ((End == 0) & (!(PINB & 0b00010000))) 196 { 197 LedMode(3); 198 for (Br = 20000; Br; Br--); 199 } 200 } 201 PORTB = State; 202 } 203 204 void print_bits(byte_t byte) { 205 char str[10]; 206 byte_t bit; byte_t pos = 0; 207 for(bit = 7; bit >= 0; bit--) { 208 str[pos++] = ( (1 << bit) & byte ) ? '1' : '0'; 209 } 210 str[8] = ' '; 211 str[9] = '\0'; 212 213 strcat(Text1, str); 214 } 89 int BaudRate = OSCSPEED / (16 * Baud) - 1; 90 91 UBRR0H = (unsigned char) BaudRate>>8; 92 UBRR0L = (unsigned char) BaudRate; 93 //set BaudRate 94 95 UCSR0B = UCSR0B | (0b00011000); 96 // RXEN & TXEN enable (Bits 4, 3 = 1) 97 98 UCSR0C = (UCSR0C | (0b10000110)); 99 // USART Register Select (Bit 7 = 1) 100 // 8 data bits per frame (Bit 2, 1 = 1) 101 102 UCSR0C = UCSR0C & 0b11110111; 103 // 1 Stop bit (Bit 3 = 0) 104 } 105 215 106 216 107 /** … … 218 109 **/ 219 110 220 static struct previous_pin_memory {221 uint8_t pinc;222 uint8_t pinb;223 } prev;224 225 static uint8_t user_start = 0; // muss noch sauber umgesetzt werden226 static uint8_t reader_waits_for_space = 0; // also defacto der WRITER227 111 228 112 ISR(PCINT1_vect) { … … 233 117 234 118 uint8_t pinb_jetzt = PINB; 235 uint8_t pin_changed = (pinb_jetzt ^ prev.pinb) & PCMSK1;236 uint8_t rising_edge = ((((~ prev.pinb) & pinb_jetzt) & PCMSK1) & pin_changed) == pin_changed ? 1 : 0;119 uint8_t pin_changed = (pinb_jetzt ^ status.prev_pinb) & PCMSK1; 120 uint8_t rising_edge = ((((~status.prev_pinb) & pinb_jetzt) & PCMSK1) & pin_changed) == pin_changed ? 1 : 0; 237 121 238 122 char* name = "???"; … … 244 128 printf("Too lazy, but not "); // und jetzt nicht breaken :-) 245 129 default: 246 printf("Illegal PCINT1 raise: %x=>%x, %x, %x\n", prev.pinb, pinb_jetzt, pin_changed, rising_edge);247 prev.pinb = pinb_jetzt;130 printf("Illegal PCINT1 raise: %x=>%x, %x, %x\n", status.prev_pinb, pinb_jetzt, pin_changed, rising_edge); 131 status.prev_pinb = pinb_jetzt; 248 132 return; 249 133 } … … 251 135 printf("%s %s\n", name, rising_edge ? "raising" : "falling"); 252 136 253 prev.pinb = pinb_jetzt;137 status.prev_pinb = pinb_jetzt; 254 138 } 255 139 … … 264 148 265 149 uint8_t pinc_jetzt = PINC; 266 uint8_t pin_changed = (pinc_jetzt ^ prev.pinc) & PCMSK2;267 uint8_t rising_edge = check( pin_changed, (~ prev.pinc) & pinc_jetzt );150 uint8_t pin_changed = (pinc_jetzt ^ status.prev_pinc) & PCMSK2; 151 uint8_t rising_edge = check( pin_changed, (~status.prev_pinc) & pinc_jetzt ); 268 152 269 153 switch( pin_changed ) { … … 283 167 // urhm... wait for user to start? user condition? 284 168 // yeah: quick & dirty: 285 if( user_start) {169 if(status.user_instruction == START_READER) { 286 170 // start. BSY signal will create new card. 287 171 start_reader(); … … 326 210 // illegal intterupt! 327 211 printf("Illegal interrupt! PINC was %x is %x changed %x flanke %x\n", 328 prev.pinc, pinc_jetzt, pin_changed, rising_edge);212 status.prev_pinc, pinc_jetzt, pin_changed, rising_edge); 329 213 break; 330 214 } 331 215 332 216 // backup new "old" value 333 prev.pinc = pinc_jetzt;217 status.prev_pinc = pinc_jetzt; 334 218 } // ISR 335 219 … … 391 275 stop_reader(); 392 276 puts("No more space on buffer."); 393 reader_waits_for_space = 1;277 status.reader_waits_for_space = 1; 394 278 } 395 279 } … … 411 295 Init(); 412 296 UartInit(38400); 413 LedMode(1);297 start_led(); 414 298 415 299 // nette sachen machen koennen 416 300 stdout = &uart; 417 301 418 unsigned char Action = 0, display_menu; 419 enum format { 420 HEX = 4, 421 DEBUG = 5, 422 BINARY = 6 423 } out_format = DEBUG; 424 while (1) 425 { 426 Action = 0; 427 display_menu = 0; 428 //out_format = 4; 429 puts(""); 430 puts("Menu"); 431 puts(" 1) Start reading"); 432 puts(" 2) Stop reading"); 433 puts(" 3) Stop; Reset buffer"); 434 puts(" 4) HEX 5) DEBUG 6) BINARY JONES"); 435 puts(""); 436 puts("Choose Action: "); 437 438 while (! display_menu) 439 { 440 // erst mal buffer abarbeiten 441 if( current_read_card.offset == CARD_READY ) { 442 int col; 443 444 printf("Karte in rd %d rw %d, cols rd %d rw %d\n", card_buffer.read_offset, card_buffer.write_offset, 445 current_read_card.offset, current_write_card.offset); 446 447 // Karte abgearbeitet 448 current_read_card.offset = CARD_DONE; 449 450 //break; // Karte NICHT komplett ausgeben. Hier stoppen. 451 452 453 if(out_format != BINARY) { 454 for(col = 0; col < CARD_LEN; col++) { 455 if(out_format == HEX) { 456 printf("%x,%x ", (uint8_t) (current_read_card.columns[col] >> 8), 457 (uint8_t) (current_read_card.columns[col])); 458 } else if(out_format == DEBUG) { 459 printf("%02d: ", col+1); 460 column_print( ¤t_read_card.columns[col] ); 461 } else { 462 puts("Bad output format"); 463 break; 464 } 465 } 466 puts(""); 467 } else { // binary 468 puts("<CARD>"); 469 // make two columns to three bytes, after Douglas Jones 470 uint8_t x = 0; 471 Column even_col, odd_col; 472 while(x <= CARD_LEN) { 473 even_col = current_read_card.columns[x++]; 474 odd_col = current_read_card.columns[x++]; 475 476 putchar( even_col >> 4 ); // erstes byte 477 putchar( ((even_col & 017) << 4) | (odd_col >> 8) ); // zweites byte 478 putchar( odd_col & 00377 ); // drittes byte 479 } 480 puts("</CARD>"); 481 } 482 } 483 484 if( current_read_card.offset == CARD_DONE) { 485 // alle karten abgearbeitet, versuche zur naechsten 486 // Karte zu kommen 487 if( card_buffer_read_advance() != SUCCESS) { 488 puts("output waiting for next"); 489 } else { 490 puts("cr+"); 491 } 492 493 // und der Writer kann jetzt auch wieder loslegen 494 // also eigentlich wartet hier ja der WRITER 495 if(reader_waits_for_space) { 496 // leser hat auf uns gewartet (puffer war voll, leser war angehalten, 497 // wir haben nun eine weitere Karte gelesen => Leser kann in dieses 498 // Feld nun wieder schreiben) 499 if(card_buffer_write_advance() == SUCCESS) { 500 // es kann wieder weitergehen fuer den Leser 501 reader_waits_for_space = 0; 502 start_reader(); 503 } else { 504 puts("Deadline, writer waits for reader"); 505 } 506 } 507 508 } 509 510 511 // dann nutzereingaben abarbeiten 512 Action = UartReceive(); 513 if (Action) Action = Action - 48; 514 if (Action) 515 { 516 display_menu = 1; 517 switch(Action) { 518 case 1: 519 user_start = 1; 520 start_reader(); 521 start_led(); 522 break; 523 case 2: 524 user_start = 0; 525 stop_reader(); 526 stop_led(); 527 break; 528 case 3: 529 puts("Soft Reset"); 530 user_start = 0; 531 stop_reader(); 532 stop_led(); 533 card_buffer_flush(); 534 break; 535 case 4: 536 case 5: 537 case 6: 538 out_format = Action; 539 printf("Setting out format to %d\n", out_format); 540 break; 541 default: 542 printf("Illegal input %d\n", Action); 543 } 544 } // if action 545 } 546 } 302 user_input_loop(); 547 303 return 0; 548 304 } -
punch-card/driver/documation-m200/src/punchcard.c
r46 r50 11 11 12 12 // print column out (debugging), needing 16 bytes! 13 void column_print( Column* c) {13 void column_print(const Column* c) { 14 14 char str[20]; 15 15 str[0] = '|'; -
punch-card/driver/documation-m200/src/punchcard.h
r46 r50 1 #ifndef __M200_PUNCHCARD_H__ 2 #define __M200_PUNCHCARD_H__ 3 1 4 /** 2 5 * AVR M200 Punch card reader controller … … 40 43 41 44 #include <string.h> // memset 45 #include <stdlib.h> // abs (gcc builtin) 42 46 #include <avr/pgmspace.h> // zeichentabelle am Ende 43 47 … … 92 96 93 97 // print column out (debugging) 94 void column_print( Column* c);98 void column_print(const Column* c); 95 99 96 100 … … 160 164 int8_t card_buffer_read_advance(); 161 165 int8_t card_buffer_write_advance(); 166 167 #endif /* __M200_PUNCHCARD_H__ */ -
punch-card/driver/documation-m200/src/wiring.h
r46 r50 1 #ifndef __M200_WIRING_H__ 2 #define __M200_WIRING_H__ 3 1 4 /** 2 5 * specific things about the wiring of the uC on the board … … 72 75 #define start_led() ( PORTB &= ~(1 << PORTB_LED) ) 73 76 #define stop_led() ( PORTB |= (1 << PORTB_LED) ) 77 78 #endif /* __M200_WIRING_H__ */
Note: See TracChangeset
for help on using the changeset viewer.