Witam,

Tworzę projekt wariometru. Podłączyłem do swojej Atmegi wyświetlacz http://www.kamami.pl/index.php?ukey=pro ... ctID=42730 . Niestety nie mam żadnego wolnego portu a jedynie pojedyncze piny. Postanowiłem więc zmienić bibliotekę tak by można było używać te pojedyncze piny. Niestety natknąłem się na problem w zmianie niektórych funkcji.
Tak zadeklarowane były piny danych:

 #define LCD_DATA_IN                     PIND
#define LCD_DATA_OUT            PORTD
#define LCD_DATA_DIR                    DDRD

Tak zadeklarowałem swoje piny:

/ Porty Danych -----------------------------------------------------
// Piny danych D0 -PD2, D1-PB3, D2-PD4, D3-PD5, D4-PD6, D5-D7, D6-PB0, D7-PB1
// ------------------------------------------------------------------
 
//D0
#define SET_OUT_LCD_D0  DDRD  |=  _BV(PD2)
#define SET_IN_LCD_D0   DDRD  &= ~_BV(PD2)
#define SET_LCD_D0      PORTD |=  _BV(PD2)
#define CLR_LCD_D0      PORTD &= ~_BV(PD2)
#define IS_SET_LCD_D0   PIND  &   _BV(PD2)
 
//D1
#define SET_OUT_LCD_D1  DDRD  |=  _BV(PD3)
#define SET_IN_LCD_D1   DDRD  &= ~_BV(PD3)
#define SET_LCD_D1      PORTD |=  _BV(PD3)
#define CLR_LCD_D1      PORTD &= ~_BV(PD3)
#define IS_SET_LCD_D1   PIND  &   _BV(PD3)
 
//D2
#define SET_OUT_LCD_D2  DDRD  |=  _BV(PD4)
#define SET_IN_LCD_D2   DDRD  &= ~_BV(PD4)
#define SET_LCD_D2      PORTD |=  _BV(PD4)
#define CLR_LCD_D2      PORTD &= ~_BV(PD4)
#define IS_SET_LCD_D2   PIND  &   _BV(PD4)
 
//D3
#define SET_OUT_LCD_D3  DDRD  |=  _BV(PD5)
#define SET_IN_LCD_D3   DDRD  &= ~_BV(PD5)
#define SET_LCD_D3      PORTD |=  _BV(PD5)
#define CLR_LCD_D3      PORTD &= ~_BV(PD5)
#define IS_SET_LCD_D3   PIND  &   _BV(PD5)
 
//D4
#define SET_OUT_LCD_D4  DDRD  |=  _BV(PD6)
#define SET_IN_LCD_D4   DDRD  &= ~_BV(PD6)
#define SET_LCD_D4      PORTD |=  _BV(PD6)
#define CLR_LCD_D4      PORTD &= ~_BV(PD6)
#define IS_SET_LCD_D4   PIND  &   _BV(PD6)
 
//D5
#define SET_OUT_LCD_D5  DDRD  |=  _BV(PD7)
#define SET_IN_LCD_D5   DDRD  &= ~_BV(PD7)
#define SET_LCD_D5      PORTD |=  _BV(PD7)
#define CLR_LCD_D5      PORTD &= ~_BV(PD7)
#define IS_SET_LCD_D5   PIND  &   _BV(PD7)
 
//D6
#define SET_OUT_LCD_D6  DDRB  |=  _BV(PB0)
#define SET_IN_LCD_D6   DDRB  &= ~_BV(PB0)
#define SET_LCD_D6      PORTB |=  _BV(PB0)
#define CLR_LCD_D6      PORTB &= ~_BV(PB0)
#define IS_SET_LCD_D6   PINB  &   _BV(PB0)
 
//D7
#define SET_OUT_LCD_D7  DDRB  |=  _BV(PB1)
#define SET_IN_LCD_D7   DDRB  &= ~_BV(PB1)
#define SET_LCD_D7      PORTB |=  _BV(PB1)
#define CLR_LCD_D7      PORTB &= ~_BV(PB1)
#define IS_SET_LCD_D7   PINB  &   _BV(PB1)

Teraz problem mam z takimi linijkami:

 data = LCD_DATA_IN;

Ja mam 8 różnych LCD_DATA_IN, więc jak to poukładać po kolei?

if(glcd_Inverted)
                data = ~data;
        return data; 
 LCD_DATA_OUT = cmd;

Da się to jakoś zmienić żeby chodziło pod moją deklaracją pinów?
W załączniku zamieszczam oryginalne biblioteki i te zmienione przeze mnie.

Z góry dzięki za pomoc.
Piotrek