mikrocontroller.net

Forum: Compiler & IDEs Signal über Ports leiten


Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Wie kann ich elegant das Signal das z.B auf "Port B Pin 2" reinkommt
am "Port C Pin 3" wieder abgreifen.

Konfiguration als Ausgang/Eingang ist klar.

Wie aber sieht ein kurzer Code aus, der den Ein- mit dem Ausgangs-Pin
"verbindet" ?

Programmiersprache C (AVR-GCC)

Gruss
Toni

Autor: Shazter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

leider kann ich dir mit c nicht weiterhelfen, aber ich kann dir beim
Prinzip helfen.

Du legst die Serialen Daten die am Eingang ankommen in ein Array ab.
Danach brauchste nur noch die einzelnen Arrays an den Output ausgeben.


Mfg

Dirk

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es gibt mehrer Möglichkeiten.

1. Wenn der ganze Port gespiegelt werden soll:
PORTC = PINB;

2. Wenn du nur einen einzelnen PIN spiegeln willst:
PORTC &= (PINB&(1<<3));
hier von PINB.3 auf PORTC.3

3. Wenn du einen einzelnen PIN "quer" spiegeln willst:
if (PINB&(1<<3))
  PORTC |= (1<<4);
else
  PORTC &= ~(1<<4);
//hier von PINB.3 auf PORTC.4

Ich kann jetzt leider nicht garantieren, dass das ganze Funktioniert,
alles nur Theorie. Wenn nicht, dann melde dicht, und ich probiers mal
aus.

Gruß, Florian

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Florian

Vielen Dank für die Beispielcodes.
Diese Bit-Operationen verstehe ich.

Gibt es aber keine Möglichkeit mit der Syntax "PINB.3 oder  PORTC.5"
direkt auf die Bit's zuzugreifen?

Existieren in AVR-GCC von Hause aus nicht solche Makros, wie das andere
Compiler anbieten ?

Gruss

Toni

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist c standard und ganz normale bit operationen.
ich empfehle dir ein c-buch.

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ja Minos, wenn das so einfach wäre !

C-Buch resp. C-Kurs ok , da hast Du recht.

Aber der Mikrokontroller hat dann aber schon noch so seine Eigenheiten,
wie eben das Ansprechen der Ports, der Verarbeitung der Interrupts, das
konfigurieren der Timer, ....
All das finde ich in keinem C-Buch !!

Ich sags noch einmal: Für all das wäre ein gut leserliches (auch für
einen Anfänger) Handbuch gefragt.

Sorry, Cracks

Toni

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich  bin mir sicher das du mit einem C-Handbuch
und dem Datenblatt vom Controller sehr weit kommst.

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK Minos, ich verspreche Dir ich probiers!

Kannst Du mir aber trotzdem bestätigen, dass Florian's Syntax zum
Ansprechen der Port-Bits hinhaut?

Gruss

Toni

Autor: Minos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versprechen kann ich gar nix..:).

sieht aber gut aus der code.

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Minos, es hat wirklich geklappt;es funktioniert !!!

Trotzdem, kannst Du mir sicher noch was mehr verraten:
Wo finde ich die Abmachung, wann ich mit PORTx.. oder dann eben mit
PINx.. codieren muss?
In meinem neuen C-Buch hab ich das nicht gefunden ;).


Gruss

Toni

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist auch AVR-Spezifisch.

Wenn du irgenwas ausgeben willst, so musst du PORT benutzen. Wenn du
was einlesen willst, dann musst du PIN benutzen.

Das ist ein häufiger Anfängerfehler, dass zum lesen auf PORT benutzt
wird. Aber dann wird nur das Register und nicht der tatzäliche Zustand
gelesen.

Gruß, Florian

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lieber Florian

Vielen Dank für die Antwort, ich wills mir hinter die Ohren schreiben.

Hast Du Kenntnis, wo dieser Sachverhalt festgehalten ist.

Muss ich das nicht irgendwo im "Compiler-Handbuch" finden können?
Ich hab schon im "Reference Manual" gesucht, aber nichts gefunden!

Gruss

Toni

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das steht im Datenblatt und in Bücher, die Speziell für den AVR
geschrieben wurden. Aber auch in verschiedenen Tutorials für den AVR.

Gruß, Florian

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Florian


Hast Du mir einen Link zu so was ?
Atmel Datenblätter hab ich, haben aber nicht C-spezifisches drinnen!

Gruss

Toni

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.