Forum: Mikrocontroller und Digitale Elektronik Anfänger Frage - Programmieren C/C++


von Hoast (Gast)


Lesenswert?

Hi ich habe hier mal einen Auszug aus einem Programm, das ich gefunden 
habe.
Ich habe jetzt noch zum Testen zusätzlich PB0 aus PORTB als Eingang 
hinzugefügt und den Pull-Up Widerstand aktiviert. Stimmt das so? Habs 
wie bei den anderen auch gemacht. So nun möchte ich diesen in das 
uint8_t buttons aufnehmen. Wie mache ich das? Weil wenn ichs einfach so 
hinzufüge meckert Win AVR immer, das das nicht gültig wäre oder so.
Wäre super wen mir jemand helfen könnte!
Hier noch der entsprechende Code Ausschnitt:

/*
 * Initialize the hardware to read the button states.
 *
 * Set the ports to input with pullups enabled.
 */
void buttons_init(void) {
  DDRD &= ~(_BV(PD0) | _BV(PD1) | _BV(PD2) | _BV(PD3) | _BV(PD4) | 
_BV(PD5) | _BV(PD6));
  PORTD = _BV(PD0) | _BV(PD1) | _BV(PD2) | _BV(PD3) | _BV(PD4) | 
_BV(PD5) | _BV(PD6);
  DDRB &= ~(_BV(PB0));
  PORTB = _BV(PB0);
}

/*
 * Callback function from the rc5 module. This reads in the current 
button
 * state and returns the corresponding rc5 command code.
 */
uint8_t rc5_get_cmd(rc5_cmd_t *cmd) {
  uint8_t buttons = (~PIND) & (_BV(PD0) | _BV(PD1) | _BV(PD3) | _BV(PD4) 
| _BV(PD5) | _BV(PD6));

  *cmd = 0xff;

BTW wie poste ich denn so Codeausschnitte richtig?

von Floh (Gast)


Lesenswert?

Hoast schrieb:
> BTW wie poste ich denn so Codeausschnitte richtig?

Als Dateianhang.

Hoast schrieb:
> Ich habe jetzt noch zum Testen zusätzlich PB0 aus PORTB als Eingang
> hinzugefügt und den Pull-Up Widerstand aktiviert. Stimmt das so? Habs
> wie bei den anderen auch gemacht. So nun möchte ich diesen in das
> uint8_t buttons aufnehmen. Wie mache ich das?

nun musst du den PIN einlesen, z.B. mit

buttons = (PINB & (1<<PB0));
  //buttons gleich 1 für Pin high, und 0 für pin low

Ansosnten schau mal ins AVR-gcc-Tutorial.

von Hoast (Gast)


Lesenswert?

Mhm aber wie integriere ich das mit Komma, Strichpunkt, and oder wie 
geht das, dass er kapiert, dass er den Port auch  mit einbeziehen soll, 
definiert ist er ja oben schon.

von eklige Tunke (Gast)


Lesenswert?

Floh schrieb:
> Hoast schrieb:
>> BTW wie poste ich denn so Codeausschnitte richtig?
>
> Als Dateianhang.
Bei kleineren Schnipsel geht es auch inline...
1
[c]C-Code[/c]
Steht auch unter Formatierung und/oder (mehr Informationen...).

von Oliver (Gast)


Lesenswert?

Hoast schrieb:
> Ich habe jetzt noch zum Testen zusätzlich PB0 aus PORTB als Eingang
> hinzugefügt und den Pull-Up Widerstand aktiviert. Stimmt das so? Habs
> wie bei den anderen auch gemacht.

Nein. Das ist weder richtig noch wie bei den anderen.

Hoast schrieb:
> Mhm aber wie integriere ich das mit Komma, Strichpunkt, and oder wie
> geht das, dass er kapiert, dass er den Port auch  mit einbeziehen soll,
> definiert ist er ja oben schon.

Nun, das ist ein längerer Prozess.

Schritt 1: Die Grundlagen von C lernen
Schritt 2: AVR Controller programmieren lernen

Das müsste in 4-6 Monaten hinzubekommen sein,wenn du dich dranhältst.

Jetzt wird es schwierig:

Schritt 3: Das "gefundene" Programm verstehen
Schritt 4: Herausfinden, was man tun muß, um eine weitere Taste 
hinzuzufügen
Schritt 5: Herausfinden, wie man in das Programm die Funktionen einbaut, 
die die zusätzliche Taste auslösen soll.

und schließlich

Schritt 7: Das alles Programmieren.

Viel Vergnügen.

Oliver

von Hoast (Gast)


Lesenswert?

Oliver schrieb:
> Nein. Das ist weder richtig noch wie bei den anderen.

Sehr aufschlussrecih warum ist es nicht richtig so? Wenn ich bei
1
DDRD &= ~(_BV(PD0) | _BV(PD1) | _BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5) | _BV(PD6));
2
  PORTD = _BV(PD0) | _BV(PD1) | _BV(PD2) | _BV(PD3) | _BV(PD4) | _BV(PD5) | _BV(PD6);
 was hinzufüge gehts ja auch!
Wieso geht das mit dem anderen dann nicht.
Wenn ich mal genug Zeit habe werde ich liebend gerne das Programmieren 
lernen leider ist das im Moment nicht so. Ich will ja einfach nur noch 
ein paar Taster dran haben erstmal nichts weiter. Klar wäre es schön, 
wenn ich programmieren könnte und das alles verstehe und endlich mal 
wirklich mitreden kann aber das geht halt im mom nicht - leider

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
Noch kein Account? Hier anmelden.