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
- biblioteki.7z (7 KB) - ściągnięć: 134