Basic driver working

Committer:
f3d
Date:
Sat Feb 20 16:34:49 2021 +0000
Revision:
81:7087ba9d18bb
Parent:
80:ff42f77928ad
Display driver working with touch input

Who changed what in which revision?

UserRevisionLine numberNew contents of line
f3d 80:ff42f77928ad 1 /* ILI9341 interface for the NRF52832
hyungo 77:9140e10d79ee 2 */
hyungo 77:9140e10d79ee 3
Jonathan Austin 0:2757d7abb7d9 4 #include "mbed.h"
f3d 80:ff42f77928ad 5 #include "display.h"
hyungo 77:9140e10d79ee 6 /* Serial */
hyungo 77:9140e10d79ee 7 #define BAUDRATE 9600
f3d 79:a022f7789a49 8 Serial g_Serial_pc(P0_18, P0_14, BAUDRATE);
hyungo 77:9140e10d79ee 9
hyungo 77:9140e10d79ee 10 /* DigitalOut */
hyungo 77:9140e10d79ee 11 #define LED_ON 0
hyungo 77:9140e10d79ee 12 #define LED_OFF 1
f3d 80:ff42f77928ad 13
f3d 81:7087ba9d18bb 14 DigitalOut DataLED(A5, LED_OFF);
f3d 81:7087ba9d18bb 15
f3d 80:ff42f77928ad 16 Display display;
f3d 80:ff42f77928ad 17
f3d 80:ff42f77928ad 18 uint32_t prbs()
f3d 80:ff42f77928ad 19 {
f3d 80:ff42f77928ad 20 // This is an unverified 31 bit PRBS generator
f3d 80:ff42f77928ad 21 // It should be maximum length but this has not been verified
f3d 80:ff42f77928ad 22 static uint32_t shift_register=0xaa551199;
f3d 80:ff42f77928ad 23 unsigned long new_bit=0;
f3d 80:ff42f77928ad 24 static int busy=0; // need to prevent re-entrancy here
f3d 80:ff42f77928ad 25 if (!busy)
f3d 80:ff42f77928ad 26 {
f3d 80:ff42f77928ad 27 busy=1;
f3d 80:ff42f77928ad 28 new_bit= ((shift_register & (1<<27))>>27) ^ ((shift_register & (1<<30))>>30);
f3d 80:ff42f77928ad 29 new_bit= ~new_bit;
f3d 80:ff42f77928ad 30 new_bit = new_bit & 1;
f3d 80:ff42f77928ad 31 shift_register=shift_register << 1;
f3d 80:ff42f77928ad 32 shift_register=shift_register | (new_bit);
f3d 80:ff42f77928ad 33 busy=0;
f3d 80:ff42f77928ad 34 }
f3d 80:ff42f77928ad 35 return shift_register & 0x7ffffff; // return 31 LSB's
f3d 80:ff42f77928ad 36 }
f3d 80:ff42f77928ad 37 uint32_t random(uint32_t lower,uint32_t upper)
f3d 80:ff42f77928ad 38 {
f3d 80:ff42f77928ad 39 return (prbs()%(upper-lower))+lower;
f3d 80:ff42f77928ad 40 }
hyungo 77:9140e10d79ee 41 int main(void) {
f3d 80:ff42f77928ad 42
f3d 81:7087ba9d18bb 43 int count;
f3d 81:7087ba9d18bb 44
f3d 81:7087ba9d18bb 45
f3d 80:ff42f77928ad 46 display.begin();
f3d 81:7087ba9d18bb 47 while(1)
f3d 81:7087ba9d18bb 48 {
f3d 81:7087ba9d18bb 49 DataLED = !DataLED;
f3d 81:7087ba9d18bb 50 if (display.penDown())
f3d 80:ff42f77928ad 51 {
f3d 81:7087ba9d18bb 52 display.print(display.readXTouch(),10,10,display.RGBToWord(0xff,0xff,0),display.RGBToWord(0,0,0));
f3d 81:7087ba9d18bb 53 display.print(display.readYTouch(),80,10,display.RGBToWord(0xff,0xff,0),display.RGBToWord(0,0,0));
f3d 81:7087ba9d18bb 54 }
f3d 81:7087ba9d18bb 55 display.drawRectangle(random(0,240),random(0,320),random(0,240),random(0,320),random(0,0xffff));
f3d 81:7087ba9d18bb 56 //display.fillRectangle(random(0,240),random(0,320),random(0,240),random(0,320),random(0,0xffff));
f3d 81:7087ba9d18bb 57 display.drawCircle(random(0,240),random(0,240),random(0,320),random(0,0xffff));
f3d 81:7087ba9d18bb 58 //display.fillCircle(random(0,240),random(0,320),random(0,120),random(0,0xffff));
f3d 81:7087ba9d18bb 59 count++;
f3d 81:7087ba9d18bb 60 if (count >= 10)
f3d 80:ff42f77928ad 61 {
f3d 81:7087ba9d18bb 62 display.fillRectangle(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,0);
f3d 81:7087ba9d18bb 63 count = 0;
f3d 80:ff42f77928ad 64 }
f3d 80:ff42f77928ad 65
Jonathan Austin 0:2757d7abb7d9 66 }
hyungo 77:9140e10d79ee 67
hyungo 77:9140e10d79ee 68 return 0;
Jonathan Austin 0:2757d7abb7d9 69 }