|
73 | 73 |
|
74 | 74 | /* the current avr-libc eeprom functions do not support the ATmega168 */ |
75 | 75 | /* own eeprom write/read functions are used instead */ |
76 | | -#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) |
| 76 | +#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) || !defined(__AVR_ATmega328__) |
77 | 77 | #include <avr/eeprom.h> |
78 | 78 | #endif |
79 | 79 |
|
|
202 | 202 | #define SIG3 0x0F |
203 | 203 | #define PAGE_SIZE 0x40U //64 words |
204 | 204 |
|
| 205 | +#elif defined __AVR_ATmega328__ |
| 206 | +#define SIG2 0x95 |
| 207 | +#define SIG3 0x14 |
| 208 | +#define PAGE_SIZE 0x40U //64 words |
| 209 | + |
205 | 210 | #elif defined __AVR_ATmega162__ |
206 | 211 | #define SIG2 0x94 |
207 | 212 | #define SIG3 0x04 |
@@ -367,7 +372,7 @@ int main(void) |
367 | 372 | UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; |
368 | 373 | UCSRA = 0x00; |
369 | 374 | UCSRB = _BV(TXEN)|_BV(RXEN); |
370 | | -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) |
| 375 | +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) |
371 | 376 |
|
372 | 377 | #ifdef DOUBLE_SPEED |
373 | 378 | UCSR0A = (1<<U2X0); //Double speed mode USART0 |
@@ -556,7 +561,7 @@ int main(void) |
556 | 561 | if (flags.eeprom) { //Write to EEPROM one byte at a time |
557 | 562 | address.word <<= 1; |
558 | 563 | for(w=0;w<length.word;w++) { |
559 | | -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) |
| 564 | +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) |
560 | 565 | while(EECR & (1<<EEPE)); |
561 | 566 | EEAR = (uint16_t)(void *)address.word; |
562 | 567 | EEDR = buff[w]; |
@@ -677,7 +682,7 @@ int main(void) |
677 | 682 | "rjmp write_page \n\t" |
678 | 683 | "block_done: \n\t" |
679 | 684 | "clr __zero_reg__ \n\t" //restore zero register |
680 | | -#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ |
| 685 | +#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega328__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ |
681 | 686 | : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" |
682 | 687 | #else |
683 | 688 | : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" |
@@ -710,7 +715,7 @@ int main(void) |
710 | 715 | putch(0x14); |
711 | 716 | for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay |
712 | 717 | if (flags.eeprom) { // Byte access EEPROM read |
713 | | -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) |
| 718 | +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) |
714 | 719 | while(EECR & (1<<EEPE)); |
715 | 720 | EEAR = (uint16_t)(void *)address.word; |
716 | 721 | EECR |= (1<<EERE); |
@@ -926,7 +931,7 @@ void putch(char ch) |
926 | 931 | while (!(UCSR1A & _BV(UDRE1))); |
927 | 932 | UDR1 = ch; |
928 | 933 | } |
929 | | -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) |
| 934 | +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) |
930 | 935 | while (!(UCSR0A & _BV(UDRE0))); |
931 | 936 | UDR0 = ch; |
932 | 937 | #else |
@@ -964,7 +969,7 @@ char getch(void) |
964 | 969 | return UDR1; |
965 | 970 | } |
966 | 971 | return 0; |
967 | | -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) |
| 972 | +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) |
968 | 973 | uint32_t count = 0; |
969 | 974 | while(!(UCSR0A & _BV(RXC0))){ |
970 | 975 | /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ |
@@ -1001,7 +1006,7 @@ void getNch(uint8_t count) |
1001 | 1006 | while(!(UCSR1A & _BV(RXC1))); |
1002 | 1007 | UDR1; |
1003 | 1008 | } |
1004 | | -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) |
| 1009 | +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) |
1005 | 1010 | getch(); |
1006 | 1011 | #else |
1007 | 1012 | /* m8,16,32,169,8515,8535,163 */ |
|
0 commit comments