December 26, 2015

CC3200 Launchpad UART Interrupt handling

For enabling and using UART in CC3200 using SDK without interrupt, visit CC3200 Launchpad - Enabling UART.

If you are having problem with simple UART transaction, please go through the above mentioned post and come back to learn interrupt handling.

There are only a very few more steps to enable and using Interrupt handler for UART. This should be considered as continuation of the above mentioned post.

All the APIs below are prefixe 'MAP_'. But, it can also be used without the prefix. But, prefix is recommended to reduce the size of the binary by mapping the APIs pre-written on the internal ROM chip.

//To enable the Global Interrupt
MAP_IntEnable(FAULT_SYSTICK);

Enabling the global interrupt will make all the unmasked peripheral interrupt to be visible to the interrupt controller.

//Registers a handler for UART1 interrupt                                  
MAP_UARTIntRegister(UARTA1_BASE, UART1_IntHandler);

Registers the interrupt handler with the name given by the second parameter for the UART1. The interrupt handler shall contain the ISR to be run on occurrence of the interrupt.
//Enables interrupt for UART1
MAP_UARTIntEnable(UARTA1_BASE, UART_INT_RX | UART_INT_RT);

The above API unmasks the individual UART interrupts as given by the second parameter. The second parameter can be OR'd value of any or all possible interrupt sources. Here, the macro UART_INT_RX refers to the interrupt on reception of a data at the RX register. UART_INT_RT refers to the Receive timeout interrupt which occurs after pre-defined timeout after the reception of data. Transmit interrupt can also be enabled by OR'ing UART_INT_TX macro. The TIs CC3200 comes with 8 byte Transmit and Receive FIFO to help buffering of serially sent or received data. It also can help reduce the frequency of interrupt.

The Interrupt handler should use the same name as registered with UARTIntRegister as follows.

//Interrupt handler
void UART1_IntHandler() {
  unsigned char ch;

  while((ch = MAP_UARTCharGetNonBlocking(UARTA1_BASE) != -1) {
    chararray[i++] = ch;
  }

}

Disclaimer:
The above article doesn't give you any guarantee and the sole purpose of this article is to share my learning in the way I understood. Any comments to refine this article are welcome with great pleasure. Please report any breaking link by commenting below.

No comments:

Post a Comment

Comment will be published after moderation only. Do not advertise here.

Receive all updates via Facebook. Just Click the Like Button Below

You can also receive Free Email Updates:

dgpride - Study Zone - Free Books - Tamil Lyrics

Copyright © 2008 -2012 dgpride. All rights reserved.

Subject/Topics

2 Marks (26) 8051 (1) AC Machines (7) Animations (1) Anna University Chennai (31) Arduino (4) ARM (3) Audio (1) Basic C Concepts (8) Basic Electronics (13) Basic principles (9) Book list (1) CAD (1) Chemical (2) Circuit theory (6) Civil (2) Cloud Computing (1) Communication (4) Competitive exams (2) Computer Architecture (4) Control system and components (9) CSE (40) Curriculum (4) DC Machines (9) Did you know (14) Digital (13) DLC (4) Documentation (1) DSP (1) EC 2201 (3) ECE (45) EDC (1) EEE (34) EIE (63) Electrical (35) Electronics (43) Electroplating (2) Emacs (1) Embedded basics (19) Embedded C Programming (19) Embedded Linux (5) Embedded System (22) Engineering basics (15) Environmental Science (1) Fibre Optics (1) Filters (2) FPGA (1) GATE (3) General (7) GNU (4) Handwritten (1) Hobbyist (15) How to (8) HTML (3) Humanities (2) IC Engines (7) ICE (5) Industrial Electronics (10) Industrial Instrumentatin (2) industrial process (2) Instrumentation (21) IoT (2) IT (2) Laboratory Manuals (17) LabVIEW (2) Lesson notes (2) LIC (2) Links (9) Linux (8) Magnetics (1) Management (1) Mechanical (5) Mechatronics (9) Microcontrollers (14) Microprocessors (9) Microsoft (1) Motivation (1) Must Know (11) Networks (1) NuttX (1) Objective type (1) Open Source (1) Opportunities (7) Oscillators (2) Part Time (1) Physics (1) Post Graduation (1) Power Electronics (12) Power Plant Engineering (2) Power Supplies (2) Previous GATE Papers (1) Process Control (2) Project (4) Protocol (1) R2008 (11) R2009 (1) R2013 (1) Recruitment (2) Research (2) Robotics (9) RTOS (3) Signal Processing (8) Signals and Systems (4) SMPS (1) Software tutorial (4) Stepper Motor (2) Syllabus (5) Texas Instruments (2) Thermodynamics (2) Training and Placement (6) Transducer Engineering (2) Transformer (2) Transmission (1) Tutorials (48) Two Marks (26) U-Boot (1) University Question Papers (16) Verilog (1) Video (4) Virtual Instrumentation (3) Visual Basic (21) VLSI (11) Web designing (4) Wi-Fi (3) Wireless (6)