Hi leute wie das Thma schon sag ich versuche aus Pin-Verteilungsgründe mein LCD über vierschiedene Portpins im Betrieb zu nehmen und es klappt nicht. hier ist es konkret. ich möchte am PORTD die PIND0 bis PIND3 benutzen für DA4 bis DA7 und am PORTA die PINA4 für RS und PINA5 für E nehmen. Es klappt aber nicht . wenn ich aber statt am port A am PORTD die Leitungen RS und E jeweil am PIND4 und PIND5 einschliesse läuft alles wunderbar. Was ist der Grund ? Hat eine schon ein Problem damit gehabt ??? Wie ist es lösbar nicht alle Leitung auf einem Port anzuschliessen und trotzdem eine Funktionierendes Routine zu bekommen? Danke für Hilfe Karl
Hi >Wie ist es lösbar nicht alle Leitung auf einem Port anzuschliessen und >trotzdem eine Funktionierendes Routine zu bekommen? Indem man es richtig macht. Aber Ernst beiseite. Wahrscheinlich hast du die Pinwanderung nicht vollständig gemacht. Wie wäre es mal mit dem Code?. MfG Spess
Ich finde deinen Post ja mal richtig klasse: Keine Problembeschreibung, kein Code, kein Schaltplan... Es spricht ja nichts dagegen, die Pin querbeet zu verteilen (OK, für ein Grafikdisplay könnte es u.U. zu langsam werden), wenn man darauf achtet, die anderen Pins nicht zu verstellen (In der Codesammlung gibt's ne (GCC)C-Library, bei der die 6 Pins von Text-LCDs beliebig verteilt werden können - für AVRs). hth, Jörg edit: Ich seh grad: deine Hardware verschweigst du ja auch noch
> Wie ist es lösbar nicht alle Leitung auf einem Port anzuschliessen und > trotzdem eine Funktionierendes Routine zu bekommen? Indem die Software die entsprechenden Pins ansteuert :-/
na ja habe schon lange rum probiert. hier ist ein code abschnitt im Anhang am PORTC mit einer Lücke zwischen DA-Leitungen und RS-E-Leitungen
> ich möchte am PORTD die PIND0 bis PIND3 benutzen > für DA4 bis DA7 und am PORTA die PINA4 für RS und PINA5 für E nehmen. Und dann > hier ist ein code abschnitt im Anhang am PORTC Ja, was denn jetzt? Probiers mal so:
1 | if (rs) PORTE |= (1<<4); // Zustand für RS-Leitung --- PINA4 für RS |
2 | else PORTE &=~(1<<4); |
3 | PORTD = (PORTD&0xF0)|(data>>4)&0x0F;// output high nibble first |
4 | lcd_flash_e (); |
5 | PORTD = (PORTD&0xF0)|(data&0x0F); // output low nibble |
6 | lcd_flash_e (); |
7 | delay(2000); |
8 | }
|
9 | |
10 | void lcd_flash_e () |
11 | {
|
12 | PORTE |= (1<<5); // Enable = HIGH --- PINA5 für E |
13 | delay(1); |
14 | PORTE |= ~(1<<5); // Enable = LOW |
15 | delay(64); |
Warum muß eigentlich jeder das Rad immer wieder neu erfinden?
Schlags kaputt: ersetze die PORTE durch PORTA Gute Nacht ;-)
ja danke aber an dem Code liegt es nicht . wie gesagt es funktioniert ganz gut , wenn die PINs vortlaufen beschaltet sind. Aber wenn ich zum beispiel von 0 bis 3 beschalte und weiter von 6 bis 7 die E und RS Leitungen anschließe, geht es dann halt nicht. (Code bleibt unverändert aber nur die PORTsPin ändern sich). Ich kappiere dass einfach nicht.
Hallo, Karl schrieb: > aber an dem Code liegt es nicht . > wie gesagt es funktioniert ganz gut , wenn die PINs vortlaufen > beschaltet sind. Aber wenn ich zum beispiel von 0 bis 3 beschalte und > weiter von 6 bis 7 die E und RS Leitungen anschließe, geht es dann halt > nicht. (Code bleibt unverändert aber nur die PORTsPin ändern sich). > > Ich kappiere dass einfach nicht. Ich Deinen Text auch nicht... Wieso soll es bei unverändertem Code plötzlich an anderen Pins funktionieren? Gruß aus Berlin Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.