Rev 3471 Rev 3472
Line 9... Line 9...
9 * Last change....: 2009-02-28 9 * Last change....: 2009-02-28
10 * 10 *
11 * PC2 SCK speed option. 11 * PC2 SCK speed option.
12 * GND -> slow (8khz SCK), 12 * GND -> slow (8khz SCK),
13 * open -> software set speed (default is 375kHz SCK) 13 * open -> software set speed (default is 375kHz SCK)
-   14 *
-   15 * 2014_02_09 miho@mlab.cz - cleaned code and defined IO port better, automatic compile prodcess for more target CPUs
-   16 *
14 */ 17 */
15   18  
16 #include <avr/io.h> 19 #include <avr/io.h>
17 #include <avr/interrupt.h> 20 #include <avr/interrupt.h>
18 #include <avr/pgmspace.h> 21 #include <avr/pgmspace.h>
Line 42... Line 45...
42 uchar len = 0; 45 uchar len = 0;
43   46  
44 if (data[1] == USBASP_FUNC_CONNECT) { 47 if (data[1] == USBASP_FUNC_CONNECT) {
45   48  
46 /* set SCK speed */ 49 /* set SCK speed */
47 if ((PINC & (1 << PC2)) == 0) { 50 if ((PIN(CLKSW_PORT) & (1 << CLKSW_BIT)) == 0) {
48 ispSetSCKOption(USBASP_ISP_SCK_8); 51 ispSetSCKOption(USBASP_ISP_SCK_8);
49 } else { 52 } else {
50 ispSetSCKOption(prog_sck); 53 ispSetSCKOption(prog_sck);
51 } 54 }
52   55  
Line 301... Line 304...
301 } 304 }
302   305  
303 int main(void) { 306 int main(void) {
304 uchar i, j; 307 uchar i, j;
305   308  
306 /* no pullups on USB and ISP pins */ 309 /* unused pins with pullups */
-   310 PORTB = PORTB_UNUSED_MASK;
-   311 PORTC = PORTC_UNUSED_MASK;
307 PORTD = 0; 312 PORTD = PORTD_UNUSED_MASK;
-   313  
-   314 /* LED ports as output */
308 PORTB = 0; 315 ledInit();
-   316 ledGreenOn();
-   317 ledRedOff();
-   318  
309 /* all outputs except PD2 = INT0 */ 319 /* CLKSW input with PullUp (external jumper to GND) */
310 DDRD = ~(1 << 2); 320 clkswInit();
311   321  
312 /* output SE0 for USB reset */ 322 /* output SE0 for USB reset */
313 DDRB = ~0; 323 DDR(USB_CFG_IOPORTNAME) |= (1 << USB_CFG_DPLUS_BIT | 1<<USB_CFG_DMINUS_BIT);
314 j = 0; 324  
315 /* USB Reset by device only required on Watchdog Reset */ 325 /* USB Reset by device only required on Watchdog Reset */
-   326 j = 0;
316 while (--j) { 327 while (--j) {
317 i = 0; 328 i = 0;
318 /* delay >10ms for USB reset */ 329 /* delay >10ms for USB reset */
319 while (--i) 330 while (--i)
320 ; 331 ;
321 } 332 }
322 /* all USB and ISP pins inputs */ -  
323 DDRB = 0; -  
324   333  
325 /* all inputs except PC0, PC1 */ 334 /* all USB and ISP pins inputs */
326 DDRC = 0x03; -  
327 PORTC = 0xfe; 335 DDR(USB_CFG_IOPORTNAME) &= ~(1 << USB_CFG_DPLUS_BIT | 1<<USB_CFG_DMINUS_BIT);
328   336  
329 /* init timer */ 337 /* init timer */
330 clockInit(); 338 clockInit();
331   339  
332 /* main event loop */ 340 /* main event loop */
Line 335... Line 343...
335 for (;;) { 343 for (;;) {
336 usbPoll(); 344 usbPoll();
337 } 345 }
338 return 0; 346 return 0;
339 } 347 }
340   -