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
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
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
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
das ist c standard und ganz normale bit operationen. ich empfehle dir ein c-buch.
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
also ich bin mir sicher das du mit einem C-Handbuch und dem Datenblatt vom Controller sehr weit kommst.
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
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
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
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
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
Danke Florian Hast Du mir einen Link zu so was ? Atmel Datenblätter hab ich, haben aber nicht C-spezifisches drinnen! Gruss Toni
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.