pod32
14.12.2009, 10:44
Hallo,
ich habe ein LCD gemäß 4-Bit mit Busy (http://www.rn-wissen.de/index.php/LCD-Modul_am_AVR#AVR-GCC_Programm_2) an Port C angeschlossen.
Das ganze mit WinAVR übertragen:
> "make.exe" program
Compiling C: rn-control.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./rn-control.lst -I. -std=gnu99 -MMD -MP -MF .dep/rn-control.o.d rn-control.c -o rn-control.o
Compiling C: lcd.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./lcd.lst -I. -std=gnu99 -MMD -MP -MF .dep/lcd.o.d lcd.c -o lcd.o
Linking: rn-control.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=rn-control.o -I. -std=gnu99 -MMD -MP -MF .dep/rn-control.elf.d rn-control.o lcd.o --output rn-control.elf -Wl,-Map=rn-control.map,--cref -lm
Creating load file for Flash: rn-control.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock rn-control.elf rn-control.hex
Creating load file for EEPROM: rn-control.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex rn-control.elf rn-control.eep || exit 0
avrdude -p atmega32 -P com4 -c stk500v2 -U flash:w:rn-control.hex
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.04s
avrdude: Device signature = 0x1e9502
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "rn-control.hex"
avrdude: input file rn-control.hex auto detected as Intel Hex
avrdude: writing flash (722 bytes):
Writing | ################################################## | 100% 0.89s
avrdude: 722 bytes of flash written
avrdude: verifying flash memory against rn-control.hex:
avrdude: load data flash data from input file rn-control.hex:
avrdude: input file rn-control.hex auto detected as Intel Hex
avrdude: input file rn-control.hex contains 722 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.48s
avrdude: verifying ...
avrdude: 722 bytes of flash verified
avrdude done. Thank you.
> Process Exit Code: 0
> Time Taken: 00:22
Ich habe aber das weit verbreitete Problem mit den 2 schwarzen bzw. 2 weißen Balken.
Text bekomme ich nicht auf das Display, egal in welcher Zeile
#include <stdlib.h>
#include <avr/io.h>
#include "lcd.h"
#include "rn-control.h"
int main(void)
{
for(;;){
/* Initialisiere Display, Cursor aus */
lcd_init(LCD_DISP_ON);
/* loesche das LCD Display und Cursor auf 1 Zeile, 1 Spalte */
lcd_clrscr();
/* String auf Display anzeigen */
lcd_puts("Hello world.\n");
lcd_puts("testme\n");
}
return 0;
}
Ein Datenblatt von dem Display habe ich allerdings nicht :-#
auf dem Display steht nur was von "JHD 204A".
Wie bekomme ich Text auf das Display?
gruß
pod32
ich habe ein LCD gemäß 4-Bit mit Busy (http://www.rn-wissen.de/index.php/LCD-Modul_am_AVR#AVR-GCC_Programm_2) an Port C angeschlossen.
Das ganze mit WinAVR übertragen:
> "make.exe" program
Compiling C: rn-control.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./rn-control.lst -I. -std=gnu99 -MMD -MP -MF .dep/rn-control.o.d rn-control.c -o rn-control.o
Compiling C: lcd.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./lcd.lst -I. -std=gnu99 -MMD -MP -MF .dep/lcd.o.d lcd.c -o lcd.o
Linking: rn-control.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=rn-control.o -I. -std=gnu99 -MMD -MP -MF .dep/rn-control.elf.d rn-control.o lcd.o --output rn-control.elf -Wl,-Map=rn-control.map,--cref -lm
Creating load file for Flash: rn-control.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock rn-control.elf rn-control.hex
Creating load file for EEPROM: rn-control.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O ihex rn-control.elf rn-control.eep || exit 0
avrdude -p atmega32 -P com4 -c stk500v2 -U flash:w:rn-control.hex
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.04s
avrdude: Device signature = 0x1e9502
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "rn-control.hex"
avrdude: input file rn-control.hex auto detected as Intel Hex
avrdude: writing flash (722 bytes):
Writing | ################################################## | 100% 0.89s
avrdude: 722 bytes of flash written
avrdude: verifying flash memory against rn-control.hex:
avrdude: load data flash data from input file rn-control.hex:
avrdude: input file rn-control.hex auto detected as Intel Hex
avrdude: input file rn-control.hex contains 722 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.48s
avrdude: verifying ...
avrdude: 722 bytes of flash verified
avrdude done. Thank you.
> Process Exit Code: 0
> Time Taken: 00:22
Ich habe aber das weit verbreitete Problem mit den 2 schwarzen bzw. 2 weißen Balken.
Text bekomme ich nicht auf das Display, egal in welcher Zeile
#include <stdlib.h>
#include <avr/io.h>
#include "lcd.h"
#include "rn-control.h"
int main(void)
{
for(;;){
/* Initialisiere Display, Cursor aus */
lcd_init(LCD_DISP_ON);
/* loesche das LCD Display und Cursor auf 1 Zeile, 1 Spalte */
lcd_clrscr();
/* String auf Display anzeigen */
lcd_puts("Hello world.\n");
lcd_puts("testme\n");
}
return 0;
}
Ein Datenblatt von dem Display habe ich allerdings nicht :-#
auf dem Display steht nur was von "JHD 204A".
Wie bekomme ich Text auf das Display?
gruß
pod32