www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ports sprechen über?


Autor: Martin Krocker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Krocker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Krocker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hälge (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Krocker (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.