Quantcast
Channel: Forums - Recent Threads
Viewing all 262198 articles
Browse latest View live

Output resistance and inductance of LMZ12002 and LMZ12003

$
0
0

Hi,

I am using both LMZ12003 and LMZ12002 to power my Altera Cyclone IV FPGA. While doing Power Distribution Network (PDN) planning for my high board design, I need to supply the output resistance and inductance of the VRM in my PDN planning tool. I searched the datasheets, but I am not able to find the data.

It is strange that such important parameters have not been stated clearly. Am I missing some indirect method from which we need to calculate that information?

Warm Regards,

Binayak. 


AM335x with RMII Ethernet Phy

$
0
0

Do you have an example design of AM335x connected to a 10/100 Phy using RMII interface. What I am wondering is whether the Phy or the CPU is supossed to provide the 50MHz clock. Advisory 1.0.16 in the AM335x Errata states that its output clock doesn’t comply with requirements of external RMII phy.

Will this be fixed in Rev 2 silicon?

MSP430 LaunchPad with Window 8

$
0
0

How to use MSP430 Launchpad with windows 8 ?

CC2530 security authentication issue

$
0
0

Hi,

Am having trouble gettin the security working on my CC2530 custom board. Well in my setup am using a custom Stellaris board as the Coordinator and the CC2530 board as a router both have Zstackv2.5 running.

On the router side immediately after association the security authentication fails (which i also observed on a Stellaris - Stellaris combo setup ) but unlike the normal procedure of the router receiving a device authentication command from the coordinator , the router simply gets stuck in the mac layer event processing loop and is unable to get out of it .

It seems like something caused the OSAL to hang within the mac processing loop, although during this am able to receive RF interrupts and process OTA frames in the low level mac .  I made sure there is enough heap memory and NV flash memory for any of the Zsack buffers or NVvariables not to work properly.

Ive tried setting up the network for no security which works fine.

P.S.   Am using the same default pre config keys on both devices and have SECURE = 1 ZG_SECURE_DYNAMIC= 1 and zgPreConfigKeys= TRUE zgSecurePermitJoin =true and am using the residential mode of security and ofcourse ZigbeePRO

A small correction in the query .. the sytems seems to hang in the network layer event processing loop and not in the mac layer. The control seems to hang right after the association process  (after control exists  ZDApp_ProcessNetworkJoin in ZDApp.c  and enters the nwk event processing function). If i comment out the Network Association process (NLME_JoinRequest in ZDO_NWK_DISC_CNF in ZDApp.c ) the system does not hang.

Also i tried using one of the sample application(Generic App) to eliminate any application related issues.

Thanks in advance

Bosco Jacinto

Reprogramming flash memory with updated application program FYI

$
0
0

Santosh,

Thanks for your assistance Friday. It allowed me to continue debugging my application that overlays the current program with an updated version.

Since Friday, I have found a couple additional quirks that I had to implement in order to get my application fully operational.

Reference for earlier changes to the example flash_prog:

http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/310667/1087302.aspx#1087302

 

here's the list of the latest changes required:

Place the stack RAM in a seperate location from the heap memory (for RTOS).

Place all functions in Fapi_UserDefinedFunctions.c in ramfuncs

Remove all calls to WDT and disable WDT before replacing the lower flash code

Place the following code in the ResetISR function

 // Jump to the CCS C Initialization Routine.

__asm(" movw r0, #0x4bfc");


__asm(" movt r0, #0x2000");

__asm(" movsp, r0");

__asm("    .global _c_int00\n"

 "    b.w     _c_int00");

and new changes - these may be compiler issues. I am using TI v4.9.7.

The flash programming tool would not program .cinit and .const when they were attached at the end of .text. I had to assign specific locations for the programming tool to be effective. I would get status error 509 telling me that there was a buffer length or bank limit problem. Both errors seemed bogus, so I tried the alignment and my test example was stored properly. But my larger application .text which spanned several sectors then also had a problem with sectors M and L, so I assigned all .text to start at sector J and then it worked.

Perhaps Someone at TI could explain if this is a compiler problem?

Again, thanks Santosh. Sometimes these problems can be resolved with a short dedicated interaction such as I received with Santosh. To me, this makes so much more sense that having to hunt and peck through all the posts, rarely finding any specific reference to the problem. Talking with someone who really knows the hardware as well as the software tools has been immensely more cost-effective for me and I suspect for numerous other users.

