|
PIC24 Support Libraries
|
#include "pic24_util.h"#include "pic24_serial.h"#include "pic24_clockfreq.h"#include "pic24_ports.h"#include "pic24_delay.h"#include <stdio.h>Go to the source code of this file.
Macros | |
| #define | u16_INTTREGlast BITS2WORD(INTTREGBITS_last) |
Functions | |
| void _ISR | _DefaultInterrupt (void) |
| void | reportError (const char *sz_errorMessage) |
| uint32_t | readProgramMemory (uint32_t u32_address) |
| void | checkDeviceAndRevision (void) |
| void | checkOscOption (void) |
| void | printResetCause (void) |
| void | configPinsForLowPower (void) |
| void | configBasic (const char *sz_helloMsg) |
| uint32_t | roundFloatToUint32 (float f_x) |
| uint16_t | roundFloatToUint16 (float f_x) |
Variables | |
| static _PERSISTENT const char * | sz_lastError |
| _PERSISTENT const char * | sz_lastTimeoutError |
| static _PERSISTENT INTTREGBITS | INTTREGBITS_last |
Heartbeat | |
These routines provide heartbeat support by blinking a LED on a regular basis. See doHeartbeat() for more information. | |
| uint32_t | u32_heartbeatCount |
| static uint32_t | u32_heartbeatMax |
| void | configHeartbeat (void) |
| void | doHeartbeat (void) |
| void | toggleHeartbeat (void) |
This file contains implmentations for functions prototyped in pic24_util.h.
Definition in file pic24_util.c.
| #define u16_INTTREGlast BITS2WORD(INTTREGBITS_last) |
Make the INTTREGBITS_last also accessible as a word. This is like uint16_t u16_INTTREGlast except that INTTREGBITS_last and u16_INTTREGlast refer to the same data.
Definition at line 139 of file pic24_util.c.
Referenced by _DefaultInterrupt(), and printResetCause().
| void _ISR _DefaultInterrupt | ( | void | ) |
Provide a default interrupt handler which records what interrupt was not handled then resets the chip. Typically, a call to printResetCause during chip startup will then print the error.
Definition at line 149 of file pic24_util.c.
| void checkDeviceAndRevision | ( | void | ) |
Determines the device and revision of the PIC this program is executing on. This information is then output via the default UART. A warning message is issued if this program was not compiled for the chip it is running on.
Definition at line 195 of file pic24_util.c.
Referenced by printResetCause().
| void checkOscOption | ( | void | ) |
Reports the oscillator currently in use to the default serial port.
Definition at line 266 of file pic24_util.c.
Referenced by printResetCause().
| void configBasic | ( | const char * | sz_helloMsg) |
Perform basic chip configuration:
| sz_helloMsg | Hello message to print. |
Definition at line 501 of file pic24_util.c.
Referenced by main().
| void configHeartbeat | ( | void | ) |
Configures a GPIO pin for use with the heartbeat and sets up the heartbeat counter.
Definition at line 81 of file pic24_util.c.
Referenced by configBasic(), and main().
| void configPinsForLowPower | ( | void | ) |
This function puts the PIC24 in low-power mode by:
WARNING: if pullups are enabled on pins used by the oscillator, the clock typically stops running. Currently, this code works for demo purposes with the FRC oscillator when used in the reset.c program. It should also work with primary and secondary oscillators, using conditional compiles in the code.
Definition at line 487 of file pic24_util.c.
Referenced by main().
| void doHeartbeat | ( | void | ) |
This heartbeat function should be called repeatedly in any sort of blocking wait loop. It will periodically toggle an LED after u32_heartbeatMax increments.
Definition at line 97 of file pic24_util.c.
Referenced by configHeartbeat(), doErasePageFlash(), doWriteRowFlash(), inChar1(), ioMasterSPI1(), main(), outChar1(), WAIT_UNTIL_CONVERSION_COMPLETE_ADC1(), and WAIT_UNTIL_TRANSMIT_COMPLETE_UART1().
| void printResetCause | ( | void | ) |
Determines and prints the cause of a CPU reset. This should be called when the chip first starts up. For an example, see the configBasic function.
Definition at line 313 of file pic24_util.c.
Referenced by configBasic(), and main().
Reads a 24-bit program memory word at the given address.
| u32_address | Address of program memory to read. |
Definition at line 183 of file pic24_util.c.
Referenced by checkDeviceAndRevision().
| void reportError | ( | const char * | sz_errorMessage) |
Report a critical error by recording a message in sz_lastError then resetting the chip, assuming hat printResetCause will be called during chip initialization.
| sz_errorMessage | Error message to report. |
Definition at line 170 of file pic24_util.c.
Referenced by _DefaultInterrupt(), checkOscOption(), checkRxErrorUART1(), picAssert(), and putI2C1().
| uint16_t roundFloatToUint16 | ( | float | f_x) |
Round a floating-point number to the nearest integer.
| f_x | Floating-point value to round |
Definition at line 526 of file pic24_util.c.
Referenced by configUART1(), msToU16Ticks(), and usToU16Ticks().
| uint32_t roundFloatToUint32 | ( | float | f_x) |
Round a floating-point number to the nearest integer.
| f_x | Floating-point value to round |
Definition at line 514 of file pic24_util.c.
Referenced by ticksToMs(), ticksToNs(), ticksToUs(), and usToU32Ticks().
| void toggleHeartbeat | ( | void | ) |
A function which toggles the hearbeat LED.
Definition at line 109 of file pic24_util.c.
Referenced by doHeartbeat().
|
static |
Store a copy of the INTTREG register as a bitfield. This is not defined for the PIC24F, so work around with an #ifdef. This is _PERSISTENT so that it survives the resets which occurs immeidately after the default interrupt handler _DefaultInterrupt copies INTTREG to this variable.
Definition at line 133 of file pic24_util.c.
Referenced by printResetCause().
|
static |
Persistent storage for an error message, typically set by reportError and reported at reset by printResetCause.
Definition at line 119 of file pic24_util.c.
Referenced by printResetCause(), and reportError().
| _PERSISTENT const char* sz_lastTimeoutError |
Persistent storage for a timeout error, to be reported if a watchdog reset occurs.
Definition at line 123 of file pic24_util.c.
Referenced by convertADC1(), getI2C1(), printResetCause(), putI2C1(), putNoAckCheckI2C1(), rstartI2C1(), startI2C1(), and stopI2C1().
| uint32_t u32_heartbeatCount |
The current heartbeat count. When this value reaches u32_heartbeatMax, the heatbeat LED is toggled by doHeartbeat().
Definition at line 70 of file pic24_util.c.
Referenced by configHeartbeat(), delayAndUpdateHeartbeatCount(), and doHeartbeat().
|
static |
When u32_heartbeatCount reaches this maximum, the heatbeat LED is toggled by doHeartbeat().
Definition at line 74 of file pic24_util.c.
Referenced by configHeartbeat(), and doHeartbeat().
1.8.4