ssd1963 - mikroc for arm - keil - emwin ve visual tft sorularim

Başlatan Karamel, 02 Nisan 2015, 15:32:14

Karamel

merhaba. yazin yapacagim wav player projesi icin bilgi toparliyorum. bir turlu karar veremedigim ve karar vermek icin bilgilerimin yetmedigi sorularim var.

-oncelikle wav playerim renkli lcd ekrana sahip olsun istiyorum. bunun icin ssd1963 entegresini sectim. ebay yada aliexpresstende 5" yada 7" ekranlardan birisini sececegim.
-wav playerim stereo olsun istiyorum.
-ilk wav imi caldiktan sonra wav playerim degisik formattaki wav dosyalarinida calabilsin istiyorum.
-opamp i ogrenmek icin ses cikisimi op amp ile yukseltmek istiyorum.
-wav dosyalarimi sd card uzerinden okumak istiyorum.(pc den sd card a atip. sonra sd card i pcb me baglayip dosya dosya ekranda gorup caldirmak istiyorum)
-ekrana volume ayari. rename gibi ozellikler yapabilmek istiyorum.

tum bu yukarida saydiklarimi yaparken arm microcontrollerlar ile calisarak arm microcontrollerlari azda olsa ogrenmek istiyorum.

simdi isin icersinden cikamadigim sorularima geleyim.

-ingilizce ok. reference manual i acip okuyabiliyorum. elektronik terimleri anlayamiyorum sadece. onuda yazin temel elektonik kitaplari alip cozmeyi dusunuyorum. reference manual i okuyabildigim icin bitleri degistirerek code yazabilirim. yani su registerin su bitini degistir. su aktif olsun. cikis degissin gibi. ama bunu daha once hic yapmadim. nasil bir sonuc ortaya cikar bilemiyorum?

-gecen yaz ve ondan onceki yaz mikroc ile pic microcontrollerlara azacikta olsa code yazmisligim var. pic microcontrollerin datasheetini acip bit bit registerlarla oynadim ama genel olarak mikroc nin librarylerini kullanmistim. bi hocamdan bir kac gun once stm32f407 discovery pcbsinden gecici olarak edindim. mikroc for arm ile neredeyse hic hasir nesir olmamistim. yarim saat icersinde mikroc libraryleri ile uzerindeki ledleri yakip sondurdum. button ile control yaptim. led in birtanesinide pwm ile control ettim. bunlari mikroc nin led blink example uzerinde oynayarak yaptim. soyle codelar ortaya cikti.

unsigned int current_duty, old_duty, current_duty1, old_duty1;
unsigned int pwm_period1, pwm_period2;



void main() {

  //GPIO_Digital_Output(&GPIOA_BASE, _GPIO_PINMASK_ALL); // Set PORTA as digital output
  //GPIO_Digital_Output(&GPIOB_BASE, _GPIO_PINMASK_ALL); // Set PORTB as digital output
  //GPIO_Digital_Output(&GPIOC_BASE, _GPIO_PINMASK_ALL); // Set PORTC as digital output
  GPIO_Digital_Output(&GPIOD_BASE, _GPIO_PINMASK_12 | _GPIO_PINMASK_13 | _GPIO_PINMASK_14 | _GPIO_PINMASK_15); // Set PORTD as digital output
  GPIO_Digital_Input(&GPIOA_BASE, _GPIO_PINMASK_0);
  //GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_ALL); // Set PORTE as digital output

  //GPIOA_ODR = 0;
  //GPIOB_ODR = 0;
  //GPIOC_ODR = 0;
  GPIOD_ODR = 0;
  //GPIOE_ODR = 0;
  
  current_duty  = 0;                        // initial value for current_duty
  current_duty1 = 0;                        // initial value for current_duty1

  pwm_period1 = PWM_TIM4_Init(50);
  PWM_TIM4_Set_Duty(current_duty1, _PWM_NON_INVERTED, _PWM_CHANNEL1);
  PWM_TIM4_Start(_PWM_CHANNEL1, &_GPIO_MODULE_TIM4_CH1_PD12);
  

  while(1) {
    //GPIOA_ODR = ~GPIOA_ODR; // Toggle PORTA
    //GPIOB_ODR = ~GPIOB_ODR; // Toggle PORTB
    //GPIOC_ODR = ~GPIOC_ODR; // Toggle PORTC
    //GPIOD_ODR = ~GPIOD_ODR; // Toggle PORTD
    if(GPIOA_IDR.F0 == 1)
    {
        //GPIOD_ODR.F12 = 1;  Delay_ms(500);
        //GPIOD_ODR.F13 = 1;  Delay_ms(500);
        //GPIOD_ODR.F14 = 1;  Delay_ms(500);
        //GPIOD_ODR.F15 = 1;  Delay_ms(500);

        //GPIOD_ODR.F12 = 0;  Delay_ms(500);
        //GPIOD_ODR.F13 = 0;  Delay_ms(500);
        //GPIOD_ODR.F14 = 0;  Delay_ms(500);
        //GPIOD_ODR.F15 = 0;  Delay_ms(500);
        
        //if(current_duty1<65530) current_duty1++;
        while(current_duty1 < 65530)
        {
          current_duty1++; Delay_us(40);
          PWM_TIM4_Set_Duty(current_duty1, _PWM_NON_INVERTED, _PWM_CHANNEL1);
        }
        
        while(current_duty1 > 5)
        {
          current_duty1--; Delay_us(40);
          PWM_TIM4_Set_Duty(current_duty1, _PWM_NON_INVERTED, _PWM_CHANNEL1);
        }
    } else{
    
        GPIOD_ODR.F15 = 1;  Delay_ms(500);
        GPIOD_ODR.F14 = 1;  Delay_ms(500);
        GPIOD_ODR.F13 = 1;  Delay_ms(500);
        //GPIOD_ODR.F12 = 1;  Delay_ms(500);

        GPIOD_ODR.F15 = 0;  Delay_ms(500);
        GPIOD_ODR.F14 = 0;  Delay_ms(500);
        GPIOD_ODR.F13 = 0;  Delay_ms(500);
        //GPIOD_ODR.F12 = 0;  Delay_ms(500);
    }
    
    
    //GPIOE_ODR = ~GPIOE_ODR; // Toggle PORTE

  }
}


