Browse Source

as good as i can get it

minor edits to force new Travis test (last one timed out)

Update u8g_com_HAL_DUE_st7920_sw_spi.cpp

initial power up display garbage gone
Bob-the-Kuhn 7 years ago
parent
commit
4626d04067

+ 11
- 9
Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_st7920_sw_spi.cpp View File

55
 
55
 
56
 */
56
 */
57
 
57
 
58
-#ifdef __SAM3X8E__
58
+#ifdef ARDUINO_ARCH_SAM
59
 
59
 
60
 #include <U8glib.h>
60
 #include <U8glib.h>
61
 #include <Arduino.h>
61
 #include <Arduino.h>
106
       MOSI_pPio->PIO_SODR = MOSI_dwMask;
106
       MOSI_pPio->PIO_SODR = MOSI_dwMask;
107
     else
107
     else
108
       MOSI_pPio->PIO_CODR = MOSI_dwMask;
108
       MOSI_pPio->PIO_CODR = MOSI_dwMask;
109
-    val = val << 1;
110
-    __delay_4cycles(2);
109
+    __delay_4cycles(1);
111
     SCK_pPio->PIO_SODR = SCK_dwMask;
110
     SCK_pPio->PIO_SODR = SCK_dwMask;
112
-    __delay_4cycles(22);
111
+    __delay_4cycles(19); // 16 dead, 17 garbage, 18/0 900kHz, 19/1 825k, 20/1 800k, 21/2 725KHz
112
+    val <<= 1;
113
     SCK_pPio->PIO_CODR = SCK_dwMask;
113
     SCK_pPio->PIO_CODR = SCK_dwMask;
114
   }
114
   }
115
 }
115
 }
129
        /* data */
129
        /* data */
130
       spiSend_sw_DUE(0x0fa);
130
       spiSend_sw_DUE(0x0fa);
131
 
131
 
132
-    for( i = 0; i < 4; i++ )   // give the controller some time to process the data
133
-      u8g_10MicroDelay();      // 2 is bad, 3 is OK, 4 is safe
132
+    for (i = 0; i < 4; i++)   // give the controller some time to process the data
133
+      u8g_10MicroDelay();     // 2 is bad, 3 is OK, 4 is safe
134
   }
134
   }
135
 
135
 
136
   spiSend_sw_DUE(val & 0x0f0);
136
   spiSend_sw_DUE(val & 0x0f0);
151
       u8g_SetPILevel_DUE(u8g, U8G_PI_SCK, 0);
151
       u8g_SetPILevel_DUE(u8g, U8G_PI_SCK, 0);
152
       u8g_SetPIOutput_DUE(u8g, U8G_PI_SCK);
152
       u8g_SetPIOutput_DUE(u8g, U8G_PI_SCK);
153
       u8g_SetPILevel_DUE(u8g, U8G_PI_MOSI, 0);
153
       u8g_SetPILevel_DUE(u8g, U8G_PI_MOSI, 0);
154
-      u8g_SetPILevel_DUE(u8g, U8G_PI_MOSI, 1);
155
       u8g_SetPIOutput_DUE(u8g, U8G_PI_MOSI);
154
       u8g_SetPIOutput_DUE(u8g, U8G_PI_MOSI);
155
+      
156
+      SCK_pPio->PIO_CODR = SCK_dwMask;   //SCK low - needed at power up but not after reset
157
+      MOSI_pPio->PIO_CODR = MOSI_dwMask; //MOSI low - needed at power up but not after reset
158
+      
156
       u8g_Delay(5);
159
       u8g_Delay(5);
160
+
157
       u8g->pin_list[U8G_PI_A0_STATE] = 0;       /* inital RS state: command mode */
161
       u8g->pin_list[U8G_PI_A0_STATE] = 0;       /* inital RS state: command mode */
158
       break;
162
       break;
159
 
163
 
199
   return 1;
203
   return 1;
200
 }
204
 }
201
 
205
 
202
-#pragma GCC reset_options
203
-
204
 #endif  //ARDUINO_ARCH_SAM
206
 #endif  //ARDUINO_ARCH_SAM

+ 23
- 0
Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp View File

89
   U8G_ESC_END                /* end of sequence */
89
   U8G_ESC_END                /* end of sequence */
90
 };
90
 };
91
 
91
 
92
+void clear_graphics_DRAM(u8g_t *u8g, u8g_dev_t *dev){
93
+  u8g_SetChipSelect(u8g, dev, 1);
94
+  u8g_Delay(1);
95
+  u8g_SetAddress(u8g, dev, 0);         // cmd mode
96
+  u8g_WriteByte(u8g, dev, 0x08);       //display off, cursor+blink off
97
+  u8g_WriteByte(u8g, dev, 0x3E);       //extended mode + GDRAM active
98
+  for (uint8_t y = 0; y < (HEIGHT) / 2; y++) { //clear GDRAM
99
+    u8g_WriteByte(u8g, dev, 0x80 | y); //set y
100
+    u8g_WriteByte(u8g, dev, 0x80);     //set x = 0
101
+    u8g_SetAddress(u8g, dev, 1);                  /* data mode */
102
+    for (uint8_t i = 0; i < 2 * (WIDTH) / 8; i++) //2x width clears both segments
103
+      u8g_WriteByte(u8g, dev, 0);
104
+    u8g_SetAddress(u8g, dev, 0);           /* cmd mode */
105
+  }
106
+
107
+  u8g_WriteByte(u8g, dev, 0x0C); //display on, cursor+blink off
108
+
109
+  u8g_SetChipSelect(u8g, dev, 0);
110
+
111
+}
112
+
92
 uint8_t u8g_dev_st7920_128x64_HAL_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
113
 uint8_t u8g_dev_st7920_128x64_HAL_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
93
 {
114
 {
94
   switch(msg)
115
   switch(msg)
96
     case U8G_DEV_MSG_INIT:
117
     case U8G_DEV_MSG_INIT:
97
       u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
118
       u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
98
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_HAL_init_seq);
119
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_HAL_init_seq);
120
+      clear_graphics_DRAM(u8g, dev);
99
       break;
121
       break;
100
     case U8G_DEV_MSG_STOP:
122
     case U8G_DEV_MSG_STOP:
101
       break;
123
       break;
143
     case U8G_DEV_MSG_INIT:
165
     case U8G_DEV_MSG_INIT:
144
       u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
166
       u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
145
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_HAL_init_seq);
167
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_HAL_init_seq);
168
+      clear_graphics_DRAM(u8g, dev);
146
       break;
169
       break;
147
 
170
 
148
     case U8G_DEV_MSG_STOP:
171
     case U8G_DEV_MSG_STOP:

Loading…
Cancel
Save