can kursus stellarisware

24
Mikk Leini TTÜ Robotiklubi

Upload: rhoda

Post on 16-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Mikk Leini TTÜ Robotiklubi. CAN kursus StellarisWare. Texas Instruments StellarisWare. Texas Instruments (endine Luminary Micro) Stellaris-seeria mikrokontrollerite programeerimise liides (API) C-keeles IAR, GCC (CodeSourcery) ja Keil kompilaatoritele - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CAN kursus StellarisWare

Mikk LeiniTTÜ Robotiklubi

Page 2: CAN kursus StellarisWare

Texas Instruments(endine Luminary Micro)Stellaris-seeria mikrokontrollerite programeerimise liides (API)

C-keeles IAR, GCC (CodeSourcery) ja Keil kompilaatoritele

Programmeerimise lihtsustamiseks ja kiirendamiseks

Page 3: CAN kursus StellarisWare
Page 4: CAN kursus StellarisWare

Assemblersbi 0x2000h 0x01

C*(0x2000) |= 0x01;

C APISetBit(PORTA, PIN1)

Page 5: CAN kursus StellarisWare

System Control Interrupt Controller GPIO ADC System Tick

Kogu MCU perifeeria kasutamise API.Asub: C:\StellarisWare\driverlib

Page 6: CAN kursus StellarisWare

CPU töörežiimide, pinge, töötakti ja perifeeria seadistamiseks

//// 50 MHz takt PLL-ist//SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);

//// Port A lubamine//SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

Page 7: CAN kursus StellarisWare
Page 8: CAN kursus StellarisWare

Katkestuste lubamine, keelamine ja prioriteedide seadistamine

//// Port A väliste katkestuste lubamine//IntEnable(INT_GPIOA);

//// Globaalne katkestuste lubamine//IntMasterEnable();

Page 9: CAN kursus StellarisWare
Page 10: CAN kursus StellarisWare

IO siinide režiimi valik, seadistamine, kirjutamine ja lugemine. Katkestuste seadistamine.

//// Port A viikude 0 ja 1 väljundiks määramine//GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

//// Port A viigu 0 kõrgeks ja 1 madalaks määramine//GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_0);

Page 11: CAN kursus StellarisWare

//// Port A viigu 2 sisendiks määramine// voolu piiramine ja nõrga pull-up takisti lisamine//GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2,

GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);

//// Port A viigu 2 oleku lugemine//unsigned int x = GPIOPinRead(GPIO_PORTA_BASE, 0xFF)

//// Oleku kontroll//if (x == GPIO_PIN_2) …

Page 12: CAN kursus StellarisWare
Page 13: CAN kursus StellarisWare

10 bit ADC. 4 programeeritavat järjestajat. Erinevad käivitusmehhanismid. Riistvaraline ümardus ja kiiruse seadistus.//// Järjestik-muunduri 0 seadistamine 3 kanali peale//ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH2);ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH3);ADCSequenceEnable(ADC0_BASE, 0);

//// Käivitamine//ADCProcessorTrigger(ADC0_BASE, 0);

Page 14: CAN kursus StellarisWare

//// ADC katkestus//void ADCIntHandler(void){

unsigned long ulValues[2];

//// ADC katkestuse lipukese kustutamine//ADCIntClear(ADC0_BASE, 0);

//// Sämplite lugemine FIFO puhvrist//ADCSequenceDataGet(ADC0_BASE, 0, ulValues);

}

Page 15: CAN kursus StellarisWare
Page 16: CAN kursus StellarisWare

Cortex M3 CPU sisemine taimer. Operatsioonisüsteemi jaoks. Määratav periood CPU taktides.

//// Taimeri seadistamine 1 ms perioodi peale,// katkestuste lubamine ja käivitamine//SysTickPeriodSet(SysCtlClockGet() / 1000);SysTickIntEnable();SysTickEnable();

Page 17: CAN kursus StellarisWare
Page 18: CAN kursus StellarisWare
Page 19: CAN kursus StellarisWare

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD;SysCtlPeripheralEnable(SYSCTL_PERIPH_CAN0);

GPIOPinTypeCAN(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1);

CANInit(CAN0_BASE);CANBitRateSet(CAN0_BASE, SysCtlClockGet(), 250000);CANEnable(CAN0_BASE);

Page 20: CAN kursus StellarisWare

32 postkasti sõnumi objektidele

TCANMsgObject{

unsigned long ulMsgID;unsigned long ulMsgIDMask;unsigned long ulFlags;unsigned long ulMsgLen;unsigned char *pucMsgData;

}

Page 21: CAN kursus StellarisWare

tCANMsgObject psTxMsg;unsigned char pucTxData[4];

psTxMsg.ulMsgID = 0x01;psTxMsg.ulFlags = MSG_OBJ_NO_FLAGS;psTxMsg.ulMsgLen = 4;psTxMsg.pucMsgData = pucTxData;

CANMessageSet(CAN0_BASE, 1, &psTxMsg, MSG_OBJ_TYPE_TX);

Page 22: CAN kursus StellarisWare

tCANMsgObject psRxMsg;unsigned char pucRxData[4];

psRxMsg.ulMsgID = 0x01;psRxMsg.ulMsgIDMask = 0x7FE;psRxMsg.ulFlags = MSG_OBJ_NO_FLAGS;psRxMsg.ulMsgLen = 4;psRxMsg.pucMsgData = pucRxData;

CANMessageSet(CAN0_BASE, 4, &psRxMsg, MSG_OBJ_TYPE_RX);

Page 23: CAN kursus StellarisWare

#define RX_BOX 4#define RX_BOX_MASK(nr) (1 << (nr - 1))

if (CANStatusGet(CAN0_BASE, CAN_STS_NEWDAT) & RX_BOX_MASK(RX_BOX)){

CANMessageGet(CAN0_BASE, RX_BOX, &psRxMsg, true);

// todo - pucRxData}

Page 24: CAN kursus StellarisWare

„Saatmist“ ja „Vastu võtmist“ teostab MCU CAN kontroller. Kasutaja saab vaid kontrolleri tööd seadistada.

Extended ID kasutamiseks peab sõnumiulFlags MSG_OBJ_EXTENDED_ID lipp seatud olema