I am rewriting some old code for an ATmega32M1. I would like to reuse some of this old code. In one place, the previous author has written:
Hard_reset(); // wait for watchdog to timeout
This Hard_reset(); is a macro defined in another file, and does exactly what the comment says: enable the watchdog and then enter an infinite loop. This included file is atmegaxxm1c1_drv.h, and its comments make it look like it is an official Atmel library header written in 2009 by a fellow named jtellier.
So far, no problems. But this file has been included separately, with an #include "atmegaxxm1c1_drv.h" referencing a version of this file that has been copied into the project's master directory. I'm not a huge expert in these matters, but this looks to me like a device-specific header that should be included under another, generic file; like how I don't need to include <avr/iom32m1.h> because <avr/io.h> includes it for me.
The problem is, I can't find what that header file is! I have searched through all the files on my PC, and the only time that file shows up is in this project - I would have expected it to also be included with the other AVR header files. I have searched for it on the interwebs, and Google manages to find one (1) single result - a download from some questionable-looking Chinese website (which, knowing who wrote this code, is probably where it came from initially... ).
My question is: Where does this file come from? How is this file supposed to be included?
Edit:
StackOverflow does not allow attaching files to questions, but I thought it would be helpful to post the introductory comment from the file. All other documentation within the file is about how the functions within it should be used.
//******************************************************************************
//! @file $RCSfile: atmegaxxm1c1_drv.h,v $
//!
//! Copyright (c) 2009 Atmel.
//!
//! Use of this program is subject to Atmel's End User License Agreement.
//! Please read file license.txt for copyright notice.
//!
//! @brief This file gives reference information about the intrinsic
//! functions of AT9megaxxM1/C1 devices. These functions provide direct
//! access to low-level processor operations.
//!
//! This file has been validated with:
//! - AVRStudio 4.15.623,
//! - IAR C/C++ Compiler for AVR 5.20.1 (5.20.1.50092)
//!
//! @version $Revision: 3.00 $ $Name: jtellier $
//!
//! @todo
//! @bug
//******************************************************************************
Read the documentation in that file, or the documentation of the file including it.
There is no file named
atmegaxxm1c1_drv.hin AVR-LibC, neither amongst the official interface, nor amongst the headers used internally in AVR-LibC.There is no file named
atmegaxxm1c1_drv.hin avr-gcc nor in libgcc for AVR.So the only information we have is the file name.
No. That file is not part of AVR-LibC. While you can hack anything into your local copy of AVR-LibC, nobody would do that.
Technically, there are three ways to include a file:
#include "file.h"for ordinary headers.#include <file.h>for system headers.By means of gcc command line option
-include file.h.where the search path can be extended by means of
-I pathfor a path containing ordinary headers, and by means of-isystem pathfor a path containing system headers.