Rev 855 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 855 | Rev 861 | ||
---|---|---|---|
Line 30... | Line 30... | ||
30 | #endif |
30 | #endif |
31 | 31 | ||
32 | //check power |
32 | //check power |
33 | if ( (nCONFIG_PIN & (1<<nCONFIG)) == 0 ) |
33 | if ( (nCONFIG_PIN & (1<<nCONFIG)) == 0 ) |
34 | { |
34 | { |
- | 35 | // only after poweron reset we should wait for soft reset button before powering on |
|
- | 36 | if( !(j & ((1<<JTRF)|(1<<WDRF)|(1<<BORF)|(1<<EXTRF))) || (j & (1<<PORF)) ) |
|
- | 37 | { |
|
- | 38 | // have at least 2 sec pause before turning on, as this hopefully gives enough time |
|
- | 39 | // for FPGA voltages to drop and it will powerup cleanly without compromising the firmware |
|
- | 40 | UBYTE soft_rst_pressed = 0; |
|
- | 41 | UBYTE i = PRE_PWRON_WAIT; |
|
- | 42 | ||
- | 43 | do |
|
- | 44 | { |
|
35 | //if not external reset |
45 | // blink power LED |
- | 46 | if( i&7 ) |
|
- | 47 | LED_PORT |= (1<<LED); |
|
- | 48 | else |
|
- | 49 | LED_PORT &= ~(1<<LED); |
|
- | 50 | ||
- | 51 | _delay_ms(20); |
|
- | 52 | ||
36 | //then wait for atx power on button (SOFTRESET) |
53 | // if soft reset was pressed during wait, remember it and go poweron immediately after the wait ends |
37 | if ( !(j & ((1<<JTRF)|(1<<WDRF)|(1<<BORF)|(1<<EXTRF))) || |
54 | soft_rst_pressed |= !(SOFTRES_PIN & (1<<SOFTRES)); |
- | 55 | ||
38 | (j & (1<<PORF)) ) |
56 | } while(--i); |
- | 57 | ||
- | 58 | // wait further for soft reset press |
|
39 | while( SOFTRES_PIN&(1<<SOFTRES) ); |
59 | if( !soft_rst_pressed ) while( SOFTRES_PIN&(1<<SOFTRES) ); |
- | 60 | } |
|
40 | 61 | ||
41 | //switch on ATX power (PF3 pin in PORTF) |
62 | //switch on ATX power (PF3 pin in PORTF) |
42 | ATXPWRON_PORT |= (1<<ATXPWRON); |
63 | ATXPWRON_PORT |= (1<<ATXPWRON); |
43 | 64 | ||
44 | //1 sec delay |
65 | //1 sec delay |
Line 58... | Line 79... | ||
58 | 79 | ||
59 | if ( atx_counter > PWROFF_KEY_TIME ) |
80 | if ( atx_counter > PWROFF_KEY_TIME ) |
60 | { |
81 | { |
61 | //here if either SOFTRES_PIN or F12 held for more than ~5 seconds |
82 | //here if either SOFTRES_PIN or F12 held for more than ~5 seconds |
62 | 83 | ||
63 | // if ( ( SOFTRES_PIN & (1<<SOFTRES) ) == 0 ) |
- | |
64 | // { |
- | |
65 | // //atx power off button pressed (~5 sec) |
- | |
66 | // |
- | |
67 | // //switch off atx power |
- | |
68 | // atxpwron_port &= ~(1<<atxpwron); |
- | |
69 | // |
- | |
70 | // // wait for power to drop |
- | |
71 | // } |
- | |
72 | // else |
- | |
73 | // { |
- | |
74 | // //enable hard reset |
- | |
75 | // flags_register |= FLAG_HARD_RESET; |
- | |
76 | // } |
- | |
77 | 84 | ||
78 | 85 | ||
79 | // no more need in executing mainloop and servicing interrupts |
86 | // no more need in executing mainloop and servicing interrupts |
80 | cli(); |
87 | cli(); |
81 | 88 | ||
Line 114... | Line 121... | ||
114 | //soft reset (reset Z80 only) -- F12 or softreset pressed for less than 1700 ticks |
121 | //soft reset (reset Z80 only) -- F12 or softreset pressed for less than 1700 ticks |
115 | zx_spi_send(SPI_RST_REG, 0, 0x7F); |
122 | zx_spi_send(SPI_RST_REG, 0, 0x7F); |
116 | } |
123 | } |
117 | last_count = atx_counter; |
124 | last_count = atx_counter; |
118 | 125 | ||
119 | // if ( ( nCONFIG_PIN & (1<<nCONFIG) ) == 0 ) |
- | |
120 | // { |
- | |
121 | // //power down |
- | |
122 | // |
- | |
123 | // //power led off (timer output disconnect from led pin) |
- | |
124 | // TCCR2 &= ~((1<<COM20)|(1<<COM21)); |
- | |
125 | // |
- | |
126 | // //wait for button released |
- | |
127 | // while ( ( SOFTRES_PIN & (1<<SOFTRES) ) == 0 ); |
- | |
128 | // |
- | |
129 | // //1 sec delay |
- | |
130 | // do _delay_ms(20); while(--j); |
- | |
131 | // |
- | |
132 | // last_count = 0; |
- | |
133 | // |
- | |
134 | // //enable hard reset |
- | |
135 | // flags_register |= FLAG_HARD_RESET; |
- | |
136 | // } |
- | |
137 | 126 | ||
138 | } |
127 | } |