OpenCores
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.