www.mikrocontroller.net

Forum: Compiler & IDEs Pin setzen / rücksetzen


Autor: Benno Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein letztes Mal Hilfe für heute ;)

Wenn ich alle Pins eines Ports (z.B. PortC) für Output nutzen will 
stelle ich diesen so ein:

outp(0xff,DDRC);

und die einzelnen Pins kann ich folgendermaßen setzen:

led = 4; //z.B. 1 für die 1. LED oder 4 für die 3. LED
outp(~led, PORTC);

Korrekt?!

Wofür kann ich aber dann die folgenden Funktionen nutzen?

sbi(PORTC, PINC3); //setzt Pin eines Ports??
cbi(PORTC, PINC3); //cleart den Pin eines Ports???

Und wie muss ich einen Port konfigurieren für folgende Befehle?

bit_is_set(PORTC, PINC2);
bit_is_clear(PORTC, PINC2);

Und letzte Frage: Wenn ich ein paar Pins eines Ports für Output nutze 
und ein paar Pins als Input, wie muss ich diesen Konfigurieren?

Z.B. verwende ich PD4 für GSM Empfang, PD5 für GSM Senden, PD6 GSM flow 
Empfang, PD7 GSM flow Senden. (Ich will AT Befehle ans Handy-DatenModem 
senden und die Antworten empfangen).

Ich hoffe das waren nicht zuviele Fragen auf einmal und auch 
verständlich ;)

Autor: Axel Barkow (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ich alle Pins eines Ports (z.B. PortC) für Output nutzen will stelle ich 
diesen so ein:

>outp(0xff,DDRC);

Korrekt

>und die einzelnen Pins kann ich folgendermaßen setzen:

>led = 4; //z.B. 1 für die 1. LED oder 4 für die 3. LED
>outp(~led, PORTC);

mit diesem Befehl würdest du alle Pins an Port C auf high setzen, bis 
auf Pin 2, da ~led = ~4 = ~00000100 = 11111011
Die dritte LED würde also leuchten, aber wenn z.B. die erste LED vorher 
an gewesen wäre, dann würde sie jetzt erlöschen.

>Wofür kann ich aber dann die folgenden Funktionen nutzen?

>sbi(PORTC, PINC3); //setzt Pin eines Ports??
>cbi(PORTC, PINC3); //cleart den Pin eines Ports???

Mit diesen Befehlen beeinflusst du nur ein Pin eines Ports, die anderen 
bleiben so wie sie waren. Also "cbi(PORTC, PINC2);" um die dritte LED 
einzuschalten

>Und wie muss ich einen Port konfigurieren für folgende Befehle?

>bit_is_set(PORTC, PINC2);
>bit_is_clear(PORTC, PINC2);

Die Konfiguration ist egal, du erfährst halt, ob der Pegel am 
entsprechenden Pin High ist oder nicht.

>Und letzte Frage: Wenn ich ein paar Pins eines Ports für Output nutze und ein 
paar Pins als Input, wie muss ich diesen Konfigurieren?

>Z.B. verwende ich PD4 für GSM Empfang, PD5 für GSM Senden, PD6 GSM flow Empfang, 
PD7 GSM flow Senden. (Ich will AT Befehle ans Handy-DatenModem senden und die 
Antworten empfangen).

Für einen Ausgang muß das entsprechende Bit im DDRx Register gesetzt 
sein, ist es gelöscht, dann ist der Pin ein Eingang.

Also für dein Beispiel 1010xxxx wobei x für die Konfiguration steht, die 
du an den anderen vier Pins haben möchtest. Angenommen PD0-PD3 wären 
Eingänge, dann konfigurierst du PortD mit
outp(0xa0, DDRD); //10100000 = 0xa0

Ich hoffe, das war einigermaßen verständlich.

Gruß,

Axel

Autor: Benno Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Supi, vielen Dank für die Erklärung!

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.