Atmega8515 + DOGM163W-A Problem!
Postat: 23 september 2005, 11:09:04
Jag har köpt en DOGM163W-A kopplat in den enligt det står på databladet:
http://www.alcom.nl/images/nieuws/Elect ... r%2005.pdf
har även skrivit denna koden (som är lite kopierat av avrbeginners.net):
---------------------------------------
;3 raders EA Dog-m display på
;pa 0-7 = db 0-7 (8bitars adress)
.device ATmega8515
.include "m8515def.inc"
.equ LCD_E = 0 ;pb0 = e
.equ LCD_RW = 1 ;pb1 = r/w
.equ LCD_RS = 2 ;pb2 = rs
.equ LED = 3 ;pb3 = lysdiod (ej display)
.equ TIME_500ms = 0x85ee
.org 0x0000
rjmp Reset
.org ovf1addr
rjmp Timer_ovf
Reset:
ldi r16,high(RAMEND) ; Setup the Stack pointer
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
ldi r16, high(TIME_500ms) ; load timer 1 register (TCNT1) with timer_value
out TCNT1H, r16 ;
ldi r16, low(TIME_500ms) ; load timer 1 register (TCNT1) with timer_value
out TCNT1L, r16
ldi r16, 0 ; stop Timer 1 (clear CS10 and CS12)
out TCCR1B, r16
ldi r16, 0b10000000 ; set bit 7 in TIMSK to enable Timer 1 overflow interrupt
out TIMSK, r16
sei
ldi r16, 0xff
out ddra, r16 ;Make porta outputs
nop
ldi r16, 0xff
out ddrb, r16 ;Make portb 0-3 outputs
nop
rcall Timer_start
loop: ;wait here for 500ms
sbrs r17,0
rjmp loop
ldi r17,0
;Init_display
ldi r16, 0x39
rcall lcd_command
rcall lcd_wait
ldi r16,0x1d
rcall lcd_command
rcall lcd_wait
ldi r16,0x50
rcall lcd_command
rcall lcd_wait
ldi r16,0x6c
rcall lcd_command
rcall lcd_wait
ldi r16,0x7c
rcall lcd_command
rcall lcd_wait
ldi r16,0x0f
rcall lcd_command
rcall lcd_wait
ldi r16, 0x01
rcall lcd_command
rcall lcd_wait
ldi r16, 0b00000110
rcall lcd_command
forever:
rjmp forever
LCD_Command:
cbi PortB, LCD_RS
out PortA, r16
sbi PortB, LCD_E
nop
nop
nop
cbi PortB, LCD_E
ret
LCD_wait:
rcall LCD_r_Addr
sbrc r16, 7
rjmp LCD_wait
cbi PortB, LED ;if wait turn on led
ret
LCD_r_Addr:
cbi PortB, LCD_RS
sbi PortB, LCD_RW
ldi r16, 0x00
out DDRA, r16
sbi PortB, LCD_E
nop
in r16, PinA
cbi PortB, LCD_E
ldi r17, 0xFF
out DDRA, r17
cbi PortB, LCD_RW
ret
LCD_w_Data:
sbi PortB, LCD_RS
out PortA, r16
sbi PortB, LCD_E
nop
nop
nop
cbi PortB, LCD_E
cbi PortB, LCD_RS
ret
;Subroutine to start the timer
Timer_start:
ldi r16, 0b00000011 ; set CS10 - CS13 for 64 cycle prescaler
out TCCR1B, r16
ret
;ISR for timer overflow
Timer_ovf:
push r16
in r16, sreg
push r16
ldi r16, 0 ; stop Timer 1 (clear CS10 and CS12)
out TCCR1B, r16
ldi r17, 0b00000001
pop r16
out sreg, r16
pop r16
reti
-----------------------------------
Men den är bara blank.... vad e felet!!!!
håller på att bli tokig har provat allt (nästan)
finns det någon som pillat med denna innan eller liknande display och kan hjälpa mej, är jag väldigt tacksam.
http://www.alcom.nl/images/nieuws/Elect ... r%2005.pdf
har även skrivit denna koden (som är lite kopierat av avrbeginners.net):
---------------------------------------
;3 raders EA Dog-m display på
;pa 0-7 = db 0-7 (8bitars adress)
.device ATmega8515
.include "m8515def.inc"
.equ LCD_E = 0 ;pb0 = e
.equ LCD_RW = 1 ;pb1 = r/w
.equ LCD_RS = 2 ;pb2 = rs
.equ LED = 3 ;pb3 = lysdiod (ej display)
.equ TIME_500ms = 0x85ee
.org 0x0000
rjmp Reset
.org ovf1addr
rjmp Timer_ovf
Reset:
ldi r16,high(RAMEND) ; Setup the Stack pointer
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
ldi r16, high(TIME_500ms) ; load timer 1 register (TCNT1) with timer_value
out TCNT1H, r16 ;
ldi r16, low(TIME_500ms) ; load timer 1 register (TCNT1) with timer_value
out TCNT1L, r16
ldi r16, 0 ; stop Timer 1 (clear CS10 and CS12)
out TCCR1B, r16
ldi r16, 0b10000000 ; set bit 7 in TIMSK to enable Timer 1 overflow interrupt
out TIMSK, r16
sei
ldi r16, 0xff
out ddra, r16 ;Make porta outputs
nop
ldi r16, 0xff
out ddrb, r16 ;Make portb 0-3 outputs
nop
rcall Timer_start
loop: ;wait here for 500ms
sbrs r17,0
rjmp loop
ldi r17,0
;Init_display
ldi r16, 0x39
rcall lcd_command
rcall lcd_wait
ldi r16,0x1d
rcall lcd_command
rcall lcd_wait
ldi r16,0x50
rcall lcd_command
rcall lcd_wait
ldi r16,0x6c
rcall lcd_command
rcall lcd_wait
ldi r16,0x7c
rcall lcd_command
rcall lcd_wait
ldi r16,0x0f
rcall lcd_command
rcall lcd_wait
ldi r16, 0x01
rcall lcd_command
rcall lcd_wait
ldi r16, 0b00000110
rcall lcd_command
forever:
rjmp forever
LCD_Command:
cbi PortB, LCD_RS
out PortA, r16
sbi PortB, LCD_E
nop
nop
nop
cbi PortB, LCD_E
ret
LCD_wait:
rcall LCD_r_Addr
sbrc r16, 7
rjmp LCD_wait
cbi PortB, LED ;if wait turn on led
ret
LCD_r_Addr:
cbi PortB, LCD_RS
sbi PortB, LCD_RW
ldi r16, 0x00
out DDRA, r16
sbi PortB, LCD_E
nop
in r16, PinA
cbi PortB, LCD_E
ldi r17, 0xFF
out DDRA, r17
cbi PortB, LCD_RW
ret
LCD_w_Data:
sbi PortB, LCD_RS
out PortA, r16
sbi PortB, LCD_E
nop
nop
nop
cbi PortB, LCD_E
cbi PortB, LCD_RS
ret
;Subroutine to start the timer
Timer_start:
ldi r16, 0b00000011 ; set CS10 - CS13 for 64 cycle prescaler
out TCCR1B, r16
ret
;ISR for timer overflow
Timer_ovf:
push r16
in r16, sreg
push r16
ldi r16, 0 ; stop Timer 1 (clear CS10 and CS12)
out TCCR1B, r16
ldi r17, 0b00000001
pop r16
out sreg, r16
pop r16
reti
-----------------------------------
Men den är bara blank.... vad e felet!!!!
håller på att bli tokig har provat allt (nästan)
finns det någon som pillat med denna innan eller liknande display och kan hjälpa mej, är jag väldigt tacksam.