Forum: Mikrocontroller und Digitale Elektronik Ports sprechen über?


von Martin Krocker (Gast)


Lesenswert?

Hallo @all,

ich habe ein Problem mit einem ATMEGA 128.
Und zwar habe ich ein Display und ein Relais (über Transistor)
angeschlossen.
Das LCD hängt an: Daten: C0-C7, RS-D7,RW-G0,E-G1
Das Relais hängt an-G4

Das Problem ist, wenn ich das Relais anschalte mit
PORTG = (1<<PG4);     // Thermoelemente Relais an

und danach das LCD beschreibe bzw. ein Delay aufrufe, das mit
den PORTS gar nix zu tun hat, geht PG4 wieder auf 0. Irgendwie koppelt
da
was über oder den PORT hats zerkracht.
Ich hab keine Ahnung woran das liegt...Die PORTS habe ich definitiv
nicht verwechselt und Ausgänge sind auch richtig definiert-habs
durchsimuliert. Ich bentuzte AVRStudio 4.12 mit GCC , also en
C-Projekt. Danke schonmal für eure Hilfe.

von crazy horse (Gast)


Lesenswert?

ist doch auch korrekt.
PORTG = (1<<PG4) setzt PG4 auf 1, alle anderen Ports auf 0.
Ist zwar nicht das, was du willst....

von Jadeclaw D. (jadeclaw)


Lesenswert?

Hmm, das kommt darauf an, was der Compiler aus dem LCD-Aufruf macht.
Ich sage mal, entweder Relais weg von PortG oder LCD auf 4-Bit-Betrieb
umstellen und dann PortC nur für LCD und PortG für die Schaltperipherie
nehmen.
Den LCD über 3 Ports zu verstreuen, ist nich unbedingt sinnvoll.

Gruss
Jadeclaw.

von Martin Krocker (Gast)


Lesenswert?

crazy horse:
Ich dachte mit PORTG = (1<<PG4) wird nur G4 gesetzt und alles andere
gelassen wie es ist? Der sbi und cbi bBefehl funktioniert irgendwie
nicht mit der GCC Version. Hast du ne bessere Idee?

Jadeclaw:

Die Aufteilung habe ich wegen dem dem Layout gemacht, damit ich besser
Routen kann... eigentlich dürfte es ja ...egal sein wo was hängt.

von Martin Krocker (Gast)


Lesenswert?

Z.B. hab ich mit einer älteren GCC Verion einzelne I/O PINS so gesetzt:


  sbi (PORTC,WR);
  cbi (PORTC,WR);

Das funktioniert wiegesagt mit der GCC Version die ich jetzt hab nicht-
das versteh ich auch nicht

von Hälge (Gast)


Lesenswert?

Ganz richtig, eine ältere Version und der wurde mit Sicherheit schon
darauf hingewiesen, dass einige Funktionen, darunter auch sbi und cbi
entfernt werden (könnten).

nutze
PORTG |= (1<<PG4);  zum Setzen
und
PORTG &= ~(1<<PG4);  zum Löschen

von Martin Krocker (Gast)


Lesenswert?

OK. vielen Dank. was das C-programmieren angeht, bin ich
noch Anfänger :-)

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.