Stellaris CCS v5 Sorunları

Başlatan fractal, 28 Aralık 2012, 17:48:06

fractal

ccs debug yaparken pause yaparsam eğer delay fonksiyonu varsa hata veriyor geçikmeyi for ile yapmışssam vermiyor.acaba neden?
Restantum cogniscutur Quantum deligutur

fractal

bu forum beni şizofren yapıyor.
Restantum cogniscutur Quantum deligutur

fractal

ccs de trigonometrik fonksiyonları kullanabilmek için hangi kütüphaneyi yüklemem gerekir? ve nasıl kullanılır?
Restantum cogniscutur Quantum deligutur

fractal

sadece math.h ekleyince yada iqmath.h ekelyince trigonometrik fonksiyonları kullanabiliyorum..

şimdiki sorunum şu;

alttaki kodları ekleyip çalıştırdığım zaman pwm modülü çalışmıyor faultısr ye dallanıyor program.2. seferde silip tekrar yüklersem yine pwm modülü çalışmıyor ama program faultısrye dallanmıyor.normal çalışıyor.3.sefer bu kodları ekleyip çalıştırdığım zaman pwm modülü çalışıyor.artık tekrar silipde yüklesem yinede çalışlıyor.ama bu seferde enerjiyi kesip açtığımda pwm modülü çalışmıyor...bu neden olur?

GPIO_PORTD_PCTL_R|=0x00000001;
 GPIO_PORTD_PCTL_R|=0x00000010;

Restantum cogniscutur Quantum deligutur

fractal

en son problemide şöyle cözdüm .h ları uygun dizince çalıştı.

#include "C:\StellarisWare\inc/lm3s5g51.h"

#include "C:\StellarisWare\driverlib/pin_map.h"

#include "C:\StellarisWare\inc/hw_memmap.h"
#include "C:\StellarisWare\inc/hw_types.h"
#include "C:\StellarisWare\inc/hw_ints.h"

#include "C:\StellarisWare\driverlib/cpu.h"
#include "C:\StellarisWare\driverlib/sysctl.h"
#include "C:\StellarisWare\driverlib/gpio.h"

#include "C:\StellarisWare\driverlib/adc.h"

#include "C:\StellarisWare\driverlib/pwm.h"


#include "C:\StellarisWare\driverlib/interrupt.h"

#include "C:\StellarisWare\driverlib/debug.h"


ve ayarlarıda clock ayarlarından sonra koyunca  ve şöyle yapınca

         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
         SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD0_PWM0;
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD1_PWM1;
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD2_PWM2;
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD3_PWM3;
Restantum cogniscutur Quantum deligutur

fractal

şimdiki sorun şu pwm zero ile dma tetikleme.örneklerde pwm timer ile yapılmış var.acaba pwm zero trigger ile dma çalıştırılabilirmi?
Restantum cogniscutur Quantum deligutur

fractal

Acaba burda bi güzel kaysam bunu okuyan olurmu.ya şöle o bicim resimlermi koysam:)
Restantum cogniscutur Quantum deligutur

burak ozturk

hocam ben okuyorum ama bana göre bariz olarak önde oldugunuz için yanıt verecek potansiyelim yok :) . şu an da stellarisware derslerini takip ediyorum bitbanding olayinin ne melem bişrşey olduğunu çözemeye çalışıyorum .
happy coding.

fractal

#98
bu işe başlarken neden bana stm önermemişler.neden herkes stm ci olmuş.nasıl birşey bu stm stellarislerden farkı ne?ucuzmu daha güncel bir arm çekirdekmi var.örnekmi bol.pratikmi?bedavamı?

stellarisin formunda tam açık söylemeselerde stellaris lm3s,lm4f pwm zero trigger ile dma tetiklenmiyor.zaten anladığım kadarıylada dma öyle sihirli bir deynek değil.1 sn 80.milyon işlem yapan işlemciye 80 milyon işlem yaptırmakla 40 milyon işlem yaptırmak arasında bir fark varmı.sürekli zaten tetikleme olmuyormu.program zaten öyle yada böyle koşmuyormu.olay sadece programın yanlış yere dallanma ihtimalimi..
Restantum cogniscutur Quantum deligutur

fractal

#99
texasın formundada bir çok Türk var ama saırım bizim siteye üye değilller. picbrojeye  üye olup lm3s serisi kullanıpta sırf artislik alanları farkı olanlar juriden az puan alırım diye hareket cekmiyorlar.

stellariste tüm kesme işlemleri nvic trafından dansettiriliyormuş onu öğrendim.online monitörin de yapıyorum ama nedense 4-5 yinelemeden sonra uyarı verip kalıyor.hem kartı hem programı tekrar kapatıp açmak gerekiyor.
pwm ile udma tetikleme olayındada halen net bir sonuç alamadım.

