Hi,
also im Code selbst "switch" ich einfach zwischen den beiden
Controllern.
Da ja alles Parallel angeschlossen ist ( außer die beiden Enable Pins E1
und E2 ) sollte das doch eigentlich möglich sein?
Habe jeweils die funktionen die die Enable pins high/low setzen
angepasst:
1 | void setController(uint8_t controller) {
|
2 |
|
3 | use_controller = controller;
|
4 |
|
5 | }
|
6 |
|
7 |
|
8 | void lcd_e_high() {
|
9 |
|
10 | if (use_controller == 1) {
|
11 | LCD_E1_PORT |= _BV(LCD_E1_PIN);
|
12 | } else if (use_controller == 2) {
|
13 | LCD_E2_PORT |= _BV(LCD_E2_PIN);
|
14 | }
|
15 |
|
16 | }
|
17 |
|
18 |
|
19 | void lcd_e_low() {
|
20 |
|
21 | if (use_controller == 1) {
|
22 | LCD_E1_PORT &= ~_BV(LCD_E1_PIN);
|
23 | } else if (use_controller == 2) {
|
24 | LCD_E2_PORT &= ~_BV(LCD_E2_PIN);
|
25 | }
|
26 |
|
27 | }
|
Und logischerweise Initialisiere ich dann beide Controller, und schreib
auf beiden das gleiche:
1 | setController(1);
|
2 | lcd_init(LCD_DISP_ON);
|
3 | lcd_clrscr();
|
4 |
|
5 |
|
6 |
|
7 | setController(2);
|
8 | lcd_init(LCD_DISP_ON);
|
9 | lcd_clrscr();
|
10 |
|
11 | setController(1);
|
12 | lcd_gotoxy(0,1);
|
13 | lcd_puts("blabla");
|
14 |
|
15 |
|
16 | setController(2);
|
17 | lcd_gotoxy(0,1);
|
18 | lcd_puts("blabla");
|
Manchmal kommt Datenmüll ( eher wenn ich dem Strom ganz weg nimm und
wieder gib ) manchmal nicht.
Hat wohl irgendwas mit den Timings zu tun. Ein Delay zwischen dem
Controller wechseln bringt irgendwie auch nix :-(
Bin mit meinem unprofessionellen C Kentnissen eigentlich am Ende.
Einer vielleicht noch ne Idee wo ich ansetzen könnt?
Grüsse,
Frank