diff options
author | joerg <joerg@FreeBSD.org> | 2001-09-17 22:35:47 +0800 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 2001-09-17 22:35:47 +0800 |
commit | 473a557c6150ad9bcdfbda41d964a42da3a62352 (patch) | |
tree | 7870ae8f9c2d74b7747ff68aff1ae51bdf07e9d4 /devel | |
parent | 735746793fe3ff84aef5258e2bc03f415cd62323 (diff) | |
download | freebsd-ports-gnome-473a557c6150ad9bcdfbda41d964a42da3a62352.tar.gz freebsd-ports-gnome-473a557c6150ad9bcdfbda41d964a42da3a62352.tar.zst freebsd-ports-gnome-473a557c6150ad9bcdfbda41d964a42da3a62352.zip |
Enno fixed a number of issues with his document, so update this here
as well.
Diffstat (limited to 'devel')
-rw-r--r-- | devel/avr-libc/files/README.libdoc | 3 | ||||
-rw-r--r-- | devel/avr-libc/files/avr-libc-reference.html | 3313 |
2 files changed, 1622 insertions, 1694 deletions
diff --git a/devel/avr-libc/files/README.libdoc b/devel/avr-libc/files/README.libdoc index 1cac134f39e4..12ab10f578ce 100644 --- a/devel/avr-libc/files/README.libdoc +++ b/devel/avr-libc/files/README.libdoc @@ -9,6 +9,3 @@ Rich's older avr-lib.pdf is fairly out of date now. The file avr-libc-reference.html has been obtained from http://www.bang-gang.org/elektronik/avr/avr-libc-reference.html - -(A couple of HTML tag bugs have been fixed manually, so to enable -displaying the email addresses of the authors.) diff --git a/devel/avr-libc/files/avr-libc-reference.html b/devel/avr-libc/files/avr-libc-reference.html index a304d106f7bd..461d3349032c 100644 --- a/devel/avr-libc/files/avr-libc-reference.html +++ b/devel/avr-libc/files/avr-libc-reference.html @@ -1,1691 +1,1622 @@ -<HTML> -<HEAD> - <TITLE>AVR libc function reference</TITLE> -</HEAD> -</BODY> -<center> - <H1>AVR libc function reference</H1> 2001/07/27 -</CENTER> -<HR> - -<P> -This file gives an overview of the C library functions implemented in the avr-libc -standard library for the Atmel AVR microcontroller family. -</P> -<P> -As of the writing of this reference, the current version of avr-libc was -20010717. -</P> -<P> -avr-libc is maintained by Marek Michalkiewicz <marekm@linux.org.pl>. -</P> -<P> -This document is written by Enno Luebbers <luebbers@users.sourceforge.net>. I do -not take any responsibility about what happens if you use the information in -this reference. You are on your own. :) Formally that means: -</P> -<P> -<B>This document is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY DISCLAIMED. This -includes but is not limited to warranties of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE.</B> -</P> - -<P> -Documentation for most of the functions that are not hardware specific to the -AVR architecture (like I/O ports or interrupt handlers) can be found in the -Linux manpages. -</P> - -<HR> - -<H2>Function list by Header files</H2> -<TABLE WIDTH="100%" BORDER="0"> - <TR> - <TD><A HREF="#ctype.h">ctype.h</A><BR> - </TD> - <TD>Character type test functions</TD> - </TR> - - <TR> - <TD><A HREF="#eeprom.h">eeprom.h</A></TD> - <TD>EEPROM access functions</TD> - </TR> - - <TR> - <TD><A HREF="#errno.h">errno.h</A></TD> - <TD>Error handling</TD> - </TR> - - <TR> - <TD><A HREF="#ina90.h">ina90.h</A></TD> - <TD>Compatibility header for IAR C</TD> - </TR> - - <TR> - <TD><A HREF="#interrupt.h">interrupt.h</A></TD> - <TD>Interrupt handling routines</TD> - </TR> - - <TR> - <TD><A HREF="#inttypes.h">inttypes.h</A></TD> - <TD>Defines for different int data types</TD> - </TR> - - <TR> - <TD><A HREF="#io-avr.h">io-avr.h</A></TD> - <TD>Includes the correct ioXXX.h header</TD> - </TR> - - <TR> - <TD><A HREF="#io.h">io.h</A></TD> - <TD>Includes other I/O-Headers</TD> - </TR> - - <TR> - <TD><A HREF="#ioXXX.h">ioXXX.h</A></TD> - <TD>I/O-Defines for various AVR microcontrollers</TD> - </TR> - - <TR> - <TD><A HREF="#iomacros.h">iomacros.h</A></TD> - <TD>Several macros for I/O access</TD> - </TR> - - <TR> - <TD><A HREF="#math.h">math.h</A></TD> - <TD>Various mathematical functions</TD> - </TR> - - <TR> - <TD><A HREF="#pgmspace.h">pgmspace.h</A></TD> - <TD>Compatibility header for IAR C</TD> - </TR> - - <TR> - <TD><A HREF="#progmem.h">progmem.h</A></TD> - <TD>Alias for pgmspace.h</TD> - </TR> - - <TR> - <TD><A HREF="#setjmp.h">setjmp.h</A></TD> - <TD>Provides functions for long jumps</TD> - </TR> - - <TR> - <TD><A HREF="#sig-avr.h">sig-avr.h</A></TD> - <TD>AVR interrupt and signal handling</TD> - </TR> - - <TR> - <TD><A HREF="#signal.h">signal.h</A></TD> - <TD>Alias for sig-avr.h. Should no longer be used.</TD> - </TR> - - <TR> - <TD><A HREF="#stdlib.h">stdlib.h</A></TD> - <TD>Miscellaneous routines</TD> - </TR> - - <TR> - <TD><A HREF="#string-avr.h">string-avr.h</A></TD> - <TD>String manipulation functions</TD> - </TR> - - <TR> - <TD><A HREF="#string.h">string.h</A></TD> - <TD>More string manipulation routines</TD> - </TR> - - <TR> - <TD><A HREF="#timer.h">timer.h</A></TD> - <TD>Timer control functions</TD> - </TR> - - <TR> - <TD><A HREF="#twi.h">twi.h</A></TD> - <TD>ATmega163 specific defines</TD> - </TR> - - <TR> - <TD><A HREF="#wdt.h">wdt.h</A></TD> - <TD>Watchdog Timer control functions</TD> - </TR> - - -</TABLE> - - -<HR> - -<H2>Alphabetical function list</H2> - -<p> -<tt> - -<TABLE WIDTH="100%" BORDER="0"> - - - <TR> - <TD>void</TD> - <TD><A HREF="#abort">abort();</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#acos">acos( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#asin">asin( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#atan">atan( double x );</A></TD> - </TR> - <TR> - <TD>long</TD> - <TD><A HREF="#atoi">atoi( char *p );</A></TD> - </TR> - <TR> - <TD>long</TD> - <TD><A HREF="#atol">atol( char *p );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#bit_is_clear">bit_is_clear( port, bit );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#bit_is_set">bit_is_set( port, bit );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#bsearch">bsearch(const void *key, const void *base, size_t nmemb,</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#BV">BV( x );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#cbi">cbi( port, bit );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#ceil">ceil( doublce x );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#cli">cli();</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#cos">cos( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#cosh">cosh( double x );</A></TD> - </TR> - <TR> - <TD>div_t</TD> - <TD><A HREF="#div">div( int x, int y );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#eeprom_is_ready">eeprom_is_ready()</A></TD> - </TR> - <TR> - <TD>unsigned char</TD> - <TD><A HREF="#eeprom_rb">eeprom_rb(unsigned int addr);</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#eeprom_read_block">eeprom_read_block(void *buf, unsigned int addr, - size_t n);</A></TD> - </TR> - <TR> - <TD>unsigned int</TD> - <TD><A HREF="#eeprom_rw">eeprom_rw(unsigned int addr);</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#eeprom_wb">eeprom_wb(unsigned int addr, unsigned char val);</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#enable_external_int">enable_external_int( unsigned char ints );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#errno;">errno;(</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#exp">exp( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#fabs">fabs( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#floor">floor( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#fmod">fmod( double x, double y );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#free">free( void *ptr );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#frexp">frexp( double x, int *exp );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#inp">inp( port );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#INTERRUPT">INTERRUPT( signame );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#inverse">inverse( double x );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isalnum">isalnum(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isalpha">isalpha(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isascii">isascii(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#iscntrl">iscntrl(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isdigit">isdigit(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isgraph">isgraph(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#islower">islower(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isprint">isprint(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#ispunct">ispunct(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isspace">isspace(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isupper">isupper(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#isxdigit">isxdigit(int __c);</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#itoa">itoa( int value, char *string, int radix ) {</A></TD> - </TR> - <TR> - <TD>long</TD> - <TD><A HREF="#labs">labs( long x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#ldexp">ldexp( double x, int exp );</A></TD> - </TR> - <TR> - <TD>ldiv_t</TD> - <TD><A HREF="#ldiv">ldiv( lomg x, long y );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#log">log( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#log10">log10( double x );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#longjmp">longjmp( jmp_buf env, int val );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#loop_until_bit_is_clear">loop_until_bit_is_clear( port, bit );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#loop_until_bit_ist_set">loop_until_bit_ist_set( port, bit );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#malloc">malloc( size_t size );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#memchr">memchr( void *s, char c, size_t n );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#memcmp">memcmp( const void *s1, const void *s2, size_t n );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#memcpy">memcpy( void *to, void *from, size_t n );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#memmove">memmove( void *to, void *from, size_t n );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#memset">memset( void *s, int c, size_t n );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#modf">modf( double x, double *iptr );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#outp">outp( value, port );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#parity_even_bit">parity_even_bit( val );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#pow">pow( double x, double y );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#qsort">qsort(void *base, size_t nmemb, size_t size, __compar_fn_t - compar);</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#sbi">sbi( port, bit );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#sei">sei();</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#setjmp">setjmp( jmp_buf env );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_ADC">SIG_ADC(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_COMPARATOR">SIG_COMPARATOR(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_EEPROM">SIG_EEPROM(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_INPUT_CAPTURE1">SIG_INPUT_CAPTURE1(</A></TD> - </TR> - <TR> - <TD>SIG_INTERRUPT0 through</TD> - <TD><A HREF="#SIG_INTERRUPT7">SIG_INTERRUPT7(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_OUTPUT_COMPARE0">SIG_OUTPUT_COMPARE0(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_OUTPUT_COMPARE1A">SIG_OUTPUT_COMPARE1A(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_OUTPUT_COMPARE2">SIG_OUTPUT_COMPARE2(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_OVERFLOW0">SIG_OVERFLOW0(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_OVERFLOW1">SIG_OVERFLOW1(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_OVERFLOW2">SIG_OVERFLOW2(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_SPI">SIG_SPI(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_UART1_DATA">SIG_UART1_DATA(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_UART1_RECV">SIG_UART1_RECV(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_UART1_TRANS">SIG_UART1_TRANS(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_UART_DATA">SIG_UART_DATA(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_UART_RECV">SIG_UART_RECV(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIG_UART_TRANS">SIG_UART_TRANS(</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#SIGNAL">SIGNAL( signame );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#sin">sin( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#sinh">sinh( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#sqrt">sqrt( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#square">square( double x );</A></TD> - </TR> - <TR> - <TD>extern int</TD> - <TD><A HREF="#strcasecmp">strcasecmp(const char *s1, const char *s2);</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#strcat">strcat( char *dest, char *src );</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#strchr">strchr( const char *s, int c );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#strcmp">strcmp( const char *s1, const char* s2 );</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#strcpy">strcpy( char *dest, char *src );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#strdupa">strdupa( s );</A></TD> - </TR> - <TR> - <TD>size_t</TD> - <TD><A HREF="#strlen">strlen( char *s );</A></TD> - </TR> - <TR> - <TD>extern char</TD> - <TD><A HREF="#strlwr">strlwr(char *);</A></TD> - </TR> - <TR> - <TD>extern int</TD> - <TD><A HREF="#strncasecmp">strncasecmp(const char *, const char *, size_t);</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#strncat">strncat( char *dest, char *src, size_t n );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#strncmp">strncmp( const char *s1, const char* s2, size_t n );</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#strncpy">strncpy( char *dest, char *src, size_t n );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#strndupy">strndupy( s, n );</A></TD> - </TR> - <TR> - <TD>size_t</TD> - <TD><A HREF="#strnlen">strnlen( const char *s, size_t maxlen );</A></TD> - </TR> - <TR> - <TD>char</TD> - <TD><A HREF="#strrchr">strrchr( const char *s, int c );</A></TD> - </TR> - <TR> - <TD>extern char</TD> - <TD><A HREF="#strrev">strrev(char *s1);</A></TD> - </TR> - <TR> - <TD>extern char</TD> - <TD><A HREF="#strstr">strstr(const char *haystack, const char *needle);</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#strtod">strtod( char *, char ** );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#strtod">strtod( const char *s, char **endptr );</A></TD> - </TR> - <TR> - <TD>long</TD> - <TD><A HREF="#strtol">strtol(const char *nptr, char **endptr, int base);</A></TD> - </TR> - <TR> - <TD>unsigned long</TD> - <TD><A HREF="#strtoul">strtoul(const char *nptr, char **endptr, int base);</A></TD> - </TR> - <TR> - <TD>extern char</TD> - <TD><A HREF="#strupr">strupr(char *);</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#tan">tan( double x );</A></TD> - </TR> - <TR> - <TD>double</TD> - <TD><A HREF="#tanh">tanh( double x );</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#timer0_source">timer0_source( unsigned int src );</A></TD> - </TR> - <TR> - <TD>coid</TD> - <TD><A HREF="#timer0_start">timer0_start();</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#timer0_stop">timer0_stop();</A></TD> - </TR> - <TR> - <TD>void</TD> - <TD><A HREF="#timer_enable_int">timer_enable_int( unsigned char ints );</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#toascii">toascii(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#tolower">tolower(int __c);</A></TD> - </TR> - <TR> - <TD>int</TD> - <TD><A HREF="#toupper">toupper(int __c);</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#wdt_disable">wdt_disable();</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#wdt_enable">wdt_enable( timeout );</A></TD> - </TR> - <TR> - <TD></TD> - <TD><A HREF="#wdt_reset">wdt_reset();</A></TD> - </TR> -</TABLE> - -</tt> -</p> - - - - -<HR> - -<A NAME="ctype.h"><H3>CTYPE.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - <TR> - <TD><A NAME="isalnum"></A>int isalnum(int __c);</TD> - <TD>Returns 1 of c is alphanumeric, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isalpha"></A>int isalpha(int __c);</TD> - <TD>Returns 1 of c is alphabetic, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isascii"></A>int isascii(int __c);</TD> - <TD>Returns 1 of c is contained in the 7bit ASCII, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="iscntrl"></A>int iscntrl(int __c);</TD> - <TD>Returns 1 of c is a control character, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isdigit"></A>int isdigit(int __c);</TD> - <TD>Returns 1 of c is a digit, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isgraph"></A>int isgraph(int __c);</TD> - <TD>Returns 1 of c is printable (excluding space), otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="islower"></A>int islower(int __c);</TD> - <TD>Returns 1 of c is a lower case alphabetic character, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isprint"></A>int isprint(int __c);</TD> - <TD>Returns 1 of c is printable (including space), otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="ispunct"></A>int ispunct(int __c);</TD> - <TD>Returns 1 of c is a puntuation character, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isspace"></A>int isspace(int __c);</TD> - <TD>Returns 1 of c is one of space, '\n', '\f', '\r', '\t', '\v', otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isupper"></A>int isupper(int __c);</TD> - <TD>Returns 1 of c is an upper case alphabetic character, otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="isxdigit"></A>int isxdigit(int __c);</TD> - <TD>Returns 1 of c is a hexadecimal digit (0-9 or A-F), otherwise 0.</TD> - </TR> - - <TR> - <TD><A NAME="toascii"></A>int toascii(int __c);</TD> - <TD>Converts c to a 7bit ASCII character.</TD> - </TR> - - <TR> - <TD><A NAME="tolower"></A>int tolower(int __c);</TD> - <TD>Converts c to lower case.</TD> - </TR> - - <TR> - <TD><A NAME="toupper"></A>int toupper(int __c);</TD> - <TD>Converts c to upper case.</TD> - </TR> - -</TABLE> - -<HR> - -<A NAME="eeprom.h"><H3>EEPROM.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - <TR> - <TD><A NAME="eeprom_is_ready"></A>int eeprom_is_ready() /* Macro */</TD> - <TD>Returns != 0 if the EEPROM is ready (bit EEWE in register EECR is 0).</TD> - </TR> - - <TR> - <TD><A NAME="eeprom_rb"></A>unsigned char eeprom_rb(unsigned int addr);</TD> - <TD>Read one byte from EEPROM address 'addr'.</TD> - </TR> - - <TR> - <TD><A NAME="eeprom_rw"></A>unsigned int eeprom_rw(unsigned int addr);</TD> - <TD>Read one 16-bit word (little endian) from EEPROM address 'addr'.</TD> - </TR> - - <TR> - <TD><A NAME="eeprom_wb"></A>void eeprom_wb(unsigned int addr, unsigned char val);</TD> - <TD>Write a byte 'val' to EEPROM address 'addr'.</TD> - </TR> - - <TR> - <TD><A NAME="eeprom_read_block"></A>void eeprom_read_block(void *buf, unsigned - int addr, size_t n);</TD> - <TD>Read a block of 'size' bytes from EEPROM address 'addr' to 'buf'.</TD> - </TR> - - <TR> - <TD>_EEPUT(addr, val) eeprom_wb(addr, val)<BR> - _EEGET(var, addr) (var) = eeprom_rb(addr)</TD> - <TD>Compatibility macros for IAR C compatibility.</TD> - </TR> - -</TABLE> - -<HR> - -<A NAME="errno.h"><H3>ERRNO.H</H3></A> -<TABLE WIDTH="100%" BORDER="0"> - <TR> - <TD><A NAME="errno"></A>int errno;</TD> - <TD>Holds the system-wide error code.</TD> - </TR> -</TABLE> - -<HR> - -<A NAME="ina90.h"><H3>INA90.H</H3></A> - -<P> -This header file contains some compatibility functions and macros to make -porting applications from the IAR C compiler to avr-gcc easier. Since you wouldn't -use it for writing new applications, there's no need for documentation here (lazy -me). -</P> - -<HR> - -<A NAME="interrupt.h"><H3>INTERRUPT.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="sei"></A>sei();</TD> - <TD>Enable Interrupts. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="cli"></A>cli();</TD> - <TD>Disable Interrupts. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="enable_external_int"></A>void enable_external_int( unsigned char - ints );</TD> - <TD>Write 'ints' to the EIMSK or GIMSK register, depending on whether EIMSK or - GIMSK is defined.</TD> - </TR> - - <TR> - <TD><A NAME="timer_enable_int"></A>void timer_enable_int( unsigned char ints );</TD> - <TD>Write 'ints' to the TIMSK register, if TIMSK is defined.</TD> - </TR> - -</TABLE> - -<HR> - -<A NAME="inttypes.h"><H3>INTTYPES.H</H3></A> - -<P> -Defines the following types: -</P> - -<TT>typedef signed char int8_t;<BR> -typedef unsigned char uint8_t;<BR> -<BR> -typedef int int16_t;<BR> -typedef unsigned int uint16_t;<BR> -<BR> -typedef long int32_t;<BR> -typedef unsigned long uint32_t;<BR> -<BR> -typedef long long int64_t;<BR> -typedef unsigned long long uint64_t;<BR> -<BR> -typedef int16_t intptr_t;<BR> -typedef uint16_t uintptr_t;<BR> -</TT> -<P> -Be careful with the <TT>-mint8</TT> option, though. -</P> - - -<HR> - -<A NAME="io-avr.h"><H3>IO-AVR.H</H3></A> - -<P> -Automagically includes the <A HREF="#ioXXX.h">ioXXX.h</A> header file for the -target AVR microcontroller. -</P> - - -<HR> - -<A NAME="io.h"><H3>IO.H</H3></A> - -<P> -Just includes both <A HREF="#io-avr.h">io-avr.h</A> and <A HREF="#iomacros.h">iomacros.h</A>. -</P> - - -<HR> - -<A NAME="ioXXX.h"><H3>IOXXX.H</H3></A> - -<P> -I/O-register definitions for the XXX MCU. Refer to the specific datasheet for a -description of the registers and their functions. -</P> - - -<HR> - -<A NAME="iomacros.h"><H3>IOMACROS.H</H3></A> - - -<TABLE WIDTH="100%" BORDER="0"> - <TR> - <TD><A NAME="BV"></A>BV( x );</TD> - <TD>Returns the value of bit x (BitValue). Essentially an (1 << x). Macro.</TD> - </TR> - - <TR> - <TD><A NAME="inp"></A>inp( port );</TD> - <TD>Read byte from port 'port'. Macro. Automagically distinguishes between - constant and non-constant memory I/O addresses and calls the macros __inb or - __mmio, respectively.</TD> - </TR> - - <TR> - <TD><A NAME="outp"></A>outp( value, port );</TD> - <TD>Write 'value' to 'port'. Macro. Similar black magic as inp( port ).</TD> - </TR> - - <TR> - <TD><A NAME="cbi"></A>cbi( port, bit );</TD> - <TD>Clear bit 'bit' in port 'port'. Macro. Slowly the black magic here is - getting the better of me.</TD> - </TR> - - <TR> - <TD><A NAME="sbi"></A>sbi( port, bit );</TD> - <TD>Set bit 'bit' in port 'port'. Macro. Don't ask.</TD> - </TR> - - <TR> - <TD><A NAME="bit_is_set"></A>bit_is_set( port, bit );</TD> - <TD>Returns something != 0, if bit 'bit' in 'port' is set, otherwise 0. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="bit_is_clear"></A>bit_is_clear( port, bit );</TD> - <TD>Returns something != 0, if bit 'bit' in 'port' is clear, otherwise 0. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="loop_until_bit_is_set"></A>loop_until_bit_ist_set( port, bit );</TD> - <TD>Loops until bit 'bit' in port 'port' is set. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="loop_until_bit_is_clear"></A>loop_until_bit_is_clear( port, bit );</TD> - <TD>Loops until bit 'bit' in port 'port' is clear. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="parity_even_bit"></A>parity_even_bit( val );</TD> - <TD>I have no idea what this macro does. Any suggestions? Marek?</TD> - </TR> - -</TABLE> - - -<HR> - -<A NAME="math.h"><H3>MATH.H</H3></A> - -<P> -Constants: -</P> -<TT>M_PI = 3.141592653589793238462643</TT><BR> -Pi.<BR> -<TT>M_SQRT2 = 1.4142135623730950488016887</TT><BR> -The square root of two.<BR> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="cos"></A>double cos( double x );</TD> - <TD>Returns the cosine of x.</TD> - </TR> - - <TR> - <TD><A NAME=""></A>double fabs( double x );</TD> - <TD>Returns the absolute value of x.</TD> - </TR> - - <TR> - <TD><A NAME="fmod"></A>double fmod( double x, double y );</TD> - <TD>Returns the floating point remainder of x/y.</TD> - </TR> - - <TR> - <TD><A NAME="modf"></A>double modf( double x, double *iptr );</TD> - <TD>Returns the fractional part of x and stores the integral part in *iptr.</TD> - </TR> - - <TR> - <TD><A NAME="sin"></A>double sin( double x );</TD> - <TD>Returns the sine of x.</TD> - </TR> - - <TR> - <TD><A NAME="sqrt"></A>double sqrt( double x );</TD> - <TD>Returns the square root of x.</TD> - </TR> - - <TR> - <TD><A NAME="tan"></A>double tan( double x );</TD> - <TD>Returns the tangens of x.</TD> - </TR> - - <TR> - <TD><A NAME="floor"></A>double floor( double x );</TD> - <TD>Returns the biggest integer smaller than x.</TD> - </TR> - - <TR> - <TD><A NAME="ceil"></A>double ceil( doublce x );</TD> - <TD>Returns the smallest integer bigger than x.</TD> - </TR> - - <TR> - <TD><A NAME="frexp"></A>double frexp( double x, int *exp );</TD> - <TD>Splits x into a normalized fraction, which is returned, and an exponent, - which is stored in *exp.</TD> - </TR> - - <TR> - <TD><A NAME="ldexp"></A>double ldexp( double x, int exp );</TD> - <TD>Returns the result of x*2^exp.</TD> - </TR> - - <TR> - <TD><A NAME="exp"></A>double exp( double x );</TD> - <TD>Returns e^x;</TD> - </TR> - - <TR> - <TD><A NAME="cosh"></A>double cosh( double x );</TD> - <TD>Returns the hyperbolic cosine of x.</TD> - </TR> - - <TR> - <TD><A NAME="sinh"></A>double sinh( double x );</TD> - <TD>Returns the hyperbolic sine of x.</TD> - </TR> - - <TR> - <TD><A NAME="tanh"></A>double tanh( double x );</TD> - <TD>Returns the hyperbolc tangens of x.</TD> - </TR> - - <TR> - <TD><A NAME="acos"></A>double acos( double x );</TD> - <TD>Returns the arc cosine of x.</TD> - </TR> - - <TR> - <TD><A NAME="asin"></A>double asin( double x );</TD> - <TD>Returns the arc sine of x.</TD> - </TR> - - <TR> - <TD><A NAME="atan"></A>double atan( double x );</TD> - <TD>Returns the arc tangens of x.</TD> - </TR> - - <TR> - <TD><A NAME="log"></A>double log( double x );</TD> - <TD>Returns the natural logarithm of x.</TD> - </TR> - - <TR> - <TD><A NAME="log10"></A>double log10( double x );</TD> - <TD>Returns the logarithm of x to the base 10.</TD> - </TR> - - <TR> - <TD><A NAME="pow"></A>double pow( double x, double y );</TD> - <TD>Returns x^y.</TD> - </TR> - - <TR> - <TD><A NAME="strtod"></A>double strtod( const char *s, char **endptr );</TD> - <TD>Converts an ASCII string to a double.</TD> - </TR> - - <TR> - <TD><A NAME="square"></A>double square( double x );</TD> - <TD>Returns x^2;</TD> - </TR> - - <TR> - <TD><A NAME="inverse"></A>double inverse( double x );</TD> - <TD>Returns 1/x;</TD> - </TR> - -</TABLE> - -<HR> - -<A NAME="pgmspace.h"><H3>PGMSPACE.H</H3></A> - -<P> -Another compatibility header file for the IAR C compiler. Contains (or is -suposed to contain) things like memcpy_P, strcat_P, printf_P etc. -</P> -<P> -Since it's a compatibility header file, I chose not to document it. Yet. -</P> - - -<HR> - -<A NAME="progmem.h"><H3>PROGMEM.H</H3></A> - -<P> -Includes <A HREF="#pgmspace.h">pgmspace.h</A>. -</P> - - -<HR> - -<A NAME="setjmp.h"><H3>SETJMP.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="setjmp"></A>int setjmp( jmp_buf env );</TD> - <TD>Declares a longjmp-Target to be jumped at with longjmp (see below.).</TD> - </TR> - - <TR> - <TD><A NAME="longjmp"></A>void longjmp( jmp_buf env, int val );</TD> - <TD>Executes a long jump to the position previously defined with - <tt>setjmp( 'env' )</tt>, which will return 'val'.</TD> - </TR> - -</TABLE> - -<HR> - -<A NAME="sig-avr.h"><H3>SIG-AVR.H</H3></A> - -<P> -Defines symbols for the interrupt vectors that are stored at the begining of the -flash memory. Defined are: -<P> -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="SIG_INTERRUPT"></A>SIG_INTERRUPT0 through SIG_INTERRUPT7</TD> - <TD>Handler function name for the external interrupts 0 through 7. Interrupts > - 1 are only available on certain ATmega AVRs.</TD> - </TR> - - <TR> - <TD><A NAME="SUG_OUTPUT_COMPARE2"></A>SIG_OUTPUT_COMPARE2</TD> - <TD>Handler function name for the Compare2 interrupt (Analog Comparator).</TD> - </TR> - - <TR> - <TD><A NAME="SIG_OVERFLOW2"></A>SIG_OVERFLOW2</TD> - <TD>Handler function name for the Overflow2 interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_INPUT_CAPTURE1"></A>SIG_INPUT_CAPTURE1</TD> - <TD>Handler function name for the Capture1 interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_OUTPUT_COMPARE1A"></A>SIG_OUTPUT_COMPARE1A</TD> - <TD>Handler function name for the Compare1(A) interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_OVERFLOW1"></A>SIG_OVERFLOW1</TD> - <TD>Handler function name for the Overflow1 interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_OUTPUT_COMPARE0"></A>SIG_OUTPUT_COMPARE0</TD> - <TD>Handler function name for the Compare0 interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_OVERFLOW0"></A>SIG_OVERFLOW0</TD> - <TD>Handler function name for the Overflow0 interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_SPI"></A>SIG_SPI</TD> - <TD>Handler function name for the SPI interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_UART_RECV"></A>SIG_UART_RECV</TD> - <TD>Handler function name for the UART(0) Receive Complete interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_UART1_RECV"></A>SIG_UART1_RECV</TD> - <TD>Handler function name for the UART1 Receive Complete interrupt. UART1 is - only available on the ATmega161.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_UART_DATA"></A>SIG_UART_DATA</TD> - <TD>Handler function name for the UART(0) Data Register Empty interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_UART1_DATA"></A>SIG_UART1_DATA</TD> - <TD>Handler function name for the UART1 Data Register Empty interrupt. UART1 is - only available on the ATmega161.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_UART_TRANS"></A>SIG_UART_TRANS</TD> - <TD>Handler function name for the UART(0) Transmit Complete interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_UART1_TRANS"></A>SIG_UART1_TRANS</TD> - <TD>Handler function name for the UART1 Transmit Complete interrupt. UART1 is - only available on the ATmega161.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_ADC"></A>SIG_ADC</TD> - <TD>Handler function name for the ADC Comversion Complete interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_EEPROM"></A>SIG_EEPROM</TD> - <TD>Handler function name for the EEPROM Ready interrupt.</TD> - </TR> - - <TR> - <TD><A NAME="SIG_COMPARATOR"></A>SIG_COMPARATOR</TD> - <TD>Handler function name for the Analog Comparator interrupt.</TD> - </TR> - -</TABLE> - -<P> -Furthermore, the following functions/macros are defined: -</P> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="SIGNAL"></A>SIGNAL( signame );</TD> - <TD>Used for defining an Signal/Interrupt handler for the signal 'signame'.</TD> - </TR> - - <TR> - <TD><A NAME="INTERRUPT"></A>INTERRUPT( signame );</TD> - <TD>Probably used for generating the interrupt signal 'signame'.</TD> - <TR> - -</TABLE> - - -<HR> - -<A NAME="signal.h"><H3>SIGNAL.H</H3></A> - -<P> -Includes <A HREF="#sig-avr.h">sig-avr.h</A>. You should use sig-avr.h directly, -because signal.h might disappear shortly because it conflicts with the "real" -ANSI C signal.h. -</P> - - -<HR> - -<A NAME="stdlib.h"><H3>STDLIB.H</H3></A> - -<P> -Defines the following types: -</P> -<TT>typedef struct {<BR> -int quot;<BR> -int rem;<BR> -} div_t;<BR> -<BR> -typedef struct {<BR> -long quot;<BR> -long rem;<BR> -} ldiv_t;<BR> -<BR> -typedef int (*__compar_fn_t)(const void *, const void *);</TT><BR> -Used for comparison functions, eg. qsort(). - -<P> -Additionally, the following functions/macros are declared: -</P> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="abort"></A>void abort();</TD> - <TD>Effectively aborts the execution by putting the MCU into an endless loop.</TD> - </TR> - - <TR> - <TD><A NAME="labs"></A>long labs( long x );</TD> - <TD>Returns the absolute value of x.</TD> - </TR> - - <TR> - <TD><A NAME="bsearch"></A>void *bsearch(const void *key, const void *base, - size_t nmemb,<BR> - > size_t size, int (*compar)(const void *, const void *));</TD> - <TD>Performs a binary search on a sorted array.</TD> - </TR> - - <TR> - <TD><A NAME="div"></A>div_t div( int x, int y );</TD> - <TD>Divides x by y and returns the result (quotient and remainder) in a div_t - struct (see above).</TD> - </TR> - - <TR> - <TD><A NAME="ldiv"></A>ldiv_t ldiv( lomg x, long y );</TD> - <TD>Divides x by y and returns the result (quotient and remainder) in a ldiv_t - struct (see above).</TD> - </TR> - - <TR> - <TD><A NAME="qsort"></A>void qsort(void *base, size_t nmemb, size_t size, - __compar_fn_t compar);</TD> - <TD>Sorts an array at 'base' with 'nmemb' elements of size 'size', using the - comparison function 'compar'.</TD> - </TR> - - <TR> - <TD><A NAME="strtol"></A>long strtol(const char *nptr, char **endptr, int base);</TD> - <TD>Converts the string at 'nptr' to a long integer according to the base 'base'.</TD> - </TR> - - <TR> - <TD><A NAME="strtoul"></A>unsigned long strtoul(const char *nptr, char **endptr, - int base);</TD> - <TD>Converts the string at 'nptr' to an unsigned long integer according to the - base 'base'.</TD> - </TR> - - <TR> - <TD><A NAME="atol"></A>long atol( char *p );</TD> - <TD>Converts the string 'p' to a long integer.</TD> - </TR> - - <TR> - <TD><A NAME="atoi"></A>long atoi( char *p );</TD> - <TD>Converts the string 'p' to an integer.</TD> - </TR> - - <TR> - <TD><A NAME="malloc"></A>void *malloc( size_t size );</TD> - <TD>Allocates 'size' bytes of memory and returns a pointer to it. Implemented, - but not tested.</TD> - </TR> - - <TR> - <TD><A NAME="free"></A>void free( void *ptr );</TD> - <TD>Releases the memory at 'ptr', which was previously allocated with malloc(). - Implemented, but not tested.</TD> - </TR> - - <TR> - <TD>double strtod( char *, char ** );</TD> - <TD>See <A HREF="#strtod">math.h</A>.</TD> - </TR> - - <TR> - <TD><A NAME="itoa"></A>char *itoa( int value, char *string, int radix );</TD> - <TD>Converts an integer into a string. This is not ANSI C, but nonetheless (or - maybe just because of this) very useful.</TD> - </TR> - -</TABLE> - -<P> -The following functions are not yet implemented: -</P> -<P> -<TT>atexit(), atof(), calloc(), rand(), realloc(), srand();</TT> -</P> - - -<HR> - -<A NAME="string-avr.h"><H3>STRING-AVR.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="memcpy"></A>void *memcpy( void *to, void *from, size_t n );</TD> - <TD>Copy 'n' bytes from 'from' to 'to'.</TD> - </TR> - - <TR> - <TD><A NAME="memmove"></A>void *memmove( void *to, void *from, size_t n );</TD> - <TD>Copy 'n' bytes of 'from' to 'to', guaranteeing correct behavior for - overlapping strings.</TD> - </TR> - - <TR> - <TD><A NAME="memset"></A>void *memset( void *s, int c, size_t n );</TD> - <TD>Set 'n' bytes of 's' to 'c'.</TD> - </TR> - - <TR> - <TD><A NAME="memcmp"></A>int memcmp( const void *s1, const void *s2, size_t n );</TD> - <TD>Compare 'n' bytes of 's1' an 's2'.</TD> - </TR> - - <TR> - <TD><A NAME="memchr"></A>void *memchr( void *s, char c, size_t n );</TD> - <TD>Returns a pointer to the first occurence of 'c' in the first 'n' bytes of 's'.</TD> - </TR> - - <TR> - <TD><A NAME="strlen"></A>size_t strlen( char *s );</TD> - <TD>Returns the length of 's'.</TD> - </TR> - - <TR> - <TD><A NAME="strcpy"></A>char *strcpy( char *dest, char *src );</TD> - <TD>Copies 'src' intro 'dest'.</TD> - </TR> - - <TR> - <TD><A NAME="strncpy"></A>char *strncpy( char *dest, char *src, size_t n );</TD> - <TD>Copy no more than n bytes from 'src' to 'dest'.</TD> - </TR> - - <TR> - <TD><A NAME="strcat"></A>char *strcat( char *dest, char *src );</TD> - <TD>Append 'src' onto 'dest'.</TD> - </TR> - - <TR> - <TD><A NAME="strncat"></A>char *strncat( char *dest, char *src, size_t n );</TD> - <TD>Append no more than 'n' bytes from 'src' onto 'dest'.</TD> - </TR> - - <TR> - <TD><A NAME="strcmp"></A>int strcmp( const char *s1, const char* s2 );</TD> - <TD>Compare 's1' and 's2'.</TD> - </TR> - - <TR> - <TD><A NAME="strncmp"></A>int strncmp( const char *s1, const char* s2, size_t n - );</TD> - <TD>Compare 'n' characters from 's1' and 's2'.</TD> - </TR> - - <TR> - <TD><A NAME="strdupa"></A>strdupa( s );</TD> - <TD>Duplicate 's', returning an identical allocated string. Macro.</TD> - </TR> - - <TR> - <TD><A NAME="strdupa"></A>strndupa( s, n );</TD> - <TD>Return an allocated copy of at most 'n' bytes of 's'.</TD> - </TR> - - <TR> - <TD><A NAME="strchr"></A>char *strchr( const char *s, int c );</TD> - <TD>Return a pointer to the first occurence of 'c' in 's'.</TD> - </TR> - - <TR> - <TD><A NAME="strrchr"></A>char *strrchr( const char *s, int c );</TD> - <TD>Return a pointer to the last occurence of 'c' in 's'.</TD> - </TR> - - <TR> - <TD><A NAME="strnlen"></A>size_t strnlen( const char *s, size_t maxlen );</TD> - <TD>Returns the length of 's', but at most 'maxlen'.</TD> - </TR> - -</TABLE> - - -<HR> - -<A NAME="string.h"><H3>STRING.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="memccpy"></A>extern void *memccpy(void *dest, const void *src, int - c, size_t n);</TD> - <TD>Copy at most 'n bytes from 'src' to 'dest' until character 'c' is found.</TD> - </TR> - - <TR> - <TD>extern void *memchr(const void *, int, size_t);</TD> - <TD><A HREF="#memchr">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern int memcmp(const void *, const void *, size_t);</TD> - <TD><A HREF="#memcmp">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern void *memcpy(void *, const void *, size_t);</TD> - <TD><A HREF="#memcpy">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern void *memmove(void *dest, const void *src, size_t n);</TD> - <TD><A HREF="#memmove">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern void *memset(void *, int, size_t);</TD> - <TD><A HREF="#memset">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern char *strcat(char *, const char *);</TD> - <TD><A HREF="#strcat">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern char *strchr(const char *, int);</TD> - <TD><A HREF="#strchr">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern int strcmp(const char *, const char *);</TD> - <TD><A HREF="#strcmp">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern char *strcpy(char *, const char *);</TD> - <TD><A HREF="#strcpy">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD><A NAME="strcasecmp"></A>extern int strcasecmp(const char *s1, const char *s2);</TD> - <TD>Compare 's1' and 's2', ignoring case.</TD> - </TR> - - <TR> - <TD>extern size_t strlen(const char *);</TD> - <TD><A HREF="#strlen">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD><A NAME="strlwr"></A>extern char *strlwr(char *);</TD> - <TD>I have no clue as to what this does.</TD> - </TR> - - <TR> - <TD>extern char *strncat(char *, const char *, size_t);</TD> - <TD><A HREF="#strncat">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern int strncmp(const char *, const char *, size_t);</TD> - <TD><A HREF="#strncmp">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern char *strncpy(char *, const char *, size_t);</TD> - <TD><A HREF="#strncpy">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD><A NAME="strncasecmp"></A>extern int strncasecmp(const char *, const char *, - size_t);</TD> - <TD>Compare 'n' bytes of 's1' and 's2', ignoring case.</TD> - </TR> - - <TR> - <TD>extern size_t strnlen(const char *, size_t);</TD> - <TD><A HREF="#strnlen">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD>extern char *strrchr(const char *, int);</TD> - <TD><A HREF="#strrchr">See string-avr.h</A>.</TD> - </TR> - - <TR> - <TD><A NAME="strrev"></A>extern char *strrev(char *s1);</TD> - <TD>Probably reverses 's1'.</TD> - </TR> - - <TR> - <TD><A NAME="strstr"></A>extern char *strstr(const char *haystack, const char *needle);</TD> - <TD>Locate 'needle' in 'haystack', and return a pointer to it.</TD> - </TR> - - <TR> - <TD><A NAME="strupr"></A>extern char *strupr(char *);</TD> - <TD>Dunno.</TD> - </TR> - -</TABLE> - - -<HR> - -<A NAME="timer.h"><H3>TIMER.H</H3></A> - -<P> -Defines an enumeration for the Timer Control Register: -</P> - -<TT>enum {<BR> -STOP = 0,<BR> -CK = 1,<BR> -CK8 = 2,<BR> -CK64 = 3,<BR> -CK256 = 4,<BR> -CK1024 = 5,<BR> -T0_FALLING_EDGE = 6,<BR> -T0_RISING_EDGE = 7<BR> -};<BR> -</TT> - -<P> -And there are the following functions: -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="timer0_source"></A>void timer0_source( unsigned int src );</TD> - <TD>Writes 'src' into the TCCR0 register.</TD> - </TR> - - <TR> - <TD><A NAME="timer0_stop"></A>void timer0_stop();</TD> - <TD>Stops Timer 0 by clearing the TCNT0 register.</TD> - </TR> - - <TR> - <TD><A NAME="timer0_start"></A>coid timer0_start();</TD> - <TD>Starts Timer 0 by writing a 1 into the TCNT0 register.</TD> - </TR> - -</TABLE> - - -<HR> - -<A NAME="twi.h"><H3>TWI.H</H3></A> - -<P> -Defines several constants for the ATmega163. -</P> - - -<HR> - -<A NAME="wdt.h"><H3>WDT.H</H3></A> - -<TABLE WIDTH="100%" BORDER="0"> - - <TR> - <TD><A NAME="wdt_reset"></A>wdt_reset();</TD> - <TD>Resets the Watchdog Timer.</TD> - </TR> - - <TR> - <TD><A NAME="wdt_enable"></A>wdt_enable( timeout );</TD> - <TD>Enables the Watchdog Timer with timeout 'timeout'. For the actual timeout - value, refer to the Atmel AVR datasheets.</TD> - </TR> - - <TR> - <TD><A NAME="wdt_disable"></A>wdt_disable();</TD> - <TD>Disables the Watchdog Timer.</TD> - </TR> - -</TABLE> - -</BODY> -</HTML> - +<HTML>
+<HEAD>
+<TITLE>AVR libc function reference</TITLE>
+<style type="text/css">
+<!--
+.hell { background-color: #CCCCCC}
+.dunkel { background-color: #AAAAAA}
+table { background-color: #666666}
+a:hover { color: #0000FF; text-decoration: underline}
+a { color: #000099; text-decoration: none}
+-->
+</style>
+</HEAD>
+
+<BODY BGCOLOR="#FFFFFF">
+
+<center>
+ <H1>AVR libc function reference</H1> 2001/09/17
+</CENTER>
+<HR>
+
+<P>
+This file gives an overview of the C library functions implemented in the avr-libc
+standard library for the Atmel AVR microcontroller family.
+</P>
+<P>
+As of the writing of this reference, the current version of avr-libc was
+20010821.
+</P>
+<P>
+avr-libc is maintained by Marek Michalkiewicz <marekm@linux.org.pl>.
+</P>
+<P>
+This document is written by Enno Luebbers <luebbers@users.sourceforge.net>. I do
+not take any responsibility about what happens if you use the information in
+this reference. You are on your own. :) Formally that means:
+</P>
+<P>
+<B>This document is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY DISCLAIMED. This
+includes but is not limited to warranties of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE.</B>
+</P>
+
+<P>
+Documentation for most of the functions that are not hardware specific to the
+AVR architecture (like I/O ports or interrupt handlers) can be found in the
+Linux manpages.
+</P>
+
+<P>Thanks go to Jörg Wunsch for pointing me to several errors in previous
+ versions of this reference. Also thanks to Jochen Pernsteiner for his explanation
+ of strlwr().</P>
+<HR>
+
+<H2>Function list by Header files</H2>
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A HREF="#ctype.h">ctype.h</A></TD>
+ <TD class="hell">Character type test functions</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#eeprom.h">eeprom.h</A></TD>
+ <TD class="dunkel">EEPROM access functions</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#errno.h">errno.h</A></TD>
+ <TD class="hell">Error handling</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#ina90.h">ina90.h</A></TD>
+ <TD class="dunkel">Compatibility header for IAR C</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#interrupt.h">interrupt.h</A></TD>
+ <TD class="hell">Interrupt handling routines</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#inttypes.h">inttypes.h</A></TD>
+ <TD class="dunkel">Defines for different int data types</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#io-avr.h">io-avr.h</A></TD>
+ <TD class="hell">Includes the correct ioXXX.h header</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#io.h">io.h</A></TD>
+ <TD class="dunkel">Includes other I/O-Headers</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#ioXXX.h">ioXXX.h</A></TD>
+ <TD class="hell">I/O-Defines for various AVR microcontrollers</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#iomacros.h">iomacros.h</A></TD>
+ <TD class="dunkel">Several macros for I/O access</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#math.h">math.h</A></TD>
+ <TD class="hell">Various mathematical functions</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#pgmspace.h">pgmspace.h</A></TD>
+ <TD class="dunkel">Compatibility header for IAR C</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#progmem.h">progmem.h</A></TD>
+ <TD class="hell">Alias for pgmspace.h</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#setjmp.h">setjmp.h</A></TD>
+ <TD class="dunkel">Provides functions for long jumps</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#sig-avr.h">sig-avr.h</A></TD>
+ <TD class="hell">AVR interrupt and signal handling</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#signal.h">signal.h</A></TD>
+ <TD class="dunkel">Alias for sig-avr.h. Should no longer be used.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#stdlib.h">stdlib.h</A></TD>
+ <TD class="hell">Miscellaneous routines</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#string-avr.h">string-avr.h</A></TD>
+ <TD class="dunkel">String manipulation functions</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#string.h">string.h</A></TD>
+ <TD class="hell">More string manipulation routines</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#timer.h">timer.h</A></TD>
+ <TD class="dunkel">Timer control functions</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A HREF="#twi.h">twi.h</A></TD>
+ <TD class="hell">ATmega163 specific defines</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A HREF="#wdt.h">wdt.h</A></TD>
+ <TD class="dunkel">Watchdog Timer control functions</TD>
+ </TR>
+</TABLE>
+
+
+<HR>
+
+<H2>Alphabetical function list</H2>
+
+<p>
+<tt>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#abort">abort();</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#acos">acos( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#asin">asin( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#atan">atan( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">long</TD>
+ <TD class="hell"><A HREF="#atoi">atoi( char *p );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">long</TD>
+ <TD class="dunkel"><A HREF="#atol">atol( char *p );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#bit_is_clear">bit_is_clear( port, bit );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#bit_is_set">bit_is_set( port, bit );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#bsearch">bsearch(const void *key, const void *base,
+ size_t nmemb,</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#BV">BV( x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#cbi">cbi( port, bit );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#ceil">ceil( doublce x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#cli">cli();</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#cos">cos( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#cosh">cosh( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">div_t</TD>
+ <TD class="dunkel"><A HREF="#div">div( int x, int y );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#eeprom_is_ready">eeprom_is_ready()</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">unsigned char</TD>
+ <TD class="dunkel"><A HREF="#eeprom_rb">eeprom_rb(unsigned int addr);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#eeprom_read_block">eeprom_read_block(void *buf,
+ unsigned int addr, size_t n);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">unsigned int</TD>
+ <TD class="dunkel"><A HREF="#eeprom_rw">eeprom_rw(unsigned int addr);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#eeprom_wb">eeprom_wb(unsigned int addr, unsigned
+ char val);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#enable_external_int">enable_external_int( unsigned
+ char ints );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#errno">errno();</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#exp">exp( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#fabs">fabs( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#floor">floor( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#fmod">fmod( double x, double y );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#free">free( void *ptr );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#frexp">frexp( double x, int *exp );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#inp">inp( port );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#INTERRUPT">INTERRUPT( signame );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#inverse">inverse( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#isalnum">isalnum(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#isalpha">isalpha(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#isascii">isascii(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#iscntrl">iscntrl(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#isdigit">isdigit(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#isgraph">isgraph(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#islower">islower(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#isprint">isprint(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#ispunct">ispunct(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#isspace">isspace(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#isupper">isupper(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#isxdigit">isxdigit(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">char</TD>
+ <TD class="hell"><A HREF="#itoa">itoa( int value, char *string, int radix
+ ) {</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">long</TD>
+ <TD class="dunkel"><A HREF="#labs">labs( long x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#ldexp">ldexp( double x, int exp );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">ldiv_t</TD>
+ <TD class="dunkel"><A HREF="#ldiv">ldiv( lomg x, long y );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#log">log( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#log10">log10( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#longjmp">longjmp( jmp_buf env, int val );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#loop_until_bit_is_clear">loop_until_bit_is_clear(
+ port, bit );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#loop_until_bit_is_set">loop_until_bit_ist_set(
+ port, bit );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#malloc">malloc( size_t size );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#memchr">memchr( void *s, char c, size_t n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#memcmp">memcmp( const void *s1, const void *s2,
+ size_t n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#memcpy">memcpy( void *to, void *from, size_t n
+ );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#memmove">memmove( void *to, void *from, size_t
+ n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#memset">memset( void *s, int c, size_t n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#modf">modf( double x, double *iptr );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#outp">outp( value, port );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#parity_even_bit">parity_even_bit( val );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#pow">pow( double x, double y );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#qsort">qsort(void *base, size_t nmemb, size_t
+ size, __compar_fn_t compar);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#sbi">sbi( port, bit );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#sei">sei();</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#setjmp">setjmp( jmp_buf env );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_ADC">SIG_ADC(</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_COMPARATOR">SIG_COMPARATOR(</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_EEPROM">SIG_EEPROM(</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_INPUT_CAPTURE1">SIG_INPUT_CAPTURE1(</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"> </TD>
+ <TD class="dunkel"><A HREF="#SIG_INTERRUPT">SIG_INTERRUPT0 through SIG_INTERRUPT7</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_OUTPUT_COMPARE0">SIG_OUTPUT_COMPARE0</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_OUTPUT_COMPARE1A">SIG_OUTPUT_COMPARE1A</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_OUTPUT_COMPARE1B">SIG_OUTPUT_COMPARE1B</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_OUTPUT_COMPARE2">SIG_OUTPUT_COMPARE2</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_OVERFLOW0">SIG_OVERFLOW0</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_OVERFLOW1">SIG_OVERFLOW1</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_OVERFLOW2">SIG_OVERFLOW2</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_SPI">SIG_SPI</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_UART1_DATA">SIG_UART1_DATA</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_UART1_RECV">SIG_UART1_RECV</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_UART1_TRANS">SIG_UART1_TRANS</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_UART_DATA">SIG_UART_DATA</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIG_UART_RECV">SIG_UART_RECV</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#SIG_UART_TRANS">SIG_UART_TRANS</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#SIGNAL">SIGNAL( signame );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#sin">sin( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#sinh">sinh( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#sqrt">sqrt( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#square">square( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern int</TD>
+ <TD class="dunkel"><A HREF="#strcasecmp">strcasecmp(const char *s1, const
+ char *s2);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">char</TD>
+ <TD class="hell"><A HREF="#strcat">strcat( char *dest, char *src );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">char</TD>
+ <TD class="dunkel"><A HREF="#strchr">strchr( const char *s, int c );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#strcmp">strcmp( const char *s1, const char* s2
+ );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">char</TD>
+ <TD class="dunkel"><A HREF="#strcpy">strcpy( char *dest, char *src );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#strdupa">strdupa( s );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">size_t</TD>
+ <TD class="dunkel"><A HREF="#strlen">strlen( char *s );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern char</TD>
+ <TD class="hell"><A HREF="#strlwr">strlwr(char *);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern int</TD>
+ <TD class="dunkel"><A HREF="#strncasecmp">strncasecmp(const char *, const
+ char *, size_t);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">char</TD>
+ <TD class="hell"><A HREF="#strncat">strncat( char *dest, char *src, size_t
+ n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#strncmp">strncmp( const char *s1, const char*
+ s2, size_t n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">char</TD>
+ <TD class="hell"><A HREF="#strncpy">strncpy( char *dest, char *src, size_t
+ n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#strndupa">strndupa( s, n );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">size_t</TD>
+ <TD class="hell"><A HREF="#strnlen">strnlen( const char *s, size_t maxlen
+ );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">char</TD>
+ <TD class="dunkel"><A HREF="#strrchr">strrchr( const char *s, int c );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern char</TD>
+ <TD class="hell"><A HREF="#strrev">strrev(char *s1);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern char</TD>
+ <TD class="dunkel"><A HREF="#strstr">strstr(const char *haystack, const char
+ *needle);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#strtod">strtod( char *, char ** );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#strtod">strtod( const char *s, char **endptr
+ );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">long</TD>
+ <TD class="hell"><A HREF="#strtol">strtol(const char *nptr, char **endptr,
+ int base);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">unsigned long</TD>
+ <TD class="dunkel"><A HREF="#strtoul">strtoul(const char *nptr, char **endptr,
+ int base);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern char</TD>
+ <TD class="hell"><A HREF="#strupr">strupr(char *);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">double</TD>
+ <TD class="dunkel"><A HREF="#tan">tan( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">double</TD>
+ <TD class="hell"><A HREF="#tanh">tanh( double x );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#timer0_source">timer0_source( unsigned int src
+ );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">coid</TD>
+ <TD class="hell"><A HREF="#timer0_start">timer0_start();</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">void</TD>
+ <TD class="dunkel"><A HREF="#timer0_stop">timer0_stop();</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">void</TD>
+ <TD class="hell"><A HREF="#timer_enable_int">timer_enable_int( unsigned char
+ ints );</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#toascii">toascii(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell">int</TD>
+ <TD class="hell"><A HREF="#tolower">tolower(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">int</TD>
+ <TD class="dunkel"><A HREF="#toupper">toupper(int __c);</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#wdt_disable">wdt_disable();</A></TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"></TD>
+ <TD class="dunkel"><A HREF="#wdt_enable">wdt_enable( timeout );</A></TD>
+ </TR>
+ <TR>
+ <TD class="hell"></TD>
+ <TD class="hell"><A HREF="#wdt_reset">wdt_reset();</A></TD>
+ </TR>
+</TABLE>
+
+</tt>
+<p></p>
+
+
+
+
+<HR>
+
+<A NAME="ctype.h"><H3>CTYPE.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="isalnum"></A>int isalnum(int __c);</TD>
+ <TD class="hell">Returns 1 of c is alphanumeric, otherwise 0.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="isalpha"></A>int isalpha(int __c);</TD>
+ <TD class="dunkel">Returns 1 of c is alphabetic, otherwise 0.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="isascii"></A>int isascii(int __c);</TD>
+ <TD class="hell">Returns 1 of c is contained in the 7bit ASCII, otherwise
+ 0.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="iscntrl"></A>int iscntrl(int __c);</TD>
+ <TD class="dunkel">Returns 1 of c is a control character, otherwise 0.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="isdigit"></A>int isdigit(int __c);</TD>
+ <TD class="hell">Returns 1 of c is a digit, otherwise 0.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="isgraph"></A>int isgraph(int __c);</TD>
+ <TD class="dunkel">Returns 1 of c is printable (excluding space), otherwise
+ 0.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="islower"></A>int islower(int __c);</TD>
+ <TD class="hell">Returns 1 of c is a lower case alphabetic character, otherwise
+ 0.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="isprint"></A>int isprint(int __c);</TD>
+ <TD class="dunkel">Returns 1 of c is printable (including space), otherwise
+ 0.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="ispunct"></A>int ispunct(int __c);</TD>
+ <TD class="hell">Returns 1 of c is a puntuation character, otherwise 0.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="isspace"></A>int isspace(int __c);</TD>
+ <TD class="dunkel">Returns 1 of c is one of space, '\n', '\f', '\r', '\t',
+ '\v', otherwise 0.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="isupper"></A>int isupper(int __c);</TD>
+ <TD class="hell">Returns 1 of c is an upper case alphabetic character, otherwise
+ 0.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="isxdigit"></A>int isxdigit(int __c);</TD>
+ <TD class="dunkel">Returns 1 of c is a hexadecimal digit (0-9 or A-F), otherwise
+ 0.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="toascii"></A>int toascii(int __c);</TD>
+ <TD class="hell">Converts c to a 7bit ASCII character.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="tolower"></A>int tolower(int __c);</TD>
+ <TD class="dunkel">Converts c to lower case.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="toupper"></A>int toupper(int __c);</TD>
+ <TD class="hell">Converts c to upper case.</TD>
+ </TR>
+</TABLE>
+
+<HR>
+
+<A NAME="eeprom.h"><H3>EEPROM.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="eeprom_is_ready"></A>int eeprom_is_ready()
+ /* Macro */</TD>
+ <TD class="hell">Returns != 0 if the EEPROM is ready (bit EEWE in register
+ EECR is 0).</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="eeprom_rb"></A>unsigned char eeprom_rb(unsigned
+ int addr);</TD>
+ <TD class="dunkel">Read one byte from EEPROM address 'addr'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="eeprom_rw"></A>unsigned int eeprom_rw(unsigned int
+ addr);</TD>
+ <TD class="hell">Read one 16-bit word (little endian) from EEPROM address
+ 'addr'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="eeprom_wb"></A>void eeprom_wb(unsigned int addr,
+ unsigned char val);</TD>
+ <TD class="dunkel">Write a byte 'val' to EEPROM address 'addr'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="eeprom_read_block"></A>void eeprom_read_block(void
+ *buf, unsigned int addr, size_t n);</TD>
+ <TD class="hell">Read a block of 'size' bytes from EEPROM address 'addr' to
+ 'buf'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">_EEPUT(addr, val) eeprom_wb(addr, val)<BR>
+ _EEGET(var, addr) (var) = eeprom_rb(addr)</TD>
+ <TD class="dunkel">Compatibility macros for IAR C compatibility.</TD>
+ </TR>
+</TABLE>
+
+<HR>
+
+<A NAME="errno.h"><H3>ERRNO.H</H3></A>
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="errno"></A>int errno;</TD>
+ <TD class="hell">Holds the system-wide error code.</TD>
+ </TR>
+</TABLE>
+
+<HR>
+
+<A NAME="ina90.h"><H3>INA90.H</H3></A>
+
+<P>
+This header file contains some compatibility functions and macros to make
+porting applications from the IAR C compiler to avr-gcc easier. Since you wouldn't
+use it for writing new applications, there's no need for documentation here (lazy
+me).
+</P>
+
+<HR>
+
+<A NAME="interrupt.h"><H3>INTERRUPT.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="sei"></A>sei();</TD>
+ <TD class="hell">Enable Interrupts. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="cli"></A>cli();</TD>
+ <TD class="dunkel">Disable Interrupts. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="enable_external_int"></A>void enable_external_int(
+ unsigned char ints );</TD>
+ <TD class="hell">Write 'ints' to the EIMSK or GIMSK register, depending on
+ whether EIMSK or GIMSK is defined.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="timer_enable_int"></A>void timer_enable_int( unsigned
+ char ints );</TD>
+ <TD class="dunkel">Write 'ints' to the TIMSK register, if TIMSK is defined.</TD>
+ </TR>
+</TABLE>
+
+<HR>
+
+<A NAME="inttypes.h"><H3>INTTYPES.H</H3></A>
+
+<P>
+Defines the following types:
+</P>
+
+<TT>typedef signed char int8_t;<BR>
+typedef unsigned char uint8_t;<BR>
+<BR>
+typedef int int16_t;<BR>
+typedef unsigned int uint16_t;<BR>
+<BR>
+typedef long int32_t;<BR>
+typedef unsigned long uint32_t;<BR>
+<BR>
+typedef long long int64_t;<BR>
+typedef unsigned long long uint64_t;<BR>
+<BR>
+typedef int16_t intptr_t;<BR>
+typedef uint16_t uintptr_t;<BR>
+</TT>
+<P>
+Be careful with the <TT>-mint8</TT> option, though.
+</P>
+
+
+<HR>
+
+<A NAME="io-avr.h"><H3>IO-AVR.H</H3></A>
+
+<P>
+Automagically includes the <A HREF="#ioXXX.h">ioXXX.h</A> header file for the
+target AVR microcontroller.
+</P>
+
+
+<HR>
+
+<A NAME="io.h"><H3>IO.H</H3></A>
+
+<P>
+Just includes both <A HREF="#io-avr.h">io-avr.h</A> and <A HREF="#iomacros.h">iomacros.h</A>.
+</P>
+
+
+<HR>
+
+<A NAME="ioXXX.h"><H3>IOXXX.H</H3></A>
+
+<P>
+I/O-register definitions for the XXX MCU. Refer to the specific datasheet for a
+description of the registers and their functions.
+</P>
+
+
+<HR>
+
+<A NAME="iomacros.h"><H3>IOMACROS.H</H3></A>
+
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="BV"></A>BV( x );</TD>
+ <TD class="hell">Returns the value of bit x (BitValue). Essentially an (1
+ << x). Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="inp"></A>inp( port );</TD>
+ <TD class="dunkel">Read byte from port 'port'. Macro. Automagically distinguishes
+ between constant and non-constant memory I/O addresses and calls the macros
+ __inb or __mmio, respectively.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="outp"></A>outp( value, port );</TD>
+ <TD class="hell">Write 'value' to 'port'. Macro. Similar black magic as inp(
+ port ).</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="cbi"></A>cbi( port, bit );</TD>
+ <TD class="dunkel">Clear bit 'bit' in port 'port'. Macro. Slowly the black
+ magic here is getting the better of me.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="sbi"></A>sbi( port, bit );</TD>
+ <TD class="hell">Set bit 'bit' in port 'port'. Macro. Don't ask.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="bit_is_set"></A>bit_is_set( port, bit );</TD>
+ <TD class="dunkel">Returns something != 0, if bit 'bit' in 'port' is set,
+ otherwise 0. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="bit_is_clear"></A>bit_is_clear( port, bit );</TD>
+ <TD class="hell">Returns something != 0, if bit 'bit' in 'port' is clear,
+ otherwise 0. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="loop_until_bit_is_set"></A>loop_until_bit_ist_set(
+ port, bit );</TD>
+ <TD class="dunkel">Loops until bit 'bit' in port 'port' is set. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="loop_until_bit_is_clear"></A>loop_until_bit_is_clear(
+ port, bit );</TD>
+ <TD class="hell">Loops until bit 'bit' in port 'port' is clear. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="parity_even_bit"></A>parity_even_bit( val );</TD>
+ <TD class="dunkel">I have no idea what this macro does. Any suggestions? Marek?</TD>
+ </TR>
+</TABLE>
+
+
+<HR>
+
+<A NAME="math.h"><H3>MATH.H</H3></A>
+
+<P>
+Constants:
+</P>
+<TT>M_PI = 3.141592653589793238462643</TT><BR>
+Pi.<BR>
+<TT>M_SQRT2 = 1.4142135623730950488016887</TT><BR>
+The square root of two.<BR>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="cos"></A>double cos( double x );</TD>
+ <TD class="hell">Returns the cosine of x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="fabs"></A>double fabs( double x );</TD>
+ <TD class="dunkel">Returns the absolute value of x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="fmod"></A>double fmod( double x, double y );</TD>
+ <TD class="hell">Returns the floating point remainder of x/y.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="modf"></A>double modf( double x, double *iptr
+ );</TD>
+ <TD class="dunkel">Returns the fractional part of x and stores the integral
+ part in *iptr.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="sin"></A>double sin( double x );</TD>
+ <TD class="hell">Returns the sine of x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="sqrt"></A>double sqrt( double x );</TD>
+ <TD class="dunkel">Returns the square root of x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="tan"></A>double tan( double x );</TD>
+ <TD class="hell">Returns the tangens of x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="floor"></A>double floor( double x );</TD>
+ <TD class="dunkel">Returns the biggest integer smaller than x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="ceil"></A>double ceil( doublce x );</TD>
+ <TD class="hell">Returns the smallest integer bigger than x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="frexp"></A>double frexp( double x, int *exp );</TD>
+ <TD class="dunkel">Splits x into a normalized fraction, which is returned,
+ and an exponent, which is stored in *exp.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="ldexp"></A>double ldexp( double x, int exp );</TD>
+ <TD class="hell">Returns the result of x*2^exp.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="exp"></A>double exp( double x );</TD>
+ <TD class="dunkel">Returns e^x;</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="cosh"></A>double cosh( double x );</TD>
+ <TD class="hell">Returns the hyperbolic cosine of x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="sinh"></A>double sinh( double x );</TD>
+ <TD class="dunkel">Returns the hyperbolic sine of x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="tanh"></A>double tanh( double x );</TD>
+ <TD class="hell">Returns the hyperbolc tangens of x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="acos"></A>double acos( double x );</TD>
+ <TD class="dunkel">Returns the arc cosine of x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="asin"></A>double asin( double x );</TD>
+ <TD class="hell">Returns the arc sine of x.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="atan"></A>double atan( double x );</TD>
+ <TD class="dunkel">Returns the arc tangens of x. Output between -PI/2 and
+ PI/2 (inclusive).</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="atan2"></A>double atan2( double x, double y );</TD>
+ <TD class="hell">Returns the arc tangens of x/y. Also takes the signs of both
+ arguments into account when determinig the quadrant. Output between -PI
+ and PI (inclusive).</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="log"></A>double log( double x );</TD>
+ <TD class="dunkel">Returns the natural logarithm of x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="log10"></A>double log10( double x );</TD>
+ <TD class="hell">Returns the logarithm of x to the base 10.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="pow"></A>double pow( double x, double y );</TD>
+ <TD class="dunkel">Returns x^y.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strtod"></A>double strtod( const char *s, char **endptr
+ );</TD>
+ <TD class="hell">Converts an ASCII string to a double.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="square"></A>double square( double x );</TD>
+ <TD class="dunkel">Returns x^2;</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="inverse"></A>double inverse( double x );</TD>
+ <TD class="hell">Returns 1/x;</TD>
+ </TR>
+</TABLE>
+
+<HR>
+
+<A NAME="pgmspace.h"><H3>PGMSPACE.H</H3></A>
+
+<P>
+Another compatibility header file for the IAR C compiler. Contains (or is
+suposed to contain) things like memcpy_P, strcat_P, printf_P etc.
+</P>
+<P>
+Since it's a compatibility header file, I chose not to document it. Yet.
+</P>
+
+
+<HR>
+
+<A NAME="progmem.h"><H3>PROGMEM.H</H3></A>
+
+<P>
+Includes <A HREF="#pgmspace.h">pgmspace.h</A>.
+</P>
+
+
+<HR>
+
+<A NAME="setjmp.h"><H3>SETJMP.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="setjmp"></A>int setjmp( jmp_buf env
+ );</TD>
+ <TD class="hell">Declares a longjmp-Target to be jumped at with longjmp (see
+ below.).</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="longjmp"></A>void longjmp( jmp_buf env, int val
+ );</TD>
+ <TD class="dunkel">Executes a long jump to the position previously defined
+ with <tt>setjmp( 'env' )</tt>, which will return 'val'.</TD>
+ </TR>
+</TABLE>
+
+<HR>
+
+<A NAME="sig-avr.h"><H3>SIG-AVR.H</H3></A>
+
+<P>
+Defines symbols for the interrupt vectors that are stored at the begining of the
+flash memory. Defined are:
+<P>
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="SIG_INTERRUPT"></A>SIG_INTERRUPT0 through
+ SIG_INTERRUPT7</TD>
+ <TD class="hell">Handler function name for the external interrupts 0 through
+ 7. Interrupts > 1 are only available on certain ATmega AVRs.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_OUTPUT_COMPARE2"></A>SIG_OUTPUT_COMPARE2</TD>
+ <TD class="dunkel">Handler function name for the Compare2 interrupt (Analog
+ Comparator).</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_OVERFLOW2"></A>SIG_OVERFLOW2</TD>
+ <TD class="hell">Handler function name for the Overflow2 interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_INPUT_CAPTURE1"></A>SIG_INPUT_CAPTURE1</TD>
+ <TD class="dunkel">Handler function name for the Capture1 interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_OUTPUT_COMPARE1A"></A>SIG_OUTPUT_COMPARE1A</TD>
+ <TD class="hell">Handler function name for the Compare1(A) interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_OUTPUT_COMPARE1B"></A>SIG_OUTPUT_COMPARE1B</TD>
+ <TD class="dunkel">Handler function name for the Compare1(B) interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_OVERFLOW1"></A>SIG_OVERFLOW1</TD>
+ <TD class="hell">Handler function name for the Overflow1 interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_OUTPUT_COMPARE0"></A>SIG_OUTPUT_COMPARE0</TD>
+ <TD class="dunkel">Handler function name for the Compare0 interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_OVERFLOW0"></A>SIG_OVERFLOW0</TD>
+ <TD class="hell">Handler function name for the Overflow0 interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_SPI"></A>SIG_SPI</TD>
+ <TD class="dunkel">Handler function name for the SPI interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_UART_RECV"></A>SIG_UART_RECV</TD>
+ <TD class="hell">Handler function name for the UART(0) Receive Complete interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_UART1_RECV"></A>SIG_UART1_RECV</TD>
+ <TD class="dunkel">Handler function name for the UART1 Receive Complete interrupt.
+ UART1 is only available on the ATmega161.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_UART_DATA"></A>SIG_UART_DATA</TD>
+ <TD class="hell">Handler function name for the UART(0) Data Register Empty
+ interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_UART1_DATA"></A>SIG_UART1_DATA</TD>
+ <TD class="dunkel">Handler function name for the UART1 Data Register Empty
+ interrupt. UART1 is only available on the ATmega161.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_UART_TRANS"></A>SIG_UART_TRANS</TD>
+ <TD class="hell">Handler function name for the UART(0) Transmit Complete interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_UART1_TRANS"></A>SIG_UART1_TRANS</TD>
+ <TD class="dunkel">Handler function name for the UART1 Transmit Complete interrupt.
+ UART1 is only available on the ATmega161.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_ADC"></A>SIG_ADC</TD>
+ <TD class="hell">Handler function name for the ADC Comversion Complete interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="SIG_EEPROM"></A>SIG_EEPROM</TD>
+ <TD class="dunkel">Handler function name for the EEPROM Ready interrupt.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="SIG_COMPARATOR"></A>SIG_COMPARATOR</TD>
+ <TD class="hell">Handler function name for the Analog Comparator interrupt.</TD>
+ </TR>
+</TABLE>
+
+<P>
+Furthermore, the following functions/macros are defined:
+</P>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="SIGNAL"></A>SIGNAL( signame );</TD>
+ <TD class="hell">Used for defining an Signal handler for the signal 'signame'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="INTERRUPT"></A>INTERRUPT( signame );</TD>
+ <TD class="dunkel">Used for defining an Interrupt handler for the signal 'signame'.</TD>
+ <TR>
+</TABLE>
+<p>In a handler defined
+with SIGNAL(), additional interrupts are implicitly forbidden, whereas in an INTERRUPT()
+handler, the first (implicit) instruction is "sei", so that additional interrupts can occur.</p>
+<p>Thanks to Jörg Wunsch for correcting me there.</p>
+
+
+<HR>
+
+<A NAME="signal.h"><H3>SIGNAL.H</H3></A>
+
+<P>
+Includes <A HREF="#sig-avr.h">sig-avr.h</A>. You should use sig-avr.h directly,
+because signal.h might disappear shortly because it conflicts with the "real"
+ANSI C signal.h.
+</P>
+
+
+<HR>
+
+<A NAME="stdlib.h"><H3>STDLIB.H</H3></A>
+
+<P>
+Defines the following types:
+</P>
+<TT>typedef struct {<BR>
+int quot;<BR>
+int rem;<BR>
+} div_t;<BR>
+<BR>
+typedef struct {<BR>
+long quot;<BR>
+long rem;<BR>
+} ldiv_t;<BR>
+<BR>
+typedef int (*__compar_fn_t)(const void *, const void *);</TT><BR>
+Used for comparison functions, eg. qsort().
+
+<P>
+Additionally, the following functions/macros are declared:
+</P>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="abort"></A>void abort();</TD>
+ <TD class="hell">Effectively aborts the execution by putting the MCU into
+ an endless loop.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="labs"></A>long labs( long x );</TD>
+ <TD class="dunkel">Returns the absolute value of x.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="bsearch"></A>void *bsearch(const void *key, const
+ void *base, size_t nmemb,<BR>
+ > size_t size, int (*compar)(const void *, const void *));</TD>
+ <TD class="hell">Performs a binary search on a sorted array.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="div"></A>div_t div( int x, int y );</TD>
+ <TD class="dunkel">Divides x by y and returns the result (quotient and remainder)
+ in a div_t struct (see above).</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="ldiv"></A>ldiv_t ldiv( lomg x, long y );</TD>
+ <TD class="hell">Divides x by y and returns the result (quotient and remainder)
+ in a ldiv_t struct (see above).</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="qsort"></A>void qsort(void *base, size_t nmemb,
+ size_t size, __compar_fn_t compar);</TD>
+ <TD class="dunkel">Sorts an array at 'base' with 'nmemb' elements of size
+ 'size', using the comparison function 'compar'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strtol"></A>long strtol(const char *nptr, char **endptr,
+ int base);</TD>
+ <TD class="hell">Converts the string at 'nptr' to a long integer according
+ to the base 'base'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strtoul"></A>unsigned long strtoul(const char
+ *nptr, char **endptr, int base);</TD>
+ <TD class="dunkel">Converts the string at 'nptr' to an unsigned long integer
+ according to the base 'base'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="atol"></A>long atol( char *p );</TD>
+ <TD class="hell">Converts the string 'p' to a long integer.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="atoi"></A>long atoi( char *p );</TD>
+ <TD class="dunkel">Converts the string 'p' to an integer.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="malloc"></A>void *malloc( size_t size );</TD>
+ <TD class="hell">Allocates 'size' bytes of memory and returns a pointer to
+ it. Implemented, but not tested.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="free"></A>void free( void *ptr );</TD>
+ <TD class="dunkel">Releases the memory at 'ptr', which was previously allocated
+ with malloc(). Implemented, but not tested.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">double strtod( char *, char ** );</TD>
+ <TD class="hell">See <A HREF="#strtod">math.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="itoa"></A>char *itoa( int value, char *string,
+ int radix );</TD>
+ <TD class="dunkel">Converts an integer into a string. This is not ANSI C,
+ but nonetheless (or maybe just because of this) very useful.</TD>
+ </TR>
+</TABLE>
+
+<P>
+The following functions are not yet implemented:
+</P>
+<P>
+<TT>atexit(), atof(), calloc(), rand(), realloc(), srand();</TT>
+</P>
+
+
+<HR>
+
+<A NAME="string-avr.h"><H3>STRING-AVR.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="memcpy"></A>void *memcpy( void *to,
+ void *from, size_t n );</TD>
+ <TD class="hell">Copy 'n' bytes from 'from' to 'to'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="memmove"></A>void *memmove( void *to, void *from,
+ size_t n );</TD>
+ <TD class="dunkel">Copy 'n' bytes of 'from' to 'to', guaranteeing correct
+ behavior for overlapping strings.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="memset"></A>void *memset( void *s, int c, size_t
+ n );</TD>
+ <TD class="hell">Set 'n' bytes of 's' to 'c'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="memcmp"></A>int memcmp( const void *s1, const
+ void *s2, size_t n );</TD>
+ <TD class="dunkel">Compare 'n' bytes of 's1' an 's2'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="memchr"></A>void *memchr( void *s, char c, size_t
+ n );</TD>
+ <TD class="hell">Returns a pointer to the first occurence of 'c' in the first
+ 'n' bytes of 's'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strlen"></A>size_t strlen( char *s );</TD>
+ <TD class="dunkel">Returns the length of 's'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strcpy"></A>char *strcpy( char *dest, char *src
+ );</TD>
+ <TD class="hell">Copies 'src' intro 'dest'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strncpy"></A>char *strncpy( char *dest, char *src,
+ size_t n );</TD>
+ <TD class="dunkel">Copy no more than n bytes from 'src' to 'dest'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strcat"></A>char *strcat( char *dest, char *src
+ );</TD>
+ <TD class="hell">Append 'src' onto 'dest'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strncat"></A>char *strncat( char *dest, char *src,
+ size_t n );</TD>
+ <TD class="dunkel">Append no more than 'n' bytes from 'src' onto 'dest'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strcmp"></A>int strcmp( const char *s1, const char*
+ s2 );</TD>
+ <TD class="hell">Compare 's1' and 's2'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strncmp"></A>int strncmp( const char *s1, const
+ char* s2, size_t n );</TD>
+ <TD class="dunkel">Compare 'n' characters from 's1' and 's2'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strdupa"></A>strdupa( s );</TD>
+ <TD class="hell">Duplicate 's', returning an identical allocated string. Macro.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strndupa"></A>strndupa( s, n );</TD>
+ <TD class="dunkel">Return an allocated copy of at most 'n' bytes of 's'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strchr"></A>char *strchr( const char *s, int c );</TD>
+ <TD class="hell">Return a pointer to the first occurence of 'c' in 's'.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strrchr"></A>char *strrchr( const char *s, int
+ c );</TD>
+ <TD class="dunkel">Return a pointer to the last occurence of 'c' in 's'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strnlen"></A>size_t strnlen( const char *s, size_t
+ maxlen );</TD>
+ <TD class="hell">Returns the length of 's', but at most 'maxlen'.</TD>
+ </TR>
+</TABLE>
+
+
+<HR>
+
+<A NAME="string.h"><H3>STRING.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="memccpy"></A>extern void *memccpy(void
+ *dest, const void *src, int c, size_t n);</TD>
+ <TD class="hell">Copy at most 'n bytes from 'src' to 'dest' until character
+ 'c' is found.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern void *memchr(const void *, int, size_t);</TD>
+ <TD class="dunkel"><A HREF="#memchr">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern int memcmp(const void *, const void *, size_t);</TD>
+ <TD class="hell"><A HREF="#memcmp">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern void *memcpy(void *, const void *, size_t);</TD>
+ <TD class="dunkel"><A HREF="#memcpy">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern void *memmove(void *dest, const void *src, size_t
+ n);</TD>
+ <TD class="hell"><A HREF="#memmove">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern void *memset(void *, int, size_t);</TD>
+ <TD class="dunkel"><A HREF="#memset">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern char *strcat(char *, const char *);</TD>
+ <TD class="hell"><A HREF="#strcat">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern char *strchr(const char *, int);</TD>
+ <TD class="dunkel"><A HREF="#strchr">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern int strcmp(const char *, const char *);</TD>
+ <TD class="hell"><A HREF="#strcmp">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern char *strcpy(char *, const char *);</TD>
+ <TD class="dunkel"><A HREF="#strcpy">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strcasecmp"></A>extern int strcasecmp(const char
+ *s1, const char *s2);</TD>
+ <TD class="hell">Compare 's1' and 's2', ignoring case.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern size_t strlen(const char *);</TD>
+ <TD class="dunkel"><A HREF="#strlen">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strlwr"></A>extern char *strlwr(char *s);</TD>
+ <TD class="hell">Converts all upper case characters in 's' to lower case.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern char *strncat(char *, const char *, size_t);</TD>
+ <TD class="dunkel"><A HREF="#strncat">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern int strncmp(const char *, const char *, size_t);</TD>
+ <TD class="hell"><A HREF="#strncmp">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern char *strncpy(char *, const char *, size_t);</TD>
+ <TD class="dunkel"><A HREF="#strncpy">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strncasecmp"></A>extern int strncasecmp(const char
+ *, const char *, size_t);</TD>
+ <TD class="hell">Compare 'n' bytes of 's1' and 's2', ignoring case.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel">extern size_t strnlen(const char *, size_t);</TD>
+ <TD class="dunkel"><A HREF="#strnlen">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="hell">extern char *strrchr(const char *, int);</TD>
+ <TD class="hell"><A HREF="#strrchr">See string-avr.h</A>.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strrev"></A>extern char *strrev(char *s1);</TD>
+ <TD class="dunkel">Probably reverses 's1'.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="strstr"></A>extern char *strstr(const char *haystack,
+ const char *needle);</TD>
+ <TD class="hell">Locate 'needle' in 'haystack', and return a pointer to it.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="strupr"></A>extern char *strupr(char *s);</TD>
+ <TD class="dunkel">Converts all lower case characters in 's' to upper case.</TD>
+ </TR>
+</TABLE>
+
+
+<HR>
+
+<A NAME="timer.h"><H3>TIMER.H</H3></A>
+
+<P>
+Defines an enumeration for the Timer Control Register:
+</P>
+
+<TT>enum {<BR>
+STOP = 0,<BR>
+CK = 1,<BR>
+CK8 = 2,<BR>
+CK64 = 3,<BR>
+CK256 = 4,<BR>
+CK1024 = 5,<BR>
+T0_FALLING_EDGE = 6,<BR>
+T0_RISING_EDGE = 7<BR>
+};<BR>
+</TT>
+
+<P>
+And there are the following functions:
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="timer0_source"></A>void timer0_source(
+ unsigned int src );</TD>
+ <TD class="hell">Writes 'src' into the TCCR0 register.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="timer0_stop"></A>void timer0_stop();</TD>
+ <TD class="dunkel">Stops Timer 0 by clearing the TCNT0 register.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="timer0_start"></A>coid timer0_start();</TD>
+ <TD class="hell">Starts Timer 0 by writing a 1 into the TCNT0 register.</TD>
+ </TR>
+</TABLE>
+
+
+<HR>
+
+<A NAME="twi.h"><H3>TWI.H</H3></A>
+
+<P>
+Defines several constants for the ATmega163.
+</P>
+
+
+<HR>
+
+<A NAME="wdt.h"><H3>WDT.H</H3></A>
+
+<TABLE WIDTH="80%" ALIGN="CENTER" BORDER="0">
+ <TR>
+ <TD WIDTH="30%" class="hell"><A NAME="wdt_reset"></A>wdt_reset();</TD>
+ <TD class="hell">Resets the Watchdog Timer.</TD>
+ </TR>
+ <TR>
+ <TD class="dunkel"><A NAME="wdt_enable"></A>wdt_enable( timeout );</TD>
+ <TD class="dunkel">Enables the Watchdog Timer with timeout 'timeout'. For
+ the actual timeout value, refer to the Atmel AVR datasheets.</TD>
+ </TR>
+ <TR>
+ <TD class="hell"><A NAME="wdt_disable"></A>wdt_disable();</TD>
+ <TD class="hell">Disables the Watchdog Timer.</TD>
+ </TR>
+</TABLE>
+
+</BODY>
+</HTML>
+
|