//we will have to change if we abstract void write_register(lcd_t *lcd, uint8_t byte, int rs, int rw) { gpio_set(lcd->rs, rs); gpio_set(lcd->rw, rw); //if (lcd->type == COM8BITS) { gpio_set(lcd->cs, 0); ssp_write(lcd->ssp, byte); gpio_set(lcd->cs, 1); } /* else { gpio_set(lcd->cs, 0); ssp_write(lcd->ssp, byte); gpio_set(lcd->cs, 1); }*/ gpio_set(lcd->e, 0); delay(lcd, 1); gpio_set(lcd->e, 1); delay(lcd, 1); //min: 300ns gpio_set(lcd->e, 0); delay(lcd, 80); //50us for most of operations }
void __stack_smash_handler(char func[], int damaged) { static const char message[] = ": stack smashing attack in function "; block_signals(); ssp_write(STDERR_FILENO, __uclibc_progname, message, func); /* The loop is added only to keep gcc happy. */ while(1) terminate(); }
void __stack_chk_fail(void) { static const char msg1[] = "stack smashing detected: "; static const char msg3[] = " terminated"; block_signals(); ssp_write(STDERR_FILENO, msg1, __uclibc_progname, msg3); /* The loop is added only to keep gcc happy. */ while(1) terminate(); }
int main(void) { int i; uint8_t ssp_val; uint8_t serial_clock_rate; uint8_t clock_prescale_rate; gpio_setup(); /* Freq About 1.12MHz => Freq = PCLK / (CPSDVSR * [SCR+1]) with PCLK=PLL1=288MHz */ clock_prescale_rate = 2; serial_clock_rate = 128; ssp_init(SSP1_NUM, SSP_DATA_8BITS, SSP_FRAME_SPI, SSP_CPOL_0_CPHA_0, serial_clock_rate, clock_prescale_rate, SSP_MODE_NORMAL, SSP_MASTER, SSP_SLAVE_OUT_ENABLE); ssp_val = 0x0; while (1) { ssp_write(SSP1_NUM, (uint16_t)ssp_val); gpio_set(GPIO2, GPIOPIN1); /* LED on */ for (i = 0; i < 1000; i++) /* Wait a bit. */ __asm__("nop"); gpio_clear(GPIO2, GPIOPIN1); /* LED off */ ssp_val++; } return 0; }
int spi_master_write(spi_t *obj, int value) { ssp_write(obj, value); return ssp_read(obj); }
//FIX THAT void delay(lcd_t *lcd, uint32_t t) { uint32_t i; for (i = 0 ; i < t ; i++) ssp_write(lcd->ssp, 0xff); }
int spi_master_write(spi_t *obj, int value) { ssp_write(obj, value); while (obj->spi->SR & SSP_SR_BSY_Msk); /* Wait for send to finish */ return (ssp_read(obj)); }