stelariste zaman saat clock olaylarınıda çözdüm.kristal 16 mhz ise ve 80MHZ çalışıyosa  3/16MHZ)(xxxxx)= ns cinsinden zamanı elde ediyorsun.
3/16Mhz(1000)=187.5 us yapar oda 1/187.5 =5.33khz

örnek pwm ayarlama 5.33khz kare dalgaa hemde ölü zamanlı  4 kanal..

       
 ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);  //80Mhz için
 ROM_SysCtlPWMClockSet(SYSCTL_PWMDIV_1);

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);  //pwm için d portuna clock girişi bağlama
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);   //pwm modülüne  clock girişi aktarma

         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD0_PWM0;  //d portuna pwm yetkisi
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD1_PWM1;
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD2_PWM2;
         GPIO_PORTD_PCTL_R|=GPIO_PCTL_PD3_PWM3;

         ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0);
         ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_1);
         ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_2);
         ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_3);

         ROM_PWMGenConfigure(PWM_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
         ROM_PWMGenConfigure(PWM_BASE, PWM_GEN_1, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);

         ROM_PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, 1000);
         ROM_PWMGenPeriodSet(PWM_BASE, PWM_GEN_1, 1000);

         ROM_PWMPulseWidthSet(PWM_BASE, PWM_OUT_0,500);
         ROM_PWMPulseWidthSet(PWM_BASE, PWM_OUT_1,500);
         ROM_PWMPulseWidthSet(PWM_BASE, PWM_OUT_2,500);
         ROM_PWMPulseWidthSet(PWM_BASE, PWM_OUT_3,500);

         ROM_PWMDeadBandEnable(PWM_BASE, PWM_GEN_0, 10, 10);
         ROM_PWMDeadBandEnable(PWM_BASE, PWM_GEN_1, 10, 10);

         ROM_PWMOutputState(PWM_BASE, PWM_OUT_0_BIT|PWM_OUT_1_BIT, true);
         ROM_PWMOutputState(PWM_BASE, PWM_OUT_2_BIT|PWM_OUT_3_BIT, true);


         ROM_PWMGenEnable(PWM_BASE, PWM_GEN_0);
         ROM_PWMGenEnable(PWM_BASE, PWM_GEN_1);

 ROM_PWMIntEnable(PWM_BASE, PWM_INT_GEN_0);

while(1)
{
//oyun başlasın
}
Restantum cogniscutur Quantum deligutur

pea

Sanırım Stellaris'e giriş için TI'ın oluşturduğu dökümanları atlamışsınız.
Stellaris Launchpad için Workshop bulunmakta. Hem video hem de Pdf üzerinde çevre birimlerinin çalışma mantığı ve kullanımı anlatılıyor.
http://processors.wiki.ti.com/index.php/Getting_Started_with_the_Stellaris_EK-LM4F120XL_LaunchPad_Workshop?DCMP=stellaris-launchpad&HQS=stellaris-launchpadtraining

Workshop Material başlığı altındaki Pdf oldukça iyi iş görüyor.

pea

#101
CCS'te sıfırdan proje derleyemiyorum inatla. Lab derslerindeki projeleri import edip kullanabiliyorum. O projelerin üzerinde oynayarak da kullanabiliyorum. Ama sıfırdan yapmaya kalkışırsam bir sürü hata alıyorum. Yaptığım şey de, lab projelerinden copy/paste alt tarafı.

//#define PART_LM4F120H5QR

#include "inc/hw_memmap.h"
#include "inc/hw_types.h"

#include "driverlib/pin_map.h"
#include "driverlib/uart.h"
#include "driverlib/gpio.h"

#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "utils/uartstdio.h"


#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

void UARTIntHandler(void)				// Interrupt Service Routine
{
	unsigned long ulStatus;
	unsigned char received_character;

	ulStatus = UARTIntStatus(UART0_BASE, true); 				//get interrupt status
	UARTIntClear(UART0_BASE, ulStatus); 						//clear the asserted interrupts
	while(UARTCharsAvail(UART0_BASE)) 							//loop while there are chars
	{
		//UARTCharPutNonBlocking(UART0_BASE, UARTCharGetNonBlocking(UART0_BASE)); //echo character
		received_character = UARTCharGet(UART0_BASE);
		UARTCharPutNonBlocking(UART0_BASE, received_character); //echo character
		if (received_character == 13) UARTCharPutNonBlocking(UART0_BASE, 10);		// If received char = ENTER, send Line Feed

		GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2); 		//blink LED
		SysCtlDelay(SysCtlClockGet() / (1000 * 3)); 				//delay ~1 msec
		GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0); 				//turn off LED
	}
}


