Search the Community
Showing results for tags 'ISR'.
-
I'm getting this error: main.c: In function 'Timer_A': main.c:150:28: error: MSP430 builtin functions only work inside interrupt handlers __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) ^ makefile:23: recipe for target 'main.o' failed With this code: // TimerA interrupt __attribute__((__interrupt__(TIMERA0_VECTOR))) Timer_A (void) { iflag |= BIT0; // Set BIT0 flag __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) } For some reason msp430-elf-gcc thinks my ISR isn't an ISR Any ideas? I emailed one of the r
- 11 replies
-
Hello. Been lurking here for while and learning from the pro's. ;-) I have this project of doing my own RC radios with MSP430G2553 and the nRF24L01p. The problem is that when I try to go to low power mode and use a ISR driven by the IRQ pin of the nRF24L01p to wake up. I get this error "#10099-D program will not fit into available memory. placement with alignment fails for section "PORT2" size 0x4 . Available memory ranges:" If I substitute the low power mode and ISR with while loop the code compiles whit out any errors. What I understand the while loop is not the ideal way of doing it,
-
When I insert into an archive library the interrupt services does not appears into the target elf. I reproduced with a minimal gist the problem: https://gist.github.com/attdona/0ef96f41155d780f70ef The build recipe build_no_lib (mspgcc LTS 20120406 unpatched): msp430-gcc -Os -fno-strict-aliasing -g -Wall -mmcu=msp430f5438 -std=gnu99 -c -o isr.o isr.c msp430-gcc -Os -fno-strict-aliasing -g -Wall -mmcu=msp430f5438 -std=gnu99 -c -o main.o main.c msp430-gcc ./isr.o ./main.o -mmcu=msp430f5438 -o "main-nolib.elf" create the right fw (.vectors OK e ISR OK) whereas the recipe: m
-
Hey all. I'm using an msp430g2553 to output an integer to an LCD and let that integer to be modified with a rotating gray code switch. I am attempting to debounce the switch by sampling its value every 1ms for 5ms (5 samples) each time the switch interrupt fires. I am trying to accomplish this with the following code: for(i=0; i<SAMPLE_NUM; i++) { ms=0; while(ms==0) { //do nothing until at least 1 ms has elapsed } gray0_val = P2IN&GRAY0; //latch current port pin values gray1_val = P2IN&GRAY1; The issue is at line 2-3 where I re
-
I am trying to detect the width of a pulse signal (that should be anywhere from 1ms to 20ms wide) using two ISRs on the MSP430G2553. One ISR is triggered by the rising edge, and the other by the falling edge. The first ISR reads micros() and stores the value in a variable called Time1. The second ISR reads micros() and stores the value in a variable called Time2. The pulse width of the signal is equal to Time2-Time1. The problem is, Time1 and Time2 always end up being equal, even though they are read in two different ISRs on two separate signal edges-- this should be impossible. Any
- 4 replies
-
- Energia
- MSP4302553
- (and 4 more)