Hallo,
ich wende mich jetzt doch an euch. Denn ich kann den Fehler nicht
finden. Es handelt sich um das zweite Display das ich verbauen möchte.
Mit dem ersten ging alles super. Ein halbes Jahr später gibt es
Probleme.
Ich habe nun ein zweites Board gebaut um alles zu prüfen. Wieder
Fehlschläge. Ich bin sicher, wenn ihr den Output seht, dann fallen euch
zig Gründe ein woran es liegen kann, die ich noch nicht geprüft habe,
obwohl ich schon 8 mach durch alles durchgegangen bin.
Ich bin am Ende meine Ideen und frage höflich nach Debugging-Tipps und
Ideen.
Ich benutze die Lib von Peter Fleury. RW habe ich verbunden.
Das "lustige" ist, er kommt durch die Initialisierungs-Methode durch.
Doch er zeigt leider nichts an!
Ich hänge euch mal das Bild vom Display ran.
Hier die Belegung:
1 | #define LCD_PORT PORTD
|
2 | #define LCD_DATA0_PORT LCD_PORT
|
3 | #define LCD_DATA1_PORT LCD_PORT
|
4 | #define LCD_DATA2_PORT LCD_PORT
|
5 | #define LCD_DATA3_PORT LCD_PORT
|
6 | #define LCD_DATA0_PIN 0
|
7 | #define LCD_DATA1_PIN 1
|
8 | #define LCD_DATA2_PIN 2
|
9 | #define LCD_DATA3_PIN 3
|
10 | #define LCD_RS_PORT PORTD
|
11 | #define LCD_RS_PIN 4
|
12 | #define LCD_RW_PORT PORTD
|
13 | #define LCD_RW_PIN 6
|
14 | #define LCD_E_PORT PORTD
|
15 | #define LCD_E_PIN 5
|
Und dies ist meine Testroutine:
1 | //
|
2 | // main.c
|
3 | // AnalyserDude
|
4 | //
|
5 | // Created by Peter Shaw
|
6 | // Copyright (c) 2013. All rights reserved.
|
7 | //
|
8 |
|
9 | #include <stdlib.h>
|
10 | #include <stdbool.h>
|
11 |
|
12 | #include <util/delay.h>
|
13 | #include <avr/io.h>
|
14 | #include <avr/interrupt.h>
|
15 |
|
16 | #include "../src-lib/lcd/lcd.h"
|
17 |
|
18 | #define LIGHT_ON(l) (PORTB |= (l))
|
19 | #define LIGHT_OFF(l) (PORTB &= ~(l))
|
20 | #define LIGHT_TOGGLE(l) (PORTB ^= (l))
|
21 |
|
22 | int i;
|
23 |
|
24 | // DUMMY FUNCTION
|
25 | // ---------------------------------------------
|
26 | void *dummy(void){return (void *) NULL;};
|
27 |
|
28 | /**
|
29 | * Initialize the lcd and printout a welcome message
|
30 | */
|
31 | void initialize_lcd(void){
|
32 | LIGHT_ON(1<<PB1);
|
33 | lcd_init(LCD_DISP_ON); // initialize display, cursor off
|
34 | LIGHT_OFF(1<<PB1);
|
35 |
|
36 | lcd_puts("XOXOXOXOXOXOXOXO\n"); // welcome message
|
37 | lcd_puts("OXOXOXOXOXOXOXOX");
|
38 | }
|
39 |
|
40 |
|
41 | int main(void) {
|
42 |
|
43 | DDRB |= (1<<PB0) | (1<<PB1);
|
44 | LIGHT_ON(1<<PB0);
|
45 | _delay_ms(500);
|
46 | LIGHT_OFF(1<<PB0);
|
47 |
|
48 | //initialize the device
|
49 | initialize_lcd();
|
50 | _delay_ms(1000);
|
51 | lcd_clrscr();
|
52 |
|
53 |
|
54 | // mainloop
|
55 | while(1) {
|
56 | LIGHT_ON(1<<PB0);
|
57 |
|
58 | for(i=0;i<16;i++){
|
59 | lcd_puts("X");
|
60 | _delay_ms(300);
|
61 | }
|
62 | lcd_puts("\n");
|
63 | for(i=0;i<16;i++){
|
64 | lcd_puts("X");
|
65 | _delay_ms(200);
|
66 | }
|
67 |
|
68 | LIGHT_OFF(1<<PB0);
|
69 | _delay_ms(1000);
|
70 | lcd_clrscr();
|
71 | }
|
72 |
|
73 | }
|
Danke für Ideen.