Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage - AVR-Pinbelegung


von n00b (Gast)


Lesenswert?

Hallo,

bin grad mehr oder weniger frisch in der Mikrocontrollerprogrammierung 
eingestiegen und hab da mal eine Verständnisfrage.

Ich wollte ein LCD-Display an meinen ATmega128 anschließen und mal 
kucken was passiert. Und bin dabei über folgende Codezeilen gestoßen.
1
/*
2
 * Copyright:      Fabian Maximilian Thiele  mailto:me@apetech.de
3
 * Author:         Fabian Maximilian Thiele
4
 * Remarks:        this Copyright must be included
5
 * known Problems: none
6
 * Version:        1.1
7
 * Description:    Graphic Library for KS0108- (and compatible) based LCDs
8
 * 
9
 */
10
11
#include <inttypes.h>
12
#include <avr/pgmspace.h>
13
14
#ifndef  KS0108_H
15
#define KS0108_H
16
17
// Ports
18
#define LCD_CMD_PORT    PORTA    // Command Output Register
19
#define LCD_CMD_DIR     DDRA    // Data Direction Register for Command Port
20
21
#define LCD_DATA_IN     PINC    // Data Input Register
22
#define LCD_DATA_OUT    PORTC    // Data Output Register
23
#define LCD_DATA_DIR    DDRC    // Data Direction Register for Data Port
24
// Command Port Bits
25
26
#define D_I          0x00    // D/I Bit Number
27
#define R_W          0x01    // R/W Bit Number
28
#define EN           0x02    // EN Bit Number
29
#define CSEL1        0x03    // CS1 Bit Number
30
#define CSEL2        0x04    // CS2 Bit Number

Speziell interessieren mich die letzten fünf Zeilen.
Ich weiß, dass die Pin D/I, R/W, EN, CSEL1 und CSEL2 an die Pins PC0 bis 
PC4 gehören (oder etwa nicht)?
Welche Syntax steckt denn da dahinter?
Ich meine aus den 5 Zeilen lese ich als Anfänger nicht das die zu PortC 
gehören. Hab auch schon das AVR-GCC-Tutorial bemüht aber nix so richtig 
gefunden (es sei denn es hat was mit "Vordefinierte Bitnummern für 
I/O-Register" zu tun).

Würde mich über eine Antwort freuen =)

von Gerry L. (Gast)


Lesenswert?

Das sind Variablen/Definitionen mit einem vernünftigem Namen.

So siehst du im Code gleich was du gerade setzt.
aus
     DDRC &= ~( 1 << DDC0 );
wird
     DDRC &= ~( 1 << CSEL2 );

Gerry

von n00b (Gast)


Lesenswert?

Achso ... ist ja der Hammer =)

Nur um jeden Denkfehler meinerseits auszuschließen ...
Mit dem Code von oben ...
aus
1
DDRC &= ~( 1 << DDC0 );

wird
1
LCD_DATA_DIR &= ~( 1 << D_I);

Oder nicht?

von Hc Z. (mizch)


Lesenswert?

n00b schrieb:
> Ich meine aus den 5 Zeilen lese ich als Anfänger nicht das die zu PortC
> gehören.

Sie gehören auch nicht zu Port C:

> #define LCD_CMD_PORT    PORTA    // Command Output Register
...
> // Command Port Bits
> #define D_I          0x00    // D/I Bit Number

Das Command Register ist laut Kommentaren und den dazugehörigen 
Definitionen Port A.

von n00b (Gast)


Lesenswert?

Nachvollziehbar ... habt Dank.

Grüße

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.