Forum: Mikrocontroller und Digitale Elektronik Probleme bei ansteuerung von LCD über verschiedene PORTs-Pin


von Karl (Gast)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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

von Jörg G. (joergderxte)


Lesenswert?

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

von na sowas (Gast)


Lesenswert?

> 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  :-/

von Karl (Gast)


Angehängte Dateien:

Lesenswert?

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

von na sowas (Gast)


Lesenswert?

> 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?

von na sowas (Gast)


Lesenswert?

Schlags kaputt:  ersetze die PORTE durch PORTA
Gute Nacht ;-)

von Karl (Gast)


Lesenswert?

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.

von H.J.Seifert (Gast)


Lesenswert?

Hm, welcher Prozessor? PortC - da leuchtet bei mir immer das JTAG-Licht 
auf:-)

von Karl (Gast)


Lesenswert?

ich benutze der ATMEGA8515 aus de STK500

von Michael U. (amiga)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?


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
Noch kein Account? Hier anmelden.