remove file not for the CC3220
This commit is contained in:
parent
3682c12d5e
commit
44d2cfc70d
112
msp430/main.c
112
msp430/main.c
@ -1,112 +0,0 @@
|
|||||||
#include <msp430.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define READBUFFER_LEN 10
|
|
||||||
#define WRITEBUFFER_LEN 10
|
|
||||||
|
|
||||||
// this buffers store the the receved and send data
|
|
||||||
unsigned char ReadBuffer[READBUFFER_LEN];
|
|
||||||
unsigned char WriteBuffer[WRITEBUFFER_LEN];
|
|
||||||
|
|
||||||
// the pointers are used to remenber the location it was on the buffer
|
|
||||||
unsigned char *ReadBuffer_p = &ReadBuffer[0];
|
|
||||||
unsigned char *WriteBuffer_p = &WriteBuffer[0];
|
|
||||||
|
|
||||||
// if it finisched receving/sending a packet this wil become true
|
|
||||||
bool NewPacket = false;
|
|
||||||
|
|
||||||
enum {SLEEP, WRITE, READ} State;
|
|
||||||
typedef enum {} PacketID_t; //TODO: add packet ids
|
|
||||||
|
|
||||||
void Setup(void);
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
|
||||||
|
|
||||||
P1SEL |= BIT6 + BIT7; // Assign I2C pins to USCI_B0
|
|
||||||
P1SEL2|= BIT6 + BIT7; // Assign I2C pins to USCI_B0
|
|
||||||
|
|
||||||
Setup();
|
|
||||||
State = SLEEP;
|
|
||||||
|
|
||||||
while(1){
|
|
||||||
while(!NewPacket){
|
|
||||||
//TODO: add sleep mode
|
|
||||||
}
|
|
||||||
|
|
||||||
__disable_interrupt(); // don't want the interupt to destoy you beautiful packet
|
|
||||||
NewPacket = false; // recet new packet flag
|
|
||||||
uint8_t bytesReceved = ReadBuffer_p - &ReadBuffer[0];
|
|
||||||
uint8_t data[READBUFFER_LEN];
|
|
||||||
|
|
||||||
// copy data from the buffer used for the communication so it can receve the next packet
|
|
||||||
memcpy(&data[0], &ReadBuffer[0], bytesReceved);
|
|
||||||
|
|
||||||
__enable_interrupt(); // data is save
|
|
||||||
|
|
||||||
switch (data[0]){
|
|
||||||
case /* packet id */:
|
|
||||||
/* read packet */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Deze interrupt is beide voor RXIFG en TXIFG.
|
|
||||||
* Dus vlaggetjes bekijken om te zien wat er gebeurd
|
|
||||||
*/
|
|
||||||
#pragma vector = USCIAB0TX_VECTOR
|
|
||||||
__interrupt void USCIAB0TX_ISR(void)
|
|
||||||
{
|
|
||||||
if(IFG2 & UCB0TXIFG && State == WRITE){
|
|
||||||
// Read data from I2C
|
|
||||||
UCB0TXBUF = *WriteBuffer_p;
|
|
||||||
WriteBuffer_p++;
|
|
||||||
if(WriteBuffer_p > &WriteBuffer[WRITEBUFFER_LEN]){
|
|
||||||
State = SLEEP;
|
|
||||||
NewPacket = true;
|
|
||||||
}
|
|
||||||
}else if(IFG2 & UCB0RXIFG && State == READ){
|
|
||||||
// Write data to I2C
|
|
||||||
*ReadBuffer_p = UCB0RXBUF;
|
|
||||||
ReadBuffer_p++;
|
|
||||||
if(ReadBuffer_p > &ReadBuffer[READBUFFER_LEN]){
|
|
||||||
State = WRITE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Hier krijgen we de start/stop condities
|
|
||||||
*/
|
|
||||||
#pragma vector = USCIAB0RX_VECTOR
|
|
||||||
__interrupt void USCIAB0RX_ISR(void)
|
|
||||||
{
|
|
||||||
if(UCB0STAT & UCSTTIFG){
|
|
||||||
// start signaal ontvangen
|
|
||||||
State = READ;
|
|
||||||
// reset pointers
|
|
||||||
WriteBuffer_p = &WriteBuffer[0];
|
|
||||||
ReadBuffer_p = &ReadBuffer[0];
|
|
||||||
}else if(UCB0STAT & UCSTPIFG){
|
|
||||||
// stop signaal, klaar met transactie
|
|
||||||
State = SLEEP;
|
|
||||||
NewPacket = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear interrupt flags
|
|
||||||
UCB0STAT &= ~(UCSTPIFG + UCSTTIFG);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Setup(void){
|
|
||||||
__disable_interrupt();
|
|
||||||
UCB0CTL1 |= UCSWRST; // reset
|
|
||||||
UCB0CTL0 = UCMODE_3 + UCSYNC; // I2C Slave, synchronous mode
|
|
||||||
UCB0I2COA = 0x48; // eigen slave adres is 048h
|
|
||||||
UCB0CTL1 &= ~UCSWRST; // reset uit
|
|
||||||
UCB0I2CIE |= UCSTPIE + UCSTTIE; // detectie voor start en stop
|
|
||||||
IE2 |= UCB0RXIE | UCB0TXIE; // interrupts aan
|
|
||||||
__enable_interrupt();
|
|
||||||
}
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
# MPPT test
|
|
||||||
|
|
||||||
De MPPT test wordt grootendeels handmatig uitgevoerdt. Er wordt een arduino gebruikt om de initalisatie te starten.
|
|
||||||
|
|
||||||
## setup
|
|
||||||
|
|
||||||
### CC3220S
|
|
||||||
|
|
||||||
In debugmode met de orginaile code.
|
|
||||||
|
|
||||||
#### breakboints
|
|
||||||
|
|
||||||
* mppt.c: mppt_start(): last usleep
|
|
||||||
|
|
||||||
### Arduino
|
|
||||||
|
|
||||||
De arduino wordt gebuikt voor het simuleeren van de volgende signaalen:
|
|
||||||
|
|
||||||
* start initialisatie
|
|
||||||
* start
|
|
||||||
* SPI (direct naar de CC3220S ipv met I2C via de MSP)
|
|
||||||
|
|
||||||
### dingen die gemeten worden
|
|
||||||
|
|
||||||
* vermogen uit de motor
|
|
||||||
* PWM signaal
|
|
||||||
@ -1,139 +0,0 @@
|
|||||||
#include <Wire.h>
|
|
||||||
#include <SPI.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define I2C Wire
|
|
||||||
|
|
||||||
#define startInit_PIN 9
|
|
||||||
#define startSys_PIN 8
|
|
||||||
#define ready_PIN 7
|
|
||||||
#define noodstop_PIN 6
|
|
||||||
|
|
||||||
#define CSK_PIN 13
|
|
||||||
#define MISO_PIN 12
|
|
||||||
#define MOSI_PIN 11
|
|
||||||
#define CSMSP_PIN 10
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
SPIPARM_maxVermogen,
|
|
||||||
SPIPARM_maxSnelheid,
|
|
||||||
SPIPARM_maxTemperatuur,
|
|
||||||
SPIPARM_setpoint,
|
|
||||||
SPIPARM_vermogen,
|
|
||||||
SPIPARM_snelheid,
|
|
||||||
SPIPARM_temperatuur,
|
|
||||||
SPIPARM_count
|
|
||||||
} SPI_Register_t;
|
|
||||||
uint8_t SPI_RxBuffer[4];
|
|
||||||
uint8_t * SPI_TxBuffer;
|
|
||||||
uint8_t SPI_Params[SPIPARM_count][2];
|
|
||||||
uint8_t pos;
|
|
||||||
|
|
||||||
void setSetpoint(uint8_t v){
|
|
||||||
SPI_Params[SPIPARM_setpoint][0] = v;
|
|
||||||
}
|
|
||||||
void setMaxVermogen(uint8_t v){
|
|
||||||
SPI_Params[SPIPARM_maxVermogen][0] = v;
|
|
||||||
}
|
|
||||||
void setMaxTemperatuur(uint8_t v){
|
|
||||||
SPI_Params[SPIPARM_maxTemperatuur][0] = v;
|
|
||||||
}
|
|
||||||
void setMaxSnelheid(uint16_t v){
|
|
||||||
SPI_Params[SPIPARM_maxSnelheid][0] = v & 0x0FF;
|
|
||||||
SPI_Params[SPIPARM_maxSnelheid][1] = v > 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setup(){
|
|
||||||
Serial.begin(115200);
|
|
||||||
Serial.println("The Fantastic Five - Belasting regelaar - MPPT Test");
|
|
||||||
Serial.println("Init Arduino");
|
|
||||||
|
|
||||||
// init GPIO
|
|
||||||
pinMode(noodstop_PIN, INPUT);
|
|
||||||
digitalWrite(startInit_PIN, LOW);
|
|
||||||
pinMode(startInit_PIN, OUTPUT);
|
|
||||||
digitalWrite(startSys_PIN, LOW);
|
|
||||||
pinMode(startSys_PIN, OUTPUT);
|
|
||||||
|
|
||||||
// init I2C
|
|
||||||
I2C.begin();
|
|
||||||
|
|
||||||
// init SPI
|
|
||||||
pinMode(MISO_PIN, OUTPUT);
|
|
||||||
SPCR |= _BV(SPE); // set SPI in slave mode
|
|
||||||
SPI.attachInterrupt();
|
|
||||||
|
|
||||||
Serial.println("Init CC3220S");
|
|
||||||
|
|
||||||
// set all SPI params to 0
|
|
||||||
memset(&SPI_Params[0][0], 0x00, sizeof(SPI_Params));
|
|
||||||
|
|
||||||
// set max limits
|
|
||||||
setMaxVermogen(250); // deci watts; 0 to 250
|
|
||||||
setMaxTemperatuur(120); // deg c; 60 to 120
|
|
||||||
setMaxSnelheid(60000); // RPM; 0 to 60000
|
|
||||||
|
|
||||||
// set inital setpoint
|
|
||||||
setSetpoint(50); // deci watt; 0 to 250
|
|
||||||
|
|
||||||
// trigger the initalisation
|
|
||||||
digitalWrite(startInit_PIN, HIGH);
|
|
||||||
|
|
||||||
// sync paramaters until the CC3220S is ready
|
|
||||||
uint16_t timer = millis();
|
|
||||||
while(!digitalRead(ready_PIN)){
|
|
||||||
spiRun();
|
|
||||||
}
|
|
||||||
|
|
||||||
Serial.println("Start CC3220S");
|
|
||||||
|
|
||||||
// start the system
|
|
||||||
digitalWrite(startSys_PIN, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
ISR(SPI_STC_vect){
|
|
||||||
SPI_RxBuffer[pos] = SPDR;
|
|
||||||
if(pos == 0)
|
|
||||||
SPDR = *(SPI_TxBuffer);
|
|
||||||
else
|
|
||||||
SPDR = *(SPI_TxBuffer + 1);
|
|
||||||
pos--;
|
|
||||||
}
|
|
||||||
|
|
||||||
void spiRun(){
|
|
||||||
while(pos == 3)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
SPI_TxBuffer = &SPI_Params[SPI_RxBuffer[3]][0];
|
|
||||||
|
|
||||||
while(!digitalRead(CSMSP_PIN))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
pos = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop(){
|
|
||||||
spiRun();
|
|
||||||
|
|
||||||
switch(SPI_RxBuffer[3]){
|
|
||||||
case SPIPARM_vermogen:
|
|
||||||
Serial.print("vermogen: ");
|
|
||||||
Serial.print(SPI_RxBuffer[1], DEC);
|
|
||||||
Serial.println(" deci watt");
|
|
||||||
if(SPI_RxBuffer[1] > 3 == SPI_Params[SPIPARM_setpoint][0] > 3){
|
|
||||||
Serial.println("reached setpoint :)");
|
|
||||||
setSetpoint((SPI_Params[SPIPARM_setpoint][0] == 50) ? 100 : 50);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SPIPARM_snelheid:
|
|
||||||
Serial.print("snelheid: ");
|
|
||||||
Serial.print(SPI_RxBuffer[1] + SPI_RxBuffer[0]*0x100, DEC);
|
|
||||||
Serial.println(" RPM");
|
|
||||||
break;
|
|
||||||
case SPIPARM_temperatuur:
|
|
||||||
Serial.print("temperatuur: ");
|
|
||||||
Serial.print(SPI_RxBuffer[1], DEC);
|
|
||||||
Serial.println(" dec c");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
# pinout Arduino
|
|
||||||
|
|
||||||
## GPIO
|
|
||||||
|
|
||||||
| lable | pin |
|
|
||||||
|------------|----:|
|
|
||||||
| start init | 9 |
|
|
||||||
| start sys | 8 |
|
|
||||||
| ready | 7 |
|
|
||||||
| noodstop | 6 |
|
|
||||||
|
|
||||||
## I2C
|
|
||||||
|
|
||||||
| lable | pin |
|
|
||||||
|-------|----:|
|
|
||||||
| SDA | A4 |
|
|
||||||
| SCL | A5 |
|
|
||||||
|
|
||||||
## SPI
|
|
||||||
|
|
||||||
| lable | pin |
|
|
||||||
|--------|----:|
|
|
||||||
| CSK | 13 |
|
|
||||||
| MISO | 12 |
|
|
||||||
| MOSI | 11 |
|
|
||||||
| CS MSP | 10 |
|
|
||||||
Loading…
x
Reference in New Issue
Block a user