Signal über Ports leiten

Gast #77407
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
Gast #77408
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
Gast #77409
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
Gast #77410
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
Gast #77412
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
Gast #77416
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
Gast #77417
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
Gast #77418
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.