URL
https://opencores.org/ocsvn/openmsp430/openmsp430/trunk
Subversion Repositories openmsp430
Compare Revisions
- This comparison shows the changes necessary to convert path
/openmsp430/trunk/fpga/xilinx_diligent_s3board/software
- from Rev 143 to Rev 153
- ↔ Reverse comparison
Rev 143 → Rev 153
/ta_uart/main.c
9,6 → 9,8
#include "swuart.h" |
//#include "fll.h" |
|
volatile int rxdata; |
|
/** |
Delay function. |
*/ |
45,8 → 47,8
|
P3DIR = 0xff; |
P3OUT = 0xff; //light LED during init |
delay(65535); //Wait for watch crystal startup |
delay(65535); |
// delay(65535); //Wait for watch crystal startup |
delay(10); |
// fllInit(); //Init FLL to desired frequency using the 32k768 cystal as reference. |
P3OUT = 0x00; //switch off LED |
|
87,9 → 89,9
case '\b': |
if (pos > 0) { //is there a char to delete? |
pos--; //remove it in buffer |
putchar('\b'); //go back |
putchar(' '); //erase on screen |
putchar('\b'); //go back |
putchar((int)'\b'); //go back |
putchar((int)' '); //erase on screen |
putchar((int)'\b'); //go back |
} |
break; |
//other characters |
97,7 → 99,7
//only store characters if buffer has space |
if (pos < sizeof(buf)) { |
putchar(rxdata); //echo |
buf[pos++] = rxdata; //store |
buf[pos++] = (char)rxdata; //store |
} |
} |
} |
104,3 → 106,13
} |
} |
|
interrupt (TIMERA0_VECTOR) INT_ccr0(void) { |
|
int rx_done; |
rx_done = ccr0(); |
|
if (rx_done!=-1) { |
LPM0_EXIT; |
rxdata = rx_done; |
} |
} |
/ta_uart/swuart.s
3,13 → 3,12
|
;variables |
.data |
.comm rxdata,1,1 ;char var |
; .comm rxdata,1,1 ;char var |
.comm rxshift,1,1 ;char var |
.comm rxbit,2,2 ;short var, aligned |
|
.text |
|
vector_0x0012: |
;interrupt(TIMERA0_VECTOR) ;register interrupt vector |
;interrupt handler to receive as Timer_A UART |
.global ccr0 ;place a label afterwards so |
30,13 → 29,15
rrc.b &rxshift ;and save it |
clr &rxbit ;reset state |
mov #CCIE|CAP|CM_2|CCIS_1|SCS, &CCTL0 ;restore capture mode |
mov.b &rxshift, &rxdata ;copy received data |
bic #CPUOFF|OSCOFF|SCG0|SCG1, 0(r1) ;exit all lowpower modes |
; mov.b &rxshift, &rxdata ;copy received data |
; bic #CPUOFF|OSCOFF|SCG0|SCG1, 0(r1) ;exit all lowpower modes |
;here you might do other things too, like setting a flag |
;that the wakeup comes from the Timer_A UART. however |
;it should not take longer than one bit time, otherwise |
;charcetrs will be lost. |
reti |
; reti |
mov.b &rxshift, r15 ;return received data |
ret |
|
.Lrxstart: ;startbit, init |
clr &rxshift ;clear input buffer |
49,8 → 50,10
rrc.b &rxshift ;rotate in databit |
|
.Lrxex: add #BAUD, &CCR0 ;one bit delay |
incd &rxbit ;setup next state |
reti |
incd &rxbit ;setup next state |
; reti |
mov #0xffff, r15 ;return 0xffff |
ret |
|
; void serPutc(char) |
;use an other Capture/Compare than for receiving (full duplex). |
/ta_uart/swuart.h
2,5 → 2,6
#define SWUART_H |
|
void serPutc(char); //send one character over timer_a uart |
extern char rxdata; |
int ccr0(); |
//extern char rxdata; |
#endif //SWUART_H |