Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
|
2015:k430wqa [2016/01/17 13:27] Rostislav Stehno |
2015:k430wqa [2016/01/17 21:40] (aktuální) Rostislav Stehno |
||
|---|---|---|---|
| Řádek 7: | Řádek 7: | ||
| Tento projekt je součást diplomové práce. K řízení je použit MCU ATSAM4E16E který je osazen na vlastní DPS. Zařízení je napájeno z baterie. Toto napětí je impulsními zdroji regulováno na 3.3V a další potřebné napájení (+5V,-5V a +17V pro podsvícení displeje). | Tento projekt je součást diplomové práce. K řízení je použit MCU ATSAM4E16E který je osazen na vlastní DPS. Zařízení je napájeno z baterie. Toto napětí je impulsními zdroji regulováno na 3.3V a další potřebné napájení (+5V,-5V a +17V pro podsvícení displeje). | ||
| - | {{:2015:hwfoto.jpg?200|}} | + | {{:2015:hwfoto.jpg?300|}} |
| Display je je připojen na PORTC. Spodních 24 bitů je určeno pro přenos dat (RGB-888) a zbylé bity jsou použity pro signály HSYNC, VSYNC, DE a DCLK. | Display je je připojen na PORTC. Spodních 24 bitů je určeno pro přenos dat (RGB-888) a zbylé bity jsou použity pro signály HSYNC, VSYNC, DE a DCLK. | ||
| Řádek 23: | Řádek 23: | ||
| #define __SAM4E16E__ | #define __SAM4E16E__ | ||
| - | #include "stdbool.h" | ||
| #include "sam4e16e.h" | #include "sam4e16e.h" | ||
| uint8_t DISPLAY_POLE[420][238]; | uint8_t DISPLAY_POLE[420][238]; | ||
| Řádek 63: | Řádek 62: | ||
| void ZobrazitDISP(void){ | void ZobrazitDISP(void){ | ||
| + | while(REG_TC1_CV2!=0); | ||
| uint16_t Cykl=0; | uint16_t Cykl=0; | ||
| + | Radek=0; | ||
| while(Cykl<290) | while(Cykl<290) | ||
| { | { | ||
| Řádek 70: | Řádek 71: | ||
| PIOC->PIO_SODR = ((0x1u) << 28); | PIOC->PIO_SODR = ((0x1u) << 28); | ||
| } | } | ||
| - | if(Cykl==0x2) | + | else if(Cykl==0x2) |
| { | { | ||
| PIOC->PIO_CODR = ((0x1u) << 28); | PIOC->PIO_CODR = ((0x1u) << 28); | ||
| } | } | ||
| - | if(Cykl>=0xB&&Cykl<0x11B) | + | else if(Cykl>=11&&Cykl<=283) |
| { | { | ||
| - | Radek=0; | ||
| uint16_t t=0; | uint16_t t=0; | ||
| - | while(t<0xEF){t++;} | + | while(t<0x30){t++;} |
| PIOC->PIO_SODR = ((0x1u) << 31); | PIOC->PIO_SODR = ((0x1u) << 31); | ||
| - | Sloupek=0; | + | if (Radek>=17&&Radek<=255) |
| - | while(Sloupek<420) | + | { |
| - | { | + | uint16_t y=0; |
| - | PIOC->PIO_CODR = ~ENCODE_DISP[DISPLAY_POLE[Sloupek][Radek]]; | + | while(y<0x75){y++;} |
| - | PIOC->PIO_SODR = ENCODE_DISP[DISPLAY_POLE[Sloupek][Radek]]; | + | Sloupek=0; |
| - | Sloupek++; | + | while(Sloupek<420){ |
| + | PIOC->PIO_ODSR = ENCODE_DISP[DISPLAY_POLE[Sloupek][Radek-15]]; | ||
| + | asm("nop"); | ||
| + | asm("nop"); | ||
| + | asm("nop"); | ||
| + | asm("nop"); | ||
| + | Sloupek++; | ||
| + | } | ||
| + | y=0; | ||
| + | while(y<0x75){y++;} | ||
| + | }else{ | ||
| + | uint16_t y=0; | ||
| + | while(y<0x770){y++;} | ||
| } | } | ||
| Radek++; | Radek++; | ||
| PIOC->PIO_CODR = ((0x1u) << 31); | PIOC->PIO_CODR = ((0x1u) << 31); | ||
| } | } | ||
| - | while(REG_TC1_CV2<=0xC0); | + | while(REG_TC1_CV2<=0x168); |
| - | Cykl++; | + | Cykl++; |
| } | } | ||
| - | return; | + | return; |
| } | } | ||
| Řádek 102: | Řádek 114: | ||
| PinInit(); | PinInit(); | ||
| TimerInit(); | TimerInit(); | ||
| + | REG_WDT_MR |= ((0x1)<<13); //watchdog disabled !!!! | ||
| + | PIOC->PIO_SODR = ((0x1u) << 30); | ||
| REG_TC1_CCR0 = 0x5; | REG_TC1_CCR0 = 0x5; | ||
| REG_TC1_CCR2 = 0x5; | REG_TC1_CCR2 = 0x5; | ||
| Řádek 110: | Řádek 124: | ||
| } | } | ||
| + | **====== Průběhy ======** | ||
| + | |||
| + | Na těchto obrázcích můžeme vidět reálné naměřené průběhy pomocí logického analyzátoru. Sestupně to jsou: DCLK (6MHz), HSYNC, VSYNC, DE a DATA.. | ||
| + | |||
| + | {{:2015:gr1.png?300|}} | ||
| + | |||
| + | Na prvním obrázku je zobrazen průběh zobrazení celé obrazovky viz VSYNC | ||
| + | |||
| + | {{:2015:gr2.png?300|}} | ||
| + | |||
| + | Na tomto obrázku vidíme detail průběhu zobrazení jednoho řádku HSYNC | ||
| + | |||
| + | **====== Závěr ======** | ||
| + | |||
| + | {{:2015:mcu_disp.jpg?200|}} {{:2015:20160117_210903.jpg?200|}} | ||
| + | |||
| + | Na pravém obrázku je zobrazena bílá barva, je zde patrný černý rámeček způsobený omezením RAM kapacity. | ||
| + | Jedná se o první zkušenosti s touto architekturou MCU a jejich aplikací na vlastní desce. | ||
| + | Z toho vyplívají nedostatky, chyby a problémy které způsobily zpoždění práce a její neuplnost. Během tvorby byly pravděpodobně zničeny 2 mikrokontroléry a jedna DPS. Neuplnost také způsobilo nedostatečné zkušenosti s aplikací ARMů do vlastní desky. | ||