int main(void)
{
	unsigned long ulADC0Value;
	volatile unsigned long ulTempAvg;
	volatile unsigned long ulTempValueC;
	volatile unsigned long ulTempValueF;

	SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);

	SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0|SYSCTL_PERIPH_UART0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA| SYSCTL_PERIPH_GPIOB|SYSCTL_PERIPH_GPIOF);		// Enable the UART0, I2C and GPIOA-B-F peripherals (the UART pins are on GPIO Port A)
	GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2); //enable pin for LED PF2

	SysCtlADCSpeedSet(SYSCTL_ADCSPEED_250KSPS);
	ADCHardwareOversampleConfigure(ADC0_BASE, 64);
	ADCSequenceDisable(ADC0_BASE, 0);
	ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);
	ADCSequenceStepConfigure(ADC0_BASE, 0, 0,  ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH11);
	ADCSequenceEnable(ADC0_BASE, 0);
	
    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200, (UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

    IntMasterEnable(); //enable processor interrupts
    IntEnable(INT_UART0); //enable the UART interrupt
    UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT); //enable Receiver interrupts

    UARTStdioInit(0); //tells uartstdio functions to use UART0
    UARTprintf("\033[2J\033[HEnter Text: "); // erase screen, put cursor at home position (0,0), prompt

	while(1)
	{
		ADCIntClear(ADC0_BASE, 0);
		ADCProcessorTrigger(ADC0_BASE, 0);

		while(!ADCIntStatus(ADC0_BASE, 0, false))
		{
		}

		ADCSequenceDataGet(ADC0_BASE, 0, &ulADC0Value);
	}
}


Build Console'da aldığım cevap ise şu şekilde:

**** Build of configuration Debug for project adc uart pwm deneme ****

"C:\\ti\\ccsv5\\utils\\bin\\gmake" -k all 
'Building file: ../main.c'
'Invoking: ARM Compiler'
"C:/ti/ccsv5/tools/compiler/arm_5.0.1/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 --abi=eabi -me -g --include_path="C:/StellarisWare" --include_path="C:/ti/ccsv5/tools/compiler/arm_5.0.1/include" --diag_warning=225 --display_error_number --diag_wrap=off --preproc_with_compile --preproc_dependency="main.pp"  "../main.c"
"../main.c", line 65: error #20: identifier "GPIO_PA0_U0RX" is undefined

"../main.c", line 66: error #20: identifier "GPIO_PA1_U0TX" is undefined
>> Compilation failure
2 errors detected in the compilation of "../main.c".
gmake: *** [main.obj] Error 1
gmake: Target `all' not remade because of errors.

**** Build Finished ****


GPIO_PA0_U0RX ve TX undefined hatası, #define işlemci modeli yaparsam düzeliyor, ancak bunu yapmama gerek kalmaması lazım.
Bir de UartPrintf'e unresolved symbol hatası alıyorum.

Lab projelerinin üstünden gide gide iyice bozdum zavallıcıkları. Daha da bozmadan yeni proje işini çözmem gerekiyor.



Güncelleme: Clean Project deyip tekrar deneyince oldu nedense. Şimdi de işlemci FaultISR rutinine giriyor sürekli.

fractal

#102
hocam ben şöyle yapıyorum.örneğin adc modülünü kullanıcam adc.h include ediyorum.adc.c ise add files ile ekliyorum.faultisr ye gitmesinin nedeni yazdığın kodların işlemci ile uyuşmaması olabilir.eğer o kod işelmcide tanımlı değilse fault isr ye gidiyyor.ben işlemcinin headrına bakıyorum tanımlımı değilmi diye.birde class olayı var bu stellariste.işlemcin hangi class da ise o classda çalışömayan komutlar var...

birde sıfırdan proje oluşturacağın zaman startup da eklemen gerekiyor.ayrıca kullandığın debuger ayarlarının olduğı bir dosyda mevcut.
Restantum cogniscutur Quantum deligutur

fractal

istediğim portun herhangi bir pininden kesme üretebilirmiyim? ve nasıl?
Restantum cogniscutur Quantum deligutur

fractal

ara sıra kendiliğinbden kesme oluşuyor.sanırım parazit var.tam çözemedim olayı..

pin okuma yaparken GPIOPadConfigSet fonksiyonunu kullanmamız gerekirmi?daha önce pin okuyabiliyordum ama şimdi okuyamıyorum..ne oldu anlamadım..


ROM_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

         ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
        ROM_GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3|GPIO_PIN_4,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);

-----
---
    	  if(ROM_GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4) )
    	  {

    		  ROM_GPIOPinWrite( GPIO_PORTF_BASE, GPIO_PIN_1,0xff);
    	  }
Restantum cogniscutur Quantum deligutur