simdi yazin keil ve st hal librarylerinide ogrenmek istiyorum ama sanirim yeteri kadar c language bilmiyorum. libraryde yazan herseyi anlayamiyorum. ikinci anlamadigim seyde su ki. keil ile st hal libraryleri ogrenmek ile mikroc librarylerini ogrenmek arasinda ne fark var anlayamadim? sanirim library ile code yazinca code lar tasinabilir oluyor ama arkada neler oluyor bilmiyoruz?

mesela mikroc de su code PWM_TIM4_Set_Duty(current_duty1, _PWM_NON_INVERTED, _PWM_CHANNEL1); aslinda currentduty1 degiskenini TIM4 timerinin value registerina gonderiyor. non invert - invert bitini ayarliyor vs. vs.


keilde .c ve .h dosyalarini include edemiyorum. bunu gecen yaz basaramamistim. bu yuzden keil basarili derleme yapmamisti. internetten buldugum example lari sorunsuz derliyordu ama. mesela spi librarysi bu al programina ekle deseniz beceremem. :-\

simdi bir diger soruna gelelim. visual tft nin mikroelektronika nin kendi pcblerini destekledigini. pekte esnek olmadigini daha once forumda konusmustul. Lukeskywalker hocam ssd1963 icin destek gelecek filan demisti. (suan icin gui de destek yok. insanlar el ile code lari modifiye ederek farkli sekilde kullaniyorlar) yaz icin durum ne olur bilmiyorum. visual tft mikroc for arm icin code uretiyor? eger visual tft kullanirsam. mikroc kullanmam gerekir. daha once hic bir ekrana resim. goruntu. yazi vs birsey yazmadigimdan(2x16 character lcd haric) visual tft ile bu isi kolay yapabilirim diye dusunuyorum.


bir diger yanda da emwin diye birsey var. sanirim bu tam bir gui? yani klavye mouse vs seyleri de destekliyor? keil ile calisiyor? ama tam olarak nasil calistigini anlayamadim. emwin ile yapmaya kalkarsam sanirim kesin keil kullanmam gerekir? emwin in urettigi code lari keil e include etmeyi cozebilemem gerekir?


tum bu sorulara cevap bulup. dogru secimlerimi yaptiktan sonra. birde su sd card meselesini kavramaliyim. sanirim sdcard biraz complex birsey. internette yaptigim arastirmalar sonucunda vardigim kani. genel olarak hazir libararyler kullanilmis? z hocamiz gibi elektronigin uc noktasindaki hocalarimiz disinda genel bir kesim kutuphane ile calisiyor? eger bu kanim dogru ise. soyle bir sorun doguyor.

-mikroc de sd card librarysi hazir geliyor? bu library ile sc card icersindeki wavlari listeyelebilir veya okuyabilirmiyim?
-keil kullanirsam sd card librarysi nereden bulacagim? diyelim ki buldum. bunu nasil kullanacagim? wav dosyasini nasil okuyacagim? dosyalari nasil listeleyecegim?


genel olarak sorularim bunlar. isin teknik detayli sorularini yazin projemi yaparken soracagim. simdi sorularimi sadece neyi hangi sey ile yapacagima karar vermek icin soruyorum.



uzunca bu yazimi okudugunuz icin hocalarima tesekkur ederim ::)


Karamel

sanirim konum hocalarimin ilgisini cekmedi??  :-\

-projeme enc24j60 ile ethernet baglantisida eklemek istiyorum. bu gun bu entegre uzerinde arastirma yaptim. etherneti ogrenmem icin arada bahane olmus olur.