WinAvr with Atmega16: Source Code: ////////////////////////////////////////////////// #include <avr/io.h> #include <avr/pgmspace.h> #define lcm_DI_SET PORTD&=_BV(PD7)
void lcm_WriteByte(unsigned char dat) { lcm_DI_SET; } void lcm_Show(unsigned char column, prog_void *addr) { unsigned char i, m; for(m = 0; m < 8; m++) { i = pgm_read_byte(addr + m); lcm_WriteByte(i); } } int main(void) { while(1); } ///////////////////////////////////////////////////////////// Result: -------- begin -------- avr-gcc (GCC) 3.4.3 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: main.elf : section size addr .text 148 0 .data 0 8388704 .bss 1 8388704 .noinit 0 8388705 .eeprom 0 8454144 .debug_aranges 20 0 .debug_pubnames 48 0 .debug_info 168 0 .debug_abbrev 123 0 .debug_line 205 0 .debug_str 118 0 Total 831 AVR Memory Usage: ----------------- Device: atmega16 Program: 148 bytes (0.9% Full) (.text + .data + .bootloader) Data: 1 bytes (0.1% Full) (.data + .bss + .noinit) Compiling: main.c avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.lst -std=gnu99 -MD -MP -MF .dep/main.o.d main.c -o main.o main.c: In function `lcm_Show': main.c:17: internal compiler error: Arithmetic exception Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. make: *** [main.o] Error 1 -- Summary: internal compiler error: Arithmetic exception Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: test_code at yahoo dot com dot cn http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25781