can kursus stellarisware
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 PresentationTRANSCRIPT
Mikk LeiniTTÜ Robotiklubi
Texas Instruments(endine Luminary Micro)Stellaris-seeria mikrokontrollerite programeerimise liides (API)
C-keeles IAR, GCC (CodeSourcery) ja Keil kompilaatoritele
Programmeerimise lihtsustamiseks ja kiirendamiseks
Assemblersbi 0x2000h 0x01
C*(0x2000) |= 0x01;
C APISetBit(PORTA, PIN1)
System Control Interrupt Controller GPIO ADC System Tick
Kogu MCU perifeeria kasutamise API.Asub: C:\StellarisWare\driverlib
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);
Katkestuste lubamine, keelamine ja prioriteedide seadistamine
//// Port A väliste katkestuste lubamine//IntEnable(INT_GPIOA);
//// Globaalne katkestuste lubamine//IntMasterEnable();
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);
//// 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) …
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);
//// 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);
}
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();
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);
32 postkasti sõnumi objektidele
TCANMsgObject{
unsigned long ulMsgID;unsigned long ulMsgIDMask;unsigned long ulFlags;unsigned long ulMsgLen;unsigned char *pucMsgData;
}
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);
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);
#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}
„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