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. | ||