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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren