View Single Post
Old 10-24-2012, 12:36 AM   #2 (permalink)
slewfoot
EcoModding Lurker
 
Join Date: Oct 2012
Location: Michigan
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
Doh! Found the pin problem with the previous code chunk, but still not working... ugh!



void LCD::tickleEnable() {
// send a pulse to enable PB4
PORTB |= (1 << 4);
delayMicroseconds2(1); // pause 1 ms according to datasheet
PORTB &= ~(1 << 4);
delayMicroseconds2(1); // pause 1 ms according to datasheet
}

void LCD::cmdWriteSet() { //set enable (PB4) low and DI(PB2) low
PORTB &= ~(1 << 4);
delayMicroseconds2(1); // pause 1 ms according to datasheet
PORTB &= ~(1 << 2);
}

byte LCD:ushNibble(byte value) { //db7=PC2, db6=PC1, db5 = PC0, db4 = PB5
value & 128 ? PORTB |= (1 << 5) : PORTB &= ~(1 << 5);
value <<= 1;
value & 128 ? PORTC |= (1 << 0) : PORTC &= ~(1 << 0);
value <<= 1;
value & 128 ? PORTC |= (1 << 1) : PORTC &= ~(1 << 1);
value <<= 1;
value & 128 ? PORTC |= (1 << 2) : PORTC &= ~(1 << 2);
value <<= 1;
return value;
}

void LCD::LcdCommandWrite(byte value) {
value = pushNibble(value);
cmdWriteSet();
tickleEnable();
value = pushNibble(value);
cmdWriteSet();
tickleEnable();
delay2(5);
}

void LCD::LcdDataWrite(byte value) {
PORTB |= (1 << 4); //di on pb4
value = pushNibble(value);
tickleEnable();
value = pushNibble(value);
tickleEnable();
delay2(5);
}
  Reply With Quote