Forum: Mikrocontroller und Digitale Elektronik Atmega128 Ports durcheinander


von Maniac (Gast)


Lesenswert?

Hallo,

ich versuche momentan ein Grafikdisplay an einem Atmega128 zum Laufen zu 
bringen. Das ganze in C.
Hab auch schon fertige Routinen zur Initialisierung usw, nur mit den 
Ports hab ich Probleme.
Auf Grund des Layouts sind die Daten und Steuerleitungen auf die Ports C 
und D verteilt.
Und bei folgenden Zeilen gibts dann Probleme:

// Ports
#define LCD_CMD_PORT    PORTC    // Command Output Register
#define LCD_CMD_DIR    DDRC    // Data Direction Register for Command 
Port

#define LCD_DATA_IN    PIND    // Data Input Register
#define LCD_DATA_OUT    PORTD    // Data Output Register
#define LCD_DATA_DIR    DDRD    // Data Direction Register for Data Port

// Function Paramters
#define INCREMENT_X    0
#define NO_INCREMENT_X    1

// Command Port Bits
#define D_I      PD0    // D/I Bit Number
#define R_W      PD7    // R/W Bit Number
#define EN      PD1    // EN Bit Number
#define CSEL1      PC4    // CS1 Bit Number
#define CSEL2      PD4    // CS2 Bit Number

Gibt es eine Möglichkeit die durcheinander gewürfelten Pins wieder zu 
einem Port zusammen zu fassen ?
Oder kann ich in der Definition irgendwie mit den einzelnen Pins 
arbeiten ?

MFG

von Ich (Gast)


Lesenswert?

Hmm?
Ich verstehe irgendwie nicht, was das Problem ist.
Wenn die Bits verteilt sind kann man die halt nicht mit einem einzelnen 
Zugriff setzen - na und?

Fremder Display-Code?
Tja, umschreiben oder selber machen.

von Sascha W. (sascha-w)


Lesenswert?

Maniac schrieb:
> ...
> Gibt es eine Möglichkeit die durcheinander gewürfelten Pins wieder zu
> einem Port zusammen zu fassen ?
ja in der Software - aber hier musst du die vorhandene Lib anpassen

> Oder kann ich in der Definition irgendwie mit den einzelnen Pins
> arbeiten ?
nein, mit den Def's wird das nichts

Schreib mal wie dein Display angeschlossen ist.

Sascha

von Maniac (Gast)


Lesenswert?

Hallo Sascha und danke für deine Antwort

die Datenleitungen (DB0...DB7) und auch die Steuerleitungen (Enable, 
R/W, usw..) sind jeweils auf PORTC und PORTD verteilt.

Es muss doch eine Möglichkeit geben beliebige Pins zu einem Port 
zusammen zu fassen, quasi eine Art virtuellen Port zu erstellen, auf den 
man dann entsprechend zugreifen kann.  Sonst muss ich ja die komplette 
Software umschreiben.

von guenni (Gast)


Lesenswert?

Maniac schrieb:
> Hallo Sascha und danke für deine Antwort
>
> die Datenleitungen (DB0...DB7) und auch die Steuerleitungen (Enable,
> R/W, usw..) sind jeweils auf PORTC und PORTD verteilt.
>
> Es muss doch eine Möglichkeit geben beliebige Pins zu einem Port
> zusammen zu fassen, quasi eine Art virtuellen Port zu erstellen, auf den
> man dann entsprechend zugreifen kann.

NEIN.

> Sonst muss ich ja die komplette Software umschreiben.

JA.

von Maniac (Gast)


Lesenswert?

Könnte es funktionieren wenn ich die portpins.h entsprechend abändere ?

von Oliver (Gast)


Lesenswert?

Who the fxxx is portpins.h ???

Aber die Antwort lautet NEIN. Die lib will nunmal ganze bytes über den 
Port ausgeben, wenn du die Pins anders verteilst, musst du die Ausgabe 
dieser Bytes entsprechend umschreiben.

Oliver

von Sascha W. (sascha-w)


Lesenswert?

Maniac schrieb:
> Könnte es funktionieren wenn ich die portpins.h entsprechend abändere ?
NEIN,
während die Steuerleitungen sich denke ich noch relativ einfach auf 
verschiedene Ports verteilen lassen (mit Software-Änderung), erfolgt der 
Zugriff auf den Datenbus immer Portweise und in entsprechender 
Reihenfolge 0..7. Mit entsprechender Softwareanpassung kann man 
natürlich alles richten - aber manchmal sollte man vielleicht lieber 
zwei Brücken auf die Leiterplatte machen.

Sascha

von spess53 (Gast)


Lesenswert?

Hi

>Mit entsprechender Softwareanpassung kann man
>natürlich alles richten - aber manchmal sollte man vielleicht lieber
>zwei Brücken auf die Leiterplatte machen.

Zumal dieses Bitgewurstel Zeit kostet. Wenn man dann dem Display beim 
Bildaufbau zusehen kann ist das nicht sehr prickelnd.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

> Sonst muss ich ja die komplette Software umschreiben.

Wenn du die 'komplette' Software umschreiben musst, dann taugt die 
sowieso nichts.

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.