I would have gladly paid a support fee knowing that I would have someone who would stick with the problem until it is solved. I would like to strongly encourage TI to consider this as a more viable option for their business.

I have attached the latest .cmd file

(Please visit the site to view this file)

Pat

 

Where exactly does the BQ27741-G1 'CVM' status bit come from?

$
0
0
In the bq27741-G1 user guide ( http://www.ti.com/lit/pdf/sluuaa3 ) on page 36 it mentions this status bit:

CVM = Cell voltage monitor threshold
      1 = Cell voltage monitor threshold detected
      0 = Cell voltage monitor threshold not detected

However, there is no documentation that we can find as to what the monitor threshold is, if it can be adjusted, or even what it means.

This status register is for the analog front end (AFE). Which we believe means that its bits are set directly from hardware analog comparators. We're guessing that CVM represents an undervoltage lockout, but as we say,
no documentation. 

Could someone please clarify this for us?

Thanks!

Andrew

LMH0387 Equalizer sleep mode

$
0
0

If I force the equalizer into sleep mode by setting the control bits to "10", does that bypass the equalizer and I can still see toggling outputs (un-equalized input)?

Or, does that shut down the outputs as well?

Assuming that I have the driver turned on.

GPIO context during "suspend" (deepsleep0)

$
0
0
Hi,
I find this patch-description for the evm-module a bit confusing:
• WLAN_EN moved from GPIO1_16 to GPIO3_16 as GPIO1_16 is losing context during suspend
http://processors.wiki.ti.com/index.php/WL18xx_Adding_WoWLAN

In the AM335x datasheet, "8.1.11 Device Modules and Power Management Attributes List",
Only GPIO_0 is part of the PD_PER power domain while using the deepsleep0 mode.

I would assume moving the wilink enable-pin from gpio1_* to gpio0_* ?
andby the way, when the wiki refers to "suspend", which sleep-mode is the text refering to!?


Related:
I assume pinmux/padconf can keep it's pu or pd regardless of gpio bank. So this will only fail to work if we would have external pull-up/down's that would need to be overridden or control via mosfet's (say for level translators).



I2C LCD display library for Energia

$
0
0

Is there a I2C library to connect 16x2 LCD to Tiva C TM4C123G using Energia?

For Arduino it is called : LiquidChrystal_I2C

CCS 5.5 debugger shows incorrect address for C++ class given static storage allocation in main

$
0
0

The attached project (Please visit the site to view this file) was created to test C++ classes being allocated static storage allocation in main. The project was created in CCS 5.5.0.00077 with MSP430 compiler v4.2.3, targetting a MSP430F5529. The program runs correctly, but in the debugger the contents of the classes ADC0 to ADC3 are displayed incorrectly in the debugger as shown in the following screenshot:

The debug variable view incorrectly reports that the address of ADC0 ADC1, ADC2 and ADC3 are all 0xB748 (which is the address of the main function in flash) rather than the actual address in RAM (0x2f12, 0x2f16, 0x2f1a, 0x2f1e).

In the expression window when a cast was used to manually display the contents of address 0x2f16 (where ADC1 is in RAM) as cast to the type ADCon the debugger displayed the correct result.

The attached .zip file also contains debug_server.log which is the debug server logging. The debug server logging contains the following:

0x000007FC 9552078 3 MSP430 GEL I: Evaluation of "ADC0" completed - Value: unknown Location: Compound Location (Address 0xb748 (0)) Type (class ADCon)
0x000007FC 9552093 3 MSP430 GEL I: Evaluation of "ADC1" completed - Value: unknown Location: Compound Location (Address 0xb748 (0)) Type (class ADCon)
0x000007FC 9552093 3 MSP430 GEL I: Evaluation of "ADC2" completed - Value: unknown Location: Compound Location (Address 0xb748 (0)) Type (class ADCon)
0x000007FC 9552093 3 MSP430 GEL I: Evaluation of "ADC3" completed - Value: unknown Location: Compound Location (Address 0xb748 (0)) Type (class ADCon)
Therefore, the problem appears to be that the CCS 5.5 debugger is unable to resolve the address of ADC0 to ADC3 based upon the debug information created by MSP430 compiler v4.2.3. Not sure if the problem is CCS 5.5 or the compiler.

decode_display_a8host_debug.xv5T:xdc.runtime.Main: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()

$
0
0

Hi dear experts!

I have a board(dm8148) booting from sd-card.
Also I found pre-built demo decode_display_a8host_debug.xv5T, that I can successfully execute and watch image on the LCD!

For example, I do the following:
./matrix-gui-e stop
./pvr-init stop
./decode_display_a8host_debug.xv5T -i /usr/share/ti/data/vide
os/dm816x_1080p_demo.264 -w 1920 -h 1080 -f 30 -g 0 -d 1 -c h264

Successful!
I get image!


Then I resolve to build this app(decode_display_a8host_debug.xv5T) from sources , but when I try to execute it I get errors:

root@dm814x-evm:~# ./decode_display_a8host_debug.xv5T -i /usr/share/ti/data/vide
os/dm816x_1080p_demo.264 -w 1920 -h 1080 -f 30 -g 0 -d 1 -c h264
input file: /usr/share/ti/data/videos/dm816x_1080p_demo.264
width: 1920
height: 1080
frame_rate: 30
gfx: fbdev disable
codec: h264
display_id: 1
Decoder-Display example
===============================
[t=0x00000004] [tid=0x4002a000] xdc.runtime.Main: ERROR: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()
xdc.runtime.Main: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()
[t=0x00000143] [tid=0x4002a000] xdc.runtime.Main: ERROR: "IpcSupport.c", line 231: ipc_initialize() failed
xdc.runtime.Main: "IpcSupport.c", line 231: ipc_initialize() failed
[t=0x000002ce] [tid=0x4002a000] xdc.runtime.Main: ERROR: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()
xdc.runtime.Main: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()
[t=0x000003ab] [tid=0x4002a000] xdc.runtime.Main: ERROR: "IpcSupport.c", line 231: ipc_initialize() failed
xdc.runtime.Main: "IpcSupport.c", line 231: ipc_initialize() failed
[t=0x00000486] [tid=0x4002a000] xdc.runtime.Main: ERROR: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()
xdc.runtime.Main: "IpcSupport.c", line 148: ipc_initialize(), error in ProcMgr_open()
[t=0x00000555] [tid=0x4002a000] xdc.runtime.Main: ERROR: "IpcSupport.c", line 231: ipc_initialize() failed
xdc.runtime.Main: "IpcSupport.c", line 231: ipc_initialize() failed
decode_display_a8host_debug.xv5T: DomxProcMgrIf_HLOS.c:287: DomxCore_mapPhyAddr2UsrVirtual: Assertion `(pSlaveProcHandle != ((voi.
Aborted


What's wrong?

I have envvar as:
Kernel command line: console=ttyO0,115200n8 rootwait root=/dev/mmcblk0p2
rw mem=256M earlyprintk notifyk.vpssm3_sva=0xBF900000 vram=50M ti814xfb.vram=0:16M,1:16M,2:6M ip=off noind

Thank you for any help extended!

Amplifiers with larger load capacitance

$
0
0

Could you give me a few recommendations for the amplifier with large capacitive load driving capability? I would want a quad opamp with 16 pin SOIC package; and Vs is +/-5V. Thanks.

Communication problem between CC1200 and CC430

$
0
0

Hi,

I have a problem with configuration of CC1200 to cooperate with the CC430 and CC1110EM.
Communication in the direction from CC430 to CC1200 works properly, the problem is the reception of the data frame by CC430 when I send it with using CC1200.
To eliminate potentially hardware problems I used the factory modules CC120xEM and CC1110EM rev 2.0 connected by CCDebbuger to SmartRFStudio.
After registers configuration I try to establish communication with PacketTx and PacketRx options available in SmartRFStudio. The effect was the same as before, ie if the packet was sent by CC1110EM, CC120XEM recived it correctly, but when packet was transmitted by CC120xEM, the dialog box PacketRx of CC1110EM module was empty.

Transmission parameters and data frame (set with using SmartRFStudio) put below :


During the experiments I checked the carrier frequencies, deviation and modulation (with using spectrum analyser) and both modules agree with the accuracy up to ~3kHz , also physically transferred data frame in both cases are consistent (both transmited data and baud rate). Of course, I will enclose the appropriate measurements if necessary.
What might be causing of this problem - any suggestions?

Regards,
Syl

C5535 - Fixed Point Format

$
0
0

Hey everyone, 

New to the DSP world here. I'm thinking about getting a TMDX5535EZDSP kit for modifying the signal coming from a guitar's pickup coils. It's a fixed point DSP, but does anyone know what the fixed point format is? How many bits are associated to each side of the decimal point? I've checked around the docs and couldn't find it. 

- Kev

Program starts permanently from the beginning

$
0
0
Dear community,
Unfortunately I’m facing a problem that I’m not able to solve. Maybe somebody of you can give me a clue…
I’m coding in CCS v5 the device MSP430F2232 via the eZ430-RF2500.
The complete program is shown below. If I run the program with
        //ADCon ADC0(0, 1, 65, 740, 829, 859, 1);
        ADCon ADC1(1, 1, 65, 767, 829, 859, 1);
        ADCon ADC2(2, 1, 65, 785, 829, 859, 1);
        ADCon ADC3(3, 1, 65, 730, 829, 859, 1);
        ADCon ADC4(4, 1, 65, 767, 829, 859, 1);
        //ADCon ADC5(5, 1, 61, 726, 803, 846, 1);
        /*ADCon ADC6(6, 1, 65, 767, 829, 859, 1, "cm");
        ADCon ADC7(7, 1, 65, 767, 829, 859, 1, "cm");*/
 
Everything works fine. If I add one more class like
        //ADCon ADC0(0, 1, 65, 740, 829, 859, 1);
        ADCon ADC1(1, 1, 65, 767, 829, 859, 1);
        ADCon ADC2(2, 1, 65, 785, 829, 859, 1);
        ADCon ADC3(3, 1, 65, 730, 829, 859, 1);
        ADCon ADC4(4, 1, 65, 767, 829, 859, 1);
        ADCon ADC5(5, 1, 61, 726, 803, 846, 1);
        /*ADCon ADC6(6, 1, 65, 767, 829, 859, 1, "cm");
        ADCon ADC7(7, 1, 65, 767, 829, 859, 1, "cm");*/
 
The program seems to break within the while loop and restarting from the beginning. It seems like there would be a watchdog reset. But the watchdog is supposed to be deactivated (Control register shows a “1” for hold).
Does somebody have a clue?
How could I find out if it’s a watchdog reset?
 
Thanks in advance for any help, happy new year and kind regards, Christoph
 
intmain(void) {
    WDTCTL =  WDTPW + WDTHOLD + WDTCNTCL ;     // Stop watchdog timer
    BCSCTL1=CALBC1_12MHZ;              // Internal clock 16MHz
    BCSCTL2=0x00;
    BCSCTL3=0x00;
    DCOCTL=CALDCO_12MHZ;
 
    P1DIR = 0xFF;                              //Configuration of all Ports
    P2DIR = 0xC7;
    P3DIR = 0x3E;
    P4DIR = 0x87;
    P1SEL = 0x00;
    P2SEL = 0x18;
    P3SEL = 0xCA;
    P4SEL = 0x78;
    P1IE = 0x00;
    P2IE = 0x00;
    P1OUT = 0x00;
    P2OUT = 0x00;
    P3OUT = 0x00;
    P4OUT = 0x00;
 
    SPI_Init();                                //Initialization Display
    DISP_Init();
        DISP_Clean();
 
 
        AD_Init();                                     //Initialization of AD Converter
 
 
        //ADCon ADC0(0, 1, 65, 740, 829, 859, 1);
        ADCon ADC1(1, 1, 65, 767, 829, 859, 1);
        ADCon ADC2(2, 1, 65, 785, 829, 859, 1);
        ADCon ADC3(3, 1, 65, 730, 829, 859, 1);
        ADCon ADC4(4, 1, 65, 767, 829, 859, 1);
        ADCon ADC5(5, 1, 61, 726, 803, 846, 1);
        /*ADCon ADC6(6, 1, 65, 767, 829, 859, 1, "cm");
        ADCon ADC7(7, 1, 65, 767, 829, 859, 1, "cm");*/
 
 
        TA0CTL = 0x0234;  //Timer A Control Register - Timer A creates 10ms Interrupt
        TACCR0 = 0xE597;        //Measured value for realizing correct 10ms Interrupt
        TACCTL0 = 0x0010;
 
        TB0CTL = TBSSEL_2 + MC_2 + TBCLR;
        _enable_interrupts();
        unsignedchar Test[8]={5,5,5,5,5,5,5,5};
 
    while(1)
    {
        TB0CTL |= TBCLR;
        P2OUT |= 0x04;
        Frame(1);
        show_watch(7, 20);
        AD_Collect(AD);
        Num_Str(ADC4.ADvalue_Real, Test);
        DISP_WriteString(12,20,Test);
        Num_Str(ADC4.ADvalue_Stan, Test);
        DISP_WriteString(15,20,Test);
        Num_Str(ADC4.ADvalue_Con, Test);
        DISP_WriteString(18,20,Test);
        Num_Str(ADC1.ADvalue_Stan, Test);
        DISP_WriteString(15,80,Test);
        Num_Str(ADC2.ADvalue_Stan, Test);
        DISP_WriteString(18,80,Test);
        Num_Str(ADC3.ADvalue_Stan, Test);
        Num_Str(ADC4.ADvalue_Stan, Test);
        ADC1.Average(AD);
        ADC2.Average(AD);
        ADC3.Average(AD);
        ADC4.Average(AD);
        ADC1.Calculate();
        ADC2.Calculate();
        ADC3.Calculate();
        ADC4.Calculate();
    }
        return 0;
}
/*******************************************************************
 * Timer A Interrupt Vector Handler
 * Time calculation: T = 2/12MHz * (TACCRO+1) = 10ms
 *******************************************************************/
#pragma vector=TIMER0_A0_VECTOR
__interruptvoidTIMER_A(void)                                 //10ms Interrupt
{
        TA0CTL = TA0CTL & 0xFFFE;
        RTC10 += 1;
        if(RTC10 == 10)                                //100ms Interrupt
        {
                RTC10 = 0;
                RTC100++;
        }
 
        if(RTC100 == 10)                       //1s Interrupt
        {
                RTC100 = 0;
                RTC1000++;
                watch();
        }
        return;
}

Potential Workaround For mDNS Bug/Non-Implimentation

$
0
0

To work around the bugs and lack of mDNS query support. I have devised a workaround and would welcome opinions and suggestions regarding this solution. 

This is not a just a concept, I have coded this have it working. I can now discover the IP address of my CC3000 device through a query method.

What I have done is use one of the CC3000 sockets as a Broadcast UDP Listener on a certain port. If it receives a broadcast packet to this certain port, it then sends a response back to the IP address that the broadcast packet came from.

Then the client application can either use the source address of the UDP packet or the data contained in the UDP packet (which contains the IP address).

This solution will only work when attempting to find a CC3000 device that is on the same subnet. 

Here is the code I use on the CC3000 device side

    // Broadcast variables
    Int         nbytesmDNS;
    Int         statusmDNS;
    Int			selectResmDNS;
    Long		lSocketmDNS;
    fd_set      readSetmDNS;
    timeval     timeoutmDNS;
    sockaddr_in sLocalAddrmDNS;
    sockaddr_in client_addrmDNS;
    sockaddr smDNSAddr;
    socklen_t   addrlenmDNS = sizeof(client_addrmDNS);

------

    /* Create broadcast socket 0.0.0.0 */
     lSocketmDNS = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
     if (lSocketmDNS == -1) {
         System_printf("socket failed\n");
         Task_exit();
     }

     int DISCOVER_PORT = 8111; //This can be any port

     smDNSAddr.sa_family = AF_INET;
     smDNSAddr.sa_data[0] = (DISCOVER_PORT & 0xFF00)>> 8;
     smDNSAddr.sa_data[1] = (DISCOVER_PORT & 0x00FF);
     smDNSAddr.sa_data[2] = 0;
     smDNSAddr.sa_data[3] = 0;
     smDNSAddr.sa_data[4] = 0;
     smDNSAddr.sa_data[5] = 0;

     statusmDNS = bind(lSocketmDNS, &smDNSAddr, sizeof(sockaddr));
	  if (statusmDNS < 0) {
		  System_printf("bind failed\n");
		  closesocket(lSocketmDNS);
		  Task_exit();
	  }

     memset(&timeoutmDNS, 0, sizeof(timeval));
     timeoutmDNS.tv_sec = 0;
     timeoutmDNS.tv_usec = 100000;

------------

			    while (flag){

			        FD_ZERO(&readSetmDNS);
			        FD_SET(lSocketmDNS, &readSetmDNS);

			        //  Calling select() before recvfrom() is currently recommended when using the CC3000
			        //  It is also a workaround for a potential race in the CC3000 internals.
			        selectResmDNS = select(lSocketmDNS + 1, &readSetmDNS, NULL, NULL, &timeoutmDNS);

			        if ((selectResmDNS > 0) && (selectResmDNS != -1)) {
			            if(FD_ISSET(lSocketmDNS, &readSetmDNS)) {
			                nbytesmDNS = recvfrom(lSocketmDNS, buffer, UDPPACKETSIZE, 0,
			                                 (sockaddr*)&client_addrmDNS, &addrlenmDNS);
			                if (nbytesmDNS > 0) {
			                    /* Echo the data back */
			                	int count;
			                	// Send a bunch of UDP response packets, as the sendto() is buggy, and does not send everytime.
								for (count=0; count < 10; count++)
								{
									sendto(lSocketmDNS, (char *)ipRecvd, sizeof((char *)ipRecvd), 0, (sockaddr*)&client_addrmDNS,
										   sizeof(client_addrmDNS));
			                	}
			                }
			                else {
			                    flag = FALSE;
			                }
			            }
			        }

This sample code will be simple to insert in the TI-RTOS UDPEcho example.

So there you have it, I welcome any feedback or opinion regarding this workaround.

Glenn.

2 questions about ADS131E08

$
0
0

Hi!

We are trying to learn and use ADS131E08 in our new device. Now question appeared 2:
1. Document SBAS561A-JUNE, 2012. Page 2. ABSOLUTE MAXIMUM RATINGS table. The string AGND to DGND -0.3 to +0.3 V. (The latest version of the row is deleted.) My question is: What limits can be at the voltage AVSS to DGND?
2. Sample chips ADS131E08, which we have, is behaving strangely. When reading the ID Control Register, 2 least significant bits of it sometimes read as 10b and sometimes as 00b. In the latest case it corresponds to the 4-channel version ADS131E04. In this case, if we try to read data stream all 8 channels, we read correct the first 4 channels only. Latest 4 channels reads as 0 (Exactly ADS131E04). This chip marking as 23AEWKWG4 ADS131E08. ID Control Register reads as 0xC0 (0xC2 - it right).

Can you help me?

WBR Sergey.

Should MSP430 linker --cinit_hold_wdt hold the watchdog around pinit as well as cinit

$
0
0

When MSP430 CGT v4.2.3 is used with the --cinit_hold_wdt set to ON the watchdog is held over the duration of cinit in the _auto_init_hold_wdt RTS function.

With a C++ application, with --cinit_hold_wdt set to ON, using std::cout the MSP430F5529 watchdog was firing during pinit, meaning main was never reached. To prevent the watchdog from firing had to add a _system_pre_init function to the project to disable the watchdog.

Is there reason why the _auto_init_hold_wdt RTS function can hold the watchdog over cinit, but not pinit?

ez430-RF2480 raw data

$
0
0

Dear friends,

I am working in my master thesis on the ez430-RF2480 kit.

Actually i modified the kit to collect and transfer  a  10 bit skin resistance valuse instead of the vltage and temperature of  ZigBee.

i recieved a data on Matlab/Simulink over a com port and i got 13 bytes of data (no.10 and 11 are my skin resistance data but the other data i don't know what does it mean?).

Please can you clarify this for me if you have any idea because of my professor asked me about that.


Best Regards,

Shaker

Error encountered during linking when trying to call filter function for filtering

$
0
0

Hi,

I am using one of the ADC channel for sampling the incoming signal and trying to filter it as described 

I got the filter coeficients using parametrs fa=3Hz,fb=8Hz,lenght=21,Fs=500Hz  in this  http://arc.id.au/FilterDesign.html .

Then added the fiter coefficients to the FIR_filter_coeff.dat file (file with new coefficients is (Please visit the site to view this file) and generated the FIR_filter.s43 using the FIR_filter_codegen tool and then migrated this FIR_filter.s43 IAR to CCS(and it looks  this txt file but with the extension .s43 (Please visit the site to view this file)   .

Later added the FIR_filter.s43(CCS) ,FIR_sine_data.dat,FIR_filter_coeff.dat to the project where the main.c is sampling the signal at sampling rate of 500Hz.

__interrupt void ADC12ISR(void)
{
if (oldest == 499)
{
oldest= 0;
}
else
{
oldest=oldest+1;
}
result=ADC12MEM0;//Store ADC12MEM0 value to result(variable)
results[oldest]=FIR_filter(result);//calling the FIR_filter function
__bic_SR_register_on_exit(CPUOFF);
}



But it is giving error like this 


Can someone explain why this error is coming as I am not sure if it is something wrong with the filter design steps.
Is it some problem with filter design steps or with the function call or something else.

Viewing all 262198 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>