Hello community,
here is the log from the commit of package avr-libc
checked in at Tue Jan 9 17:42:28 CET 2007.
--------
--- avr-libc/avr-libc.changes 2007-01-09 01:10:11.000000000 +0100
+++ /mounts/work_src_done/STABLE/avr-libc/avr-libc.changes 2007-01-09 14:52:14.391972000 +0100
@@ -1,0 +2,13 @@
+Tue Jan 9 13:36:04 CET 2007 - jw@suse.de
+
+- update to 1.4.5
+ ATmega165P/169P support. Fixes to the HD44780 driver.
+ Power Management API. New "asmdemo" example.
+ sleep.h: Fix the entry for the ATtiny2313.
+ new devices: ATmega2560, ATmega2561.
+ fp_split.S: Pop 3 bytes for avr6
+ Bugs fixed: 15512 16125 16411 16434 16441
+ 16868 17068 17470 17551 17591 17608
+- make test now tests 3 CPUs
+
+-------------------------------------------------------------------
Old:
----
avr-libc-1.4.4.tar.bz2
avr-libc-manpages-1.4.4.tar.bz2
avr-libc-user-manual-1.4.4.tar.bz2
logicp-1.00.tgz
New:
----
avr-libc-1.4.5.tar.bz2
avr-libc-manpages-1.4.5.tar.bz2
avr-libc-user-manual-1.4.5.tar.bz2
logicp-1.01.tgz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ avr-libc.spec ++++++
--- /var/tmp/diff_new_pack.FF6483/_old 2007-01-09 17:42:14.000000000 +0100
+++ /var/tmp/diff_new_pack.FF6483/_new 2007-01-09 17:42:14.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package avr-libc (Version 1.4.4)
+# spec file for package avr-libc (Version 1.4.5)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,8 +12,8 @@
Name: avr-libc
BuildRequires: cross-avr-binutils cross-avr-gcc doxygen
-Version: 1.4.4
-Release: 24
+Version: 1.4.5
+Release: 1
URL: http://savannah.nongnu.org/projects/avr-libc
Group: Development/Libraries/C and C++
License: BSD License and BSD-like
@@ -21,7 +21,7 @@
Source: http://savannah.nongnu.org/download/%{name}/%{name}-%{version}.tar.bz2
Source1: http://savannah.nongnu.org/download/%{name}/%{name}-user-manual-%{version}.tar.bz2
Source2: http://savannah.nongnu.org/download/%{name}/%{name}-manpages-%{version}.tar.bz2
-Source3: logicp-1.00.tgz
+Source3: logicp-1.01.tgz
Patch: no64bit_int.patch
Autoreqprov: on
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -41,17 +41,18 @@
%prep
%setup -b 3
-%ifarch x86_64 ia64 ppc64
-# avr-64bit datatypes fail on 64bit host architectures.
-# it is a bug, isn't it? 2007-01-08, jw
%patch -p1
-%else
-%if "%(/bin/uname -i)" == "x86_64"
-# we come here with BUILD_DIST=i386 on a x86_64 machine.
-# we need to cover this case too, to make the selftests happy.
-%patch -p1
-%endif
-%endif
+# %ifarch x86_64 ia64 ppc64
+# # avr-64bit datatypes fail on 64bit host architectures.
+# # it is a bug, isn't it? 2007-01-08, jw
+# %patch -p1
+# %else
+# %if "%(/bin/uname -i)" == "x86_64"
+# # we come here with BUILD_DIST=i386 on a x86_64 machine.
+# # we need to cover this case too, to make the selftests happy.
+# %patch -p1
+# %endif
+# %endif
%build
export CFLAGS="$RPM_OPT_FLAGS"
@@ -74,12 +75,15 @@
tar jxvf %{S:1} -C $RPM_BUILD_ROOT/usr/share/doc/packages
tar jxvf %{S:2} -C $RPM_BUILD_ROOT/$PREFIX/share
ln -s /usr/share/doc/packages/%{name}-user-manual-%{version} $RPM_BUILD_ROOT/$PREFIX/share/doc/%{name}-%{version}/user-manual
-### selftest
-cd ../logicp-1.00
+#
+### selftest ###
+cd ../logicp*
## how do we tell the linker that crt*.o is at a nonstandard location?
-ln -s $RPM_BUILD_ROOT/opt/cross/avr/lib/crt*.o .
-make CFLAGS="-Wall -g -Os -mint8 -I$RPM_BUILD_ROOT/opt/cross/avr/include/ -L$RPM_BUILD_ROOT/opt/cross/avr/lib"
-ls -l logicp.hex
+ln -s $RPM_BUILD_ROOT/opt/cross/avr/lib/crttn*.o .
+ln -s $RPM_BUILD_ROOT/opt/cross/avr/lib/avr?/crtm*.o .
+make test CFLAGS="-Wall -g -Os -mint8 -I$RPM_BUILD_ROOT/opt/cross/avr/include/ -L$RPM_BUILD_ROOT/opt/cross/avr/lib/avr4" CPU=mega8
+make test CFLAGS="-Wall -g -Os -mint8 -I$RPM_BUILD_ROOT/opt/cross/avr/include/ -L$RPM_BUILD_ROOT/opt/cross/avr/lib/avr4" CPU=mega48
+make test CFLAGS="-Wall -g -Os -mint8 -I$RPM_BUILD_ROOT/opt/cross/avr/include/ -L$RPM_BUILD_ROOT/opt/cross/avr/lib" CPU=tiny2313
%clean
rm -rf $RPM_BUILD_ROOT
@@ -95,6 +99,16 @@
%changelog -n avr-libc
* Tue Jan 09 2007 - jw@suse.de
+- update to 1.4.5
+ ATmega165P/169P support. Fixes to the HD44780 driver.
+ Power Management API. New "asmdemo" example.
+ sleep.h: Fix the entry for the ATtiny2313.
+ new devices: ATmega2560, ATmega2561.
+ fp_split.S: Pop 3 bytes for avr6
+ Bugs fixed: 15512 16125 16411 16434 16441
+ 16868 17068 17470 17551 17591 17608
+- make test now tests 3 CPUs
+* Tue Jan 09 2007 - jw@suse.de
- compiling and linking my logicp application
as a simple selftest.
- avr-64bit datatypes fail on 64bit hosts.
++++++ avr-libc-1.4.4.tar.bz2 -> avr-libc-1.4.5.tar.bz2 ++++++
++++ 15669 lines of diff (skipped)
++++++ avr-libc-manpages-1.4.4.tar.bz2 -> avr-libc-manpages-1.4.5.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/acks.3 new/man/man3/acks.3
--- old/man/man3/acks.3 2006-04-20 23:32:51.000000000 +0200
+++ new/man/man3/acks.3 2006-10-09 22:29:27.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "acks" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "acks" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/asmdemo.3 new/man/man3/asmdemo.3
--- old/man/man3/asmdemo.3 1970-01-01 01:00:00.000000000 +0100
+++ new/man/man3/asmdemo.3 2006-10-09 22:29:32.000000000 +0200
@@ -0,0 +1,50 @@
+.TH "Combining C and assembly source files" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+Combining C and assembly source files \- For time- or space-critical applications, it can often be desirable to combine C code (for easy maintenance) and assembly code (for maximal speed or minimal code size) together. This demo provides an example of how to do that.
+.PP
+The objective of the demo is to decode radio-controlled model PWM signals, and control an output PWM based on the current input signal's value. The incoming PWM pulses follow a standard encoding scheme where a pulse width of 920 microseconds denotes one end of the scale (represented as 0 % pulse width on output), and 2120 microseconds mark the other end (100 % output PWM). Normally, multiple channels would be encoded that way in subsequent pulses, followed by a larger gap, so the entire frame will repeat each 14 through 20 ms, but this is ignored for the purpose of the demo, so only a single input PWM channel is assumed.
+.PP
+The basic challenge is to use the cheapest controller available for the task, an ATtiny13 that has only a single timer channel. As this timer channel is required to run the outgoing PWM signal generation, the incoming PWM decoding had to be adjusted to the constraints set by the outgoing PWM.
+.PP
+As PWM generation toggles the counting direction of timer 0 between up and down after each 256 timer cycles, the current time cannot be deduced by reading TCNT0 only, but the current counting direction of the timer needs to be considered as well. This requires servicing interrupts whenever the timer hits \fITOP\fP (255) and \fIBOTTOM\fP (0) to learn about each change of the counting direction. For PWM generation, it is usually desired to run it at the highest possible speed so filtering the PWM frequency from the modulated output signal is made easy. Thus, the PWM timer runs at full CPU speed. This causes the overflow and compare match interrupts to be triggered each 256 CPU clocks, so they must run with the minimal number of processor cycles possible in order to not impose a too high CPU load by these interrupt service routines. This is the main reason to implement the entire interrupt handling in fine-tuned assembly code rather than in C.
+.PP
+In order to verify parts of the algorithm, and the underlying hardware, the demo has been set up in a way so the pin-compatible but more expensive ATtiny45 (or its siblings ATtiny25 and ATtiny85) could be used as well. In that case, no separate assembly code is required, as two timer channels are avaible.
+.SH "Hardware setup"
+.PP
+The incoming PWM pulse train is fed into PB4. It will generate a pin change interrupt there on eache edge of the incoming signal.
+.PP
+The outgoing PWM is generated through OC0B of timer channel 0 (PB1). For demonstration purposes, a LED should be connected to that pin (like, one of the LEDs of an STK500).
+.PP
+The controllers run on their internal calibrated RC oscillators, 1.2 MHz on the ATtiny13, and 1.0 MHz on the ATtiny45.
+.SH "A code walkthrough"
+.PP
+.SS "asmdemo.c"
+After the usual include files, two variables are defined. The first one, \fCpwm_incoming\fP is used to communicate the most recent pulse width detected by the incoming PWM decoder up to the main loop.
+.PP
+The second variable actually only constitutes of a single bit, \fCintbits.pwm_received\fP. This bit will be set whenever the incoming PWM decoder has updated \fCpwm_incoming\fP.
+.PP
+Both variables are marked \fIvolatile\fP to ensure their readers will always pick up an updated value, as both variables will be set by interrupt service routines.
+.PP
+The function \fCioinit()\fP initializes the microcontroller peripheral devices. In particular, it starts timer 0 to generate the outgoing PWM signal on OC0B. Setting OCR0A to 255 (which is the \fITOP\fP value of timer 0) is used to generate a timer 0 overflow A interrupt on the ATtiny13. This interrupt is used to inform the incoming PWM decoder that the counting direction of channel 0 is just changing from up to down. Likewise, an overflow interrupt will be generated whenever the countdown reached \fIBOTTOM\fP (value 0), where the counter will again alter its counting direction to upwards. This information is needed in order to know whether the current counter value of \fCTCNT0\fP is to be evaluated from bottom or top.
+.PP
+Further, \fCioinit()\fP activates the pin-change interrupt \fCPCINT0\fP on any edge of PB4. Finally, PB1 (OC0B) will be activated as an output pin, and global interrupts are being enabled.
+.PP
+In the ATtiny45 setup, the C code contains an ISR for \fCPCINT0\fP. At each pin-change interrupt, it will first be analyzed whether the interrupt was caused by a rising or a falling edge. In case of the rising edge, timer 1 will be started with a prescaler of 16 after clearing the current timer value. Then, at the falling edge, the current timer value will be recorded (and timer 1 stopped), the pin-change interrupt will be suspended, and the upper layer will be notified that the incoming PWM measurement data is available.
+.PP
+Function \fCmain()\fP first initializes the hardware by calling \fCioinit()\fP, and then waits until some incoming PWM value is available. If it is, the output PWM will be adjusted by computing the relative value of the incoming PWM. Finally, the pin-change interrupt is re-enabled, and the CPU is put to sleep.
+.SS "project.h"
+In order for the interrupt service routines to be as fast as possible, some of the CPU registers are set aside completely for use by these routines, so the compiler would not use them for C code. This is arranged for in \fCproject.h\fP.
+.PP
+The file is divided into one section that will be used by the assembly source code, and another one to be used by C code. The assembly part is distinguished by the preprocessing macro \fC__ASSEMBLER__\fP (which will be automatically set by the compiler front-end when preprocessing an assembly-language file), and it contains just macros that give symbolic names to a number of CPU registers. The preprocessor will then replace the symbolic names by their right-hand side definitions before calling the assembler.
+.PP
+In C code, the compiler needs to see variable declarations for these objects. This is done by using declarations that bind a variable permanently to a CPU register (see \fBHow to permanently bind a variable to a register?\fP). Even in case the C code never has a need to access these variables, declaring the register binding that way causes the compiler to not use these registers in C code at all.
+.PP
+The \fCflags\fP variable needs to be in the range of r16 through r31 as it is the target of a \fIload immediate\fP (or \fCSER\fP) instruction that is not applicable to the entire register file.
+.SS "isrs.S"
+This file is a preprocessed assembly source file. The C preprocessor will be run by the compiler front-end first, resolving all \fCinclude\fP, \fCdefine\fP etc. directives. The resulting program text will then be passed on to the assembler.
+.PP
+As the C preprocessor strips all C-style comments, preprocessed assembly source files can have both, C-style (\fC/* ... \fP
+.PP
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/assembler.3 new/man/man3/assembler.3
--- old/man/man3/assembler.3 2006-04-20 23:32:52.000000000 +0200
+++ new/man/man3/assembler.3 2006-10-09 22:29:27.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "assembler" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "assembler" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_assert.3 new/man/man3/avr_assert.3
--- old/man/man3/avr_assert.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/avr_assert.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Diagnostics" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Diagnostics" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_boot.3 new/man/man3/avr_boot.3
--- old/man/man3/avr_boot.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/avr_boot.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Bootloader Support Utilities" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Bootloader Support Utilities" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -14,6 +14,8 @@
.PP
The macros in this module provide a C language interface to the bootloader support functionality of certain AVR processors. These macros are designed to work with all sizes of flash memory.
.PP
+Global interrupts are not automatically disabled for these macros. It is left up to the programmer to do this. See the code example below. Also see the processor datasheet for caveats on having global interrupts enabled during writing of the Flash.
+.PP
\fBNote:\fP
.RS 4
Not all AVR processors provide bootloader support. See your processor datasheet to see if it provides bootloader support.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_eeprom.3 new/man/man3/avr_eeprom.3
--- old/man/man3/avr_eeprom.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/avr_eeprom.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": EEPROM handling" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": EEPROM handling" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_errno.3 new/man/man3/avr_errno.3
--- old/man/man3/avr_errno.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_errno.3 2006-10-09 22:29:30.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": System Errors" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": System Errors" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_interrupts.3 new/man/man3/avr_interrupts.3
--- old/man/man3/avr_interrupts.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/avr_interrupts.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Interrupts" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Interrupts" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -91,22 +91,19 @@
.RI "#define \fBISR\fP(vector)"
.br
.ti -1c
-.RI "#define \fBSIGNAL\fP(signame)"
+.RI "#define \fBSIGNAL\fP(vector)"
.br
.ti -1c
.RI "#define \fBEMPTY_INTERRUPT\fP(vector)"
.br
+.ti -1c
+.RI "#define \fBISR_ALIAS\fP(vector, target_vector)"
+.br
.in -1c
.SH "Define Documentation"
.PP
.SS "#define EMPTY_INTERRUPT(vector)"
.PP
-\fBValue:\fP
-.PP
-.nf
-void vector (void) __attribute__ ((naked)); \
-void vector (void) { __asm__ __volatile__ ('reti' ::); }
-.fi
.PP
.nf
#include
@@ -123,30 +120,48 @@
.SS "#define ISR(vector)"
.PP
-\fBValue:\fP
.PP
.nf
-void vector (void) __attribute__ ((signal)); \
-void vector (void)
+ #include
.fi
.PP
+.PP
+Introduces an interrupt handler function (interrupt service routine) that runs with global interrupts initially disabled.
+.PP
+\fCvector\fP must be one of the interrupt vector names that are valid for the particular MCU type.
+.SS "#define ISR_ALIAS(vector, target_vector)"
+.PP
+.PP
.nf
#include
.fi
.PP
.PP
-Introduces an interrupt handler function (interrupt service routine) that runs with global interrupts initially disabled.
+Defines \fCvector\fP to point to the same interrupt vector as \fCtarget_vector\fP. That way, a single interrupt vector implementation can be used to serve several interrupt sources.
.PP
-\fCvector\fP must be one of the interrupt vector names that are valid for the particular MCU type.
-.SS "#define SIGNAL(signame)"
+Do not define a function body.
+.PP
+\fBNote:\fP
+.RS 4
+This requires a recent version of AVR-GCC to work (GCC 4.2 or patched GCC 4.1.x).
+.RE
.PP
-\fBValue:\fP
+Example:
.PP
.nf
-void signame (void) __attribute__ ((signal)); \
-void signame (void)
+ ISR(INT0_vect)
+ {
+ PORTB = 42;
+ }
+
+ ISR_ALIAS(INT1_vect, INT0_vect);
+
.fi
.PP
+
+.SS "#define SIGNAL(vector)"
+.PP
+.PP
.nf
#include
.fi
@@ -156,9 +171,9 @@
.PP
This is the same as the ISR macro.
.PP
-\fBNote:\fP
+\fBDeprecated\fP
.RS 4
-Do not use anymore in new code, it will be deprecated in a future release.
+Do not use anymore in new code.
.RE
.PP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_inttypes.3 new/man/man3/avr_inttypes.3
--- old/man/man3/avr_inttypes.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_inttypes.3 2006-10-09 22:29:30.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Integer Type conversions" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Integer Type conversions" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_io.3 new/man/man3/avr_io.3
--- old/man/man3/avr_io.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/avr_io.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": AVR device-specific IO definitions" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": AVR device-specific IO definitions" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_math.3 new/man/man3/avr_math.3
--- old/man/man3/avr_math.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_math.3 2006-10-09 22:29:30.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Mathematics" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Mathematics" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_pgmspace.3 new/man/man3/avr_pgmspace.3
--- old/man/man3/avr_pgmspace.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_pgmspace.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Program Space String Utilities" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Program Space String Utilities" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_power.3 new/man/man3/avr_power.3
--- old/man/man3/avr_power.3 1970-01-01 01:00:00.000000000 +0100
+++ new/man/man3/avr_power.3 2006-10-09 22:29:29.000000000 +0200
@@ -0,0 +1,151 @@
+.TH ": Power Reduction Management" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+: Power Reduction Management \- .PP
+.nf
+ #include
+.fi
+.PP
+.PP
+Many AVRs contain a Power Reduction Register (PRR) or Registers (PRRx) that allow you to reduce power consumption by disabling or enabling various on-board peripherals as needed.
+.PP
+There are many macros in this header file that provide an easy interface to enable or disable on-board peripherals to reduce power. See the table below.
+.PP
+\fBNote:\fP
+.RS 4
+Not all AVR devices have a Power Reduction Register (for example the ATmega128). On those devices without a Power Reduction Register, these macros are not available.
+.PP
+Not all AVR devices contain the same peripherals (for example, the LCD interface), or they will be named differently (for example, USART and USART0). Please consult your device's datasheet, or the header file, to find out which macros are applicable to your device.
+.RE
+.PP
+ \fBPower Macro\fP \fBDescription\fP \fBApplicable for device\fP
+.PP
+power_adc_enable() Enable the Analog to Digital Converter module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_adc_disable() Disable the Analog to Digital Converter module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_lcd_enable() Enable the LCD module. ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490
+.PP
+power_lcd_disable(). Disable the LCD module. ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490
+.PP
+power_psc0_enable() Enable the Power Stage Controller 0 module. AT90PWM1, AT90PWM2, AT90PWM3
+.PP
+power_psc0_disable() Disable the Power Stage Controller 0 module. AT90PWM1, AT90PWM2, AT90PWM3
+.PP
+power_psc1_enable() Enable the Power Stage Controller 1 module. AT90PWM1, AT90PWM2, AT90PWM3
+.PP
+power_psc1_disable() Disable the Power Stage Controller 1 module. AT90PWM1, AT90PWM2, AT90PWM3
+.PP
+power_psc2_enable() Enable the Power Stage Controller 2 module. AT90PWM1, AT90PWM2, AT90PWM3
+.PP
+power_psc2_disable() Disable the Power Stage Controller 2 module. AT90PWM1, AT90PWM2, AT90PWM3
+.PP
+power_spi_enable() Enable the Serial Peripheral Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
+.PP
+power_spi_disable() Disable the Serial Peripheral Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
+.PP
+power_timer0_enable() Enable the Timer 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_timer0_disable() Disable the Timer 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_timer1_enable() Enable the Timer 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_timer1_disable() Disable the Timer 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_timer2_enable() Enable the Timer 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
+.PP
+power_timer2_disable() Disable the Timer 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
+.PP
+power_timer3_enable() Enable the Timer 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
+.PP
+power_timer3_disable() Disable the Timer 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
+.PP
+power_timer4_enable() Enable the Timer 4 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_timer4_disable() Disable the Timer 4 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_timer5_enable() Enable the Timer 5 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_timer5_disable() Disable the Timer 5 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_twi_enable() Enable the Two Wire Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168
+.PP
+power_twi_disable() Disable the Two Wire Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168
+.PP
+power_usart_enable() Enable the USART module. AT90PWM2, AT90PWM3
+.PP
+power_usart_disable() Disable the USART module. AT90PWM2, AT90PWM3
+.PP
+power_usart0_enable() Enable the USART 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
+.PP
+power_usart0_disable() Disable the USART 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
+.PP
+power_usart1_enable() Enable the USART 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P
+.PP
+power_usart1_disable() Disable the USART 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P
+.PP
+power_usart2_enable() Enable the USART 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_usart2_disable() Disable the USART 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_usart3_enable() Enable the USART 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_usart3_disable() Disable the USART 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
+.PP
+power_usb_enable() Enable the USB module. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
+.PP
+power_usb_disable() Disable the USB module. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
+.PP
+power_usi_enable() Enable the Universal Serial Interface module. ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_usi_disable() Disable the Universal Serial Interface module. ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_vadc_enable() Enable the Voltage ADC module. ATmega406
+.PP
+power_vadc_disable() Disable the Voltage ADC module. ATmega406
+.PP
+power_all_enable() Enable all modules. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+power_all_disable() Disable all modules. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM3, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+.PP
+Some of the newer AVRs contain a System Clock Prescale Register (CLKPR) that allows you to decrease the system clock frequency and the power consumption when the need for processing power is low. Below are two macros and an enumerated type that can be used to interface to the Clock Prescale Register.
+.PP
+\fBNote:\fP
+.RS 4
+Not all AVR devices have a Clock Prescale Register. On those devices without a Clock Prescale Register, these macros are not available.
+.RE
+.PP
+.PP
+.nf
+typedef enum
+{
+ clock_div_1 = 0,
+ clock_div_2 = 1,
+ clock_div_4 = 2,
+ clock_div_8 = 3,
+ clock_div_16 = 4,
+ clock_div_32 = 5,
+ clock_div_64 = 6,
+ clock_div_128 = 7,
+ clock_div_256 = 8
+} clock_div_t;
+.fi
+.PP
+ Clock prescaler setting enumerations.
+.PP
+.PP
+.nf
+ clock_prescale_set(x)
+.fi
+.PP
+ Set the clock prescaler register select bits, selecting a system clock division setting. They type of x is clock_div_t.
+.PP
+.PP
+.nf
+ clock_prescale_get()
+.fi
+.PP
+ Gets and returns the clock prescaler register setting. The return type is clock_div_t.
+.PP
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_sfr.3 new/man/man3/avr_sfr.3
--- old/man/man3/avr_sfr.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/avr_sfr.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Special function registers" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Special function registers" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -9,7 +9,7 @@
.PP
The AVR series of microcontrollers offers two different paradigms to perform this task. There's a separate IO address space available (as it is known from some high-level CISC CPUs) that can be addressed with specific IO instructions that are applicable to some or all of the IO address space (\fCin\fP, \fCout\fP, \fCsbi\fP etc.). The entire IO address space is also made available as \fImemory-mapped IO\fP, i. e. it can be accessed using all the MCU instructions that are applicable to normal data memory. The IO register space is mapped into the data memory address space with an offset of 0x20 since the bottom of this space is reserved for direct access to the MCU registers. (Actual SRAM is available only behind the IO register area, starting at either address 0x60, or 0x100 depending on the device.)
.PP
-AVR Libc supports both these paradigms. While by default, the implementation uses memory-mapped IO access, this is hidden from the programmer. So the programmer can access IO registers either with a special function like \fCoutb()\fP:
+AVR Libc supports both these paradigms. While by default, the implementation uses memory-mapped IO access, this is hidden from the programmer. So the programmer can access IO registers either with a special function like \fC\fBoutb()\fP\fP:
.PP
.PP
.nf
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_sfr_notes.3 new/man/man3/avr_sfr_notes.3
--- old/man/man3/avr_sfr_notes.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_sfr_notes.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,15 +1,16 @@
-.TH "Additional notes from " 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "Additional notes from " 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-Additional notes from \- The \fC file is included by all of the \fC files, which use macros defined here to make the special function register definitions look like C variables or simple constants, depending on the \fC_SFR_ASM_COMPAT\fP define. Some examples from \fC to show how to define such macros:
+Additional notes from \- The \fC file is included by all of the \fC files, which use macros defined here to make the special function register definitions look like C variables or simple constants, depending on the \fC_SFR_ASM_COMPAT\fP define. Some examples from \fC to show how to define such macros:
.PP
.PP
.nf
-#define PORTA _SFR_IO8(0x1b)
-#define TCNT1 _SFR_IO16(0x2c)
-#define PORTF _SFR_MEM8(0x61)
-#define TCNT3 _SFR_MEM16(0x88)
+#define PORTA _SFR_IO8(0x02)
+#define EEAR _SFR_IO16(0x21)
+#define UDR0 _SFR_MEM8(0xC6)
+#define TCNT3 _SFR_MEM16(0x94)
+#define CANIDT _SFR_MEM32(0xF0)
.fi
.PP
.PP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_sleep.3 new/man/man3/avr_sleep.3
--- old/man/man3/avr_sleep.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_sleep.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Power Management and Sleep Modes" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Power Management and Sleep Modes" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -13,7 +13,7 @@
.PP
Use of the \fCSLEEP\fP instruction can allow an application to reduce its power comsumption considerably. AVR devices can be put into different sleep modes. Refer to the datasheet for the details relating to the device you are using.
.PP
-There are several macros provided in this header file to actually put the device into sleep mode. The simplest way is to optionally set the desired sleep mode using \fC\fBset_sleep_mode()\fP\fP (it usually defaults to idle mode where the CPU is put on sleep but all peripheral clocks are still running), and then call \fC\fBsleep_mode()\fP\fP. Unless it is the purpose to lock the CPU hard (until a hardware reset), interrupts need to be enabled at this point. This macro automatically takes care to enable the sleep mode in the CPU before going to sleep, and disable it again afterwards.
+There are several macros provided in this header file to actually put the device into sleep mode. The simplest way is to optionally set the desired sleep mode using \fC\fBset_sleep_mode()\fP\fP (it usually defaults to idle mode where the CPU is put to sleep but all peripheral clocks are still running), and then call \fC\fBsleep_mode()\fP\fP. Unless it is the purpose to lock the CPU hard (until a hardware reset), interrupts need to be enabled at this point. This macro automatically takes care to enable the sleep mode in the CPU before going to sleep, and disable it again afterwards.
.PP
As this combined macro might cause race conditions in some situations, the individual steps of manipulating the sleep enable (SE) bit, and actually issuing the \fCSLEEP\fP instruction are provided in the macros \fC\fBsleep_enable()\fP\fP, \fC\fBsleep_disable()\fP\fP, and \fC\fBsleep_cpu()\fP\fP. This also allows for test-and-sleep scenarios that take care of not missing the interrupt that will awake the device from sleep.
.PP
@@ -36,7 +36,7 @@
.fi
.PP
.PP
-This sequence ensures an atomic test of \fCsome_condition\fP with interrupts being disabled. If the condition is met, sleep mode will be prepared, and the \fCSLEEP\fP instruction will be scheduled immediately after an \fCSEI\fP instruction. As the intruction right after the \fCSEI\fP is guaranteed to be executed before an interrupt could trigger, it is sure the device will really be put on sleep.
+This sequence ensures an atomic test of \fCsome_condition\fP with interrupts being disabled. If the condition is met, sleep mode will be prepared, and the \fCSLEEP\fP instruction will be scheduled immediately after an \fCSEI\fP instruction. As the intruction right after the \fCSEI\fP is guaranteed to be executed before an interrupt could trigger, it is sure the device will really be put to sleep.
.PP
.SS "Sleep Modes"
\fBNote:\fP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_stdint.3 new/man/man3/avr_stdint.3
--- old/man/man3/avr_stdint.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_stdint.3 2006-10-09 22:29:30.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Standard Integer Types" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Standard Integer Types" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_stdio.3 new/man/man3/avr_stdio.3
--- old/man/man3/avr_stdio.3 2006-04-20 23:32:55.000000000 +0200
+++ new/man/man3/avr_stdio.3 2006-10-09 22:29:31.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Standard IO facilities" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Standard IO facilities" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_stdlib.3 new/man/man3/avr_stdlib.3
--- old/man/man3/avr_stdlib.3 2006-04-20 23:32:55.000000000 +0200
+++ new/man/man3/avr_stdlib.3 2006-10-09 22:29:31.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": General utilities" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": General utilities" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_string.3 new/man/man3/avr_string.3
--- old/man/man3/avr_string.3 2006-04-20 23:32:55.000000000 +0200
+++ new/man/man3/avr_string.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Strings" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Strings" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_version.3 new/man/man3/avr_version.3
--- old/man/man3/avr_version.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_version.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": avr-libc version macros" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": avr-libc version macros" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -21,16 +21,16 @@
.in +1c
.ti -1c
-.RI "#define \fB__AVR_LIBC_VERSION_STRING__\fP '1.4.4'"
+.RI "#define \fB__AVR_LIBC_VERSION_STRING__\fP '1.4.5'"
.br
.ti -1c
-.RI "#define \fB__AVR_LIBC_VERSION__\fP 10404UL"
+.RI "#define \fB__AVR_LIBC_VERSION__\fP 10405UL"
.br
.ti -1c
-.RI "#define \fB__AVR_LIBC_DATE_STRING__\fP '20060420'"
+.RI "#define \fB__AVR_LIBC_DATE_STRING__\fP '20061009'"
.br
.ti -1c
-.RI "#define \fB__AVR_LIBC_DATE_\fP 20060420UL"
+.RI "#define \fB__AVR_LIBC_DATE_\fP 20061009UL"
.br
.ti -1c
.RI "#define \fB__AVR_LIBC_MAJOR__\fP 1"
@@ -39,15 +39,15 @@
.RI "#define \fB__AVR_LIBC_MINOR__\fP 4"
.br
.ti -1c
-.RI "#define \fB__AVR_LIBC_REVISION__\fP 4"
+.RI "#define \fB__AVR_LIBC_REVISION__\fP 5"
.br
.in -1c
.SH "Define Documentation"
.PP
-.SS "#define __AVR_LIBC_DATE_ 20060420UL"
+.SS "#define __AVR_LIBC_DATE_ 20061009UL"
.PP
Numerical representation of the release date.
-.SS "#define __AVR_LIBC_DATE_STRING__ '20060420'"
+.SS "#define __AVR_LIBC_DATE_STRING__ '20061009'"
.PP
String literal representation of the release date.
.SS "#define __AVR_LIBC_MAJOR__ 1"
@@ -56,14 +56,14 @@
.SS "#define __AVR_LIBC_MINOR__ 4"
.PP
Library minor version number.
-.SS "#define __AVR_LIBC_REVISION__ 4"
+.SS "#define __AVR_LIBC_REVISION__ 5"
.PP
Library revision number.
-.SS "#define __AVR_LIBC_VERSION__ 10404UL"
+.SS "#define __AVR_LIBC_VERSION__ 10405UL"
.PP
Numerical representation of the current library version.
.PP
In the numerical representation, the major number is multiplied by 10000, the minor number by 100, and all three parts are then added. It is intented to provide a monotonically increasing numerical value that can easily be used in numerical checks.
-.SS "#define __AVR_LIBC_VERSION_STRING__ '1.4.4'"
+.SS "#define __AVR_LIBC_VERSION_STRING__ '1.4.5'"
.PP
String literal representation of the current library version.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/avr_watchdog.3 new/man/man3/avr_watchdog.3
--- old/man/man3/avr_watchdog.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/avr_watchdog.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Watchdog timer handling" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Watchdog timer handling" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -143,7 +143,7 @@
See \fCWDT0_15MS\fP
.SS "#define WDTO_4S 8"
.PP
-See \fCWDT0_15MS\fP Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega406, AT90PWM2, AT90PWM3, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287.
+See \fCWDT0_15MS\fP Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega406, AT90PWM2, AT90PWM3, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287.
.SS "#define WDTO_500MS 5"
.PP
See \fCWDT0_15MS\fP
@@ -152,4 +152,4 @@
\fCWDT0_15MS\fP
.SS "#define WDTO_8S 9"
.PP
-See \fCWDT0_15MS\fP Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega406, AT90PWM2, AT90PWM3, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287.
+See \fCWDT0_15MS\fP Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega406, AT90PWM2, AT90PWM3, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/compat_ina90.3 new/man/man3/compat_ina90.3
--- old/man/man3/compat_ina90.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/compat_ina90.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Compatibility with IAR EWB 3.x" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Compatibility with IAR EWB 3.x" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/ctype.3 new/man/man3/ctype.3
--- old/man/man3/ctype.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/ctype.3 2006-10-09 22:29:30.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Character Operations" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Character Operations" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/demo_project.3 new/man/man3/demo_project.3
--- old/man/man3/demo_project.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/demo_project.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "A simple project" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "A simple project" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -200,56 +200,36 @@
Sections:
Idx Name Size VMA LMA File off Algn
- 0 .text 000000e6 00000000 00000000 00000094 2**0
+ 0 .text 000000de 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
- 1 .data 00000000 00800060 000000e6 0000017a 2**0
- CONTENTS, ALLOC, LOAD, DATA
- 2 .bss 00000003 00800060 00800060 0000017a 2**0
+ 1 .bss 00000003 00800060 00800060 00000152 2**0
ALLOC
- 3 .noinit 00000000 00800063 00800063 0000017a 2**0
- CONTENTS
- 4 .eeprom 00000000 00810000 00810000 0000017a 2**0
- CONTENTS
- 5 .stab 0000036c 00000000 00000000 0000017c 2**2
+ 2 .stab 000007a4 00000000 00000000 00000154 2**2
CONTENTS, READONLY, DEBUGGING
- 6 .stabstr 00000059 00000000 00000000 000004e8 2**0
- CONTENTS, READONLY, DEBUGGING
- 7 .debug_aranges 00000014 00000000 00000000 00000541 2**0
- CONTENTS, READONLY, DEBUGGING
- 8 .debug_pubnames 00000035 00000000 00000000 00000555 2**0
- CONTENTS, READONLY, DEBUGGING
- 9 .debug_info 000000c7 00000000 00000000 0000058a 2**0
- CONTENTS, READONLY, DEBUGGING
- 10 .debug_abbrev 00000098 00000000 00000000 00000651 2**0
- CONTENTS, READONLY, DEBUGGING
- 11 .debug_line 000000ed 00000000 00000000 000006e9 2**0
- CONTENTS, READONLY, DEBUGGING
- 12 .debug_frame 00000034 00000000 00000000 000007d6 2**0
- CONTENTS, READONLY, DEBUGGING
- 13 .debug_str 000000a1 00000000 00000000 0000080a 2**0
+ 3 .stabstr 000006b8 00000000 00000000 000008f8 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
- 2: 70 c0 rjmp .+224 ; 0xe4 <__bad_interrupt>
- 4: 6f c0 rjmp .+222 ; 0xe4 <__bad_interrupt>
- 6: 6e c0 rjmp .+220 ; 0xe4 <__bad_interrupt>
- 8: 6d c0 rjmp .+218 ; 0xe4 <__bad_interrupt>
- a: 6c c0 rjmp .+216 ; 0xe4 <__bad_interrupt>
- c: 6b c0 rjmp .+214 ; 0xe4 <__bad_interrupt>
- e: 6a c0 rjmp .+212 ; 0xe4 <__bad_interrupt>
+ 2: 6c c0 rjmp .+216 ; 0xdc <__bad_interrupt>
+ 4: 6b c0 rjmp .+214 ; 0xdc <__bad_interrupt>
+ 6: 6a c0 rjmp .+212 ; 0xdc <__bad_interrupt>
+ 8: 69 c0 rjmp .+210 ; 0xdc <__bad_interrupt>
+ a: 68 c0 rjmp .+208 ; 0xdc <__bad_interrupt>
+ c: 67 c0 rjmp .+206 ; 0xdc <__bad_interrupt>
+ e: 66 c0 rjmp .+204 ; 0xdc <__bad_interrupt>
10: 11 c0 rjmp .+34 ; 0x34 <__vector_8>
- 12: 68 c0 rjmp .+208 ; 0xe4 <__bad_interrupt>
- 14: 67 c0 rjmp .+206 ; 0xe4 <__bad_interrupt>
- 16: 66 c0 rjmp .+204 ; 0xe4 <__bad_interrupt>
- 18: 65 c0 rjmp .+202 ; 0xe4 <__bad_interrupt>
- 1a: 64 c0 rjmp .+200 ; 0xe4 <__bad_interrupt>
- 1c: 63 c0 rjmp .+198 ; 0xe4 <__bad_interrupt>
- 1e: 62 c0 rjmp .+196 ; 0xe4 <__bad_interrupt>
- 20: 61 c0 rjmp .+194 ; 0xe4 <__bad_interrupt>
- 22: 60 c0 rjmp .+192 ; 0xe4 <__bad_interrupt>
- 24: 5f c0 rjmp .+190 ; 0xe4 <__bad_interrupt>
+ 12: 64 c0 rjmp .+200 ; 0xdc <__bad_interrupt>
+ 14: 63 c0 rjmp .+198 ; 0xdc <__bad_interrupt>
+ 16: 62 c0 rjmp .+196 ; 0xdc <__bad_interrupt>
+ 18: 61 c0 rjmp .+194 ; 0xdc <__bad_interrupt>
+ 1a: 60 c0 rjmp .+192 ; 0xdc <__bad_interrupt>
+ 1c: 5f c0 rjmp .+190 ; 0xdc <__bad_interrupt>
+ 1e: 5e c0 rjmp .+188 ; 0xdc <__bad_interrupt>
+ 20: 5d c0 rjmp .+186 ; 0xdc <__bad_interrupt>
+ 22: 5c c0 rjmp .+184 ; 0xdc <__bad_interrupt>
+ 24: 5b c0 rjmp .+182 ; 0xdc <__bad_interrupt>
00000026 <__ctors_end>:
26: 11 24 eor r1, r1
@@ -384,29 +364,25 @@
int
main (void)
{
- ca: cf e5 ldi r28, 0x5F ; 95
- cc: d4 e0 ldi r29, 0x04 ; 4
- ce: de bf out 0x3e, r29 ; 62
- d0: cd bf out 0x3d, r28 ; 61
ioinit ();
- d2: ee df rcall .-36 ; 0xb0 <ioinit>
+ ca: f2 df rcall .-28 ; 0xb0 <ioinit>
/* loop forever, the interrupts are doing the rest */
for (;;) /* Note [7] */
sleep_mode();
+ cc: 85 b7 in r24, 0x35 ; 53
+ ce: 80 68 ori r24, 0x80 ; 128
+ d0: 85 bf out 0x35, r24 ; 53
+ d2: 88 95 sleep
d4: 85 b7 in r24, 0x35 ; 53
- d6: 80 68 ori r24, 0x80 ; 128
+ d6: 8f 77 andi r24, 0x7F ; 127
d8: 85 bf out 0x35, r24 ; 53
- da: 88 95 sleep
- dc: 85 b7 in r24, 0x35 ; 53
- de: 8f 77 andi r24, 0x7F ; 127
- e0: 85 bf out 0x35, r24 ; 53
- e2: f8 cf rjmp .-16 ; 0xd4
+ da: f8 cf rjmp .-16 ; 0xcc
-000000e4 <__bad_interrupt>:
- e4: 8d cf rjmp .-230 ; 0x0 <__heap_end>
+000000dc <__bad_interrupt>:
+ dc: 91 cf rjmp .-222 ; 0x0 <__heap_end>
.fi
.PP
.SH "Linker Map Files"
@@ -427,11 +403,24 @@
.rela.plt
*(.rela.plt)
-.text 0x00000000 0xe6
+.text 0x00000000 0xde
*(.vectors)
.vectors 0x00000000 0x26 /junk/AVR/avr-libc-1.4/avr/lib/avr4/atmega8/crtm8.o
0x00000000 __vectors
0x00000000 __vector_default
+ *(.vectors)
+ *(.progmem.gcc*)
+ *(.progmem*)
+ 0x00000026 . = ALIGN (0x2)
+ 0x00000026 __trampolines_start = .
+ *(.trampolines)
+ .trampolines 0x00000026 0x0 linker stubs
+ *(.trampolines*)
+ 0x00000026 __trampolines_end = .
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
0x00000026 __ctors_start = .
.fi
.PP
@@ -441,13 +430,21 @@
.PP
.nf
*(.fini2)
+ *(.fini2)
*(.fini1)
+ *(.fini1)
+ *(.fini0)
*(.fini0)
- 0x000000e6 _etext = .
+ 0x000000de _etext = .
-.data 0x00800060 0x0 load address 0x000000e6
+.data 0x00800060 0x0 load address 0x000000de
0x00800060 PROVIDE (__data_start, .)
*(.data)
+ .data 0x00800060 0x0 demo.o
+ .data 0x00800060 0x0 /junk/AVR/avr-libc-1.4/avr/lib/avr4/atmega8/crtm8.o
+ *(.data*)
+ *(.rodata)
+ *(.rodata*)
*(.gnu.linkonce.d*)
0x00800060 . = ALIGN (0x2)
0x00800060 _edata = .
@@ -457,10 +454,12 @@
0x00800060 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00800060 0x3 demo.o
+ .bss 0x00800063 0x0 /junk/AVR/avr-libc-1.4/avr/lib/avr4/atmega8/crtm8.o
+ *(.bss*)
*(COMMON)
0x00800063 PROVIDE (__bss_end, .)
- 0x000000e6 __data_load_start = LOADADDR (.data)
- 0x000000e6 __data_load_end = (__data_load_start + SIZEOF (.data))
+ 0x000000de __data_load_start = LOADADDR (.data)
+ 0x000000de __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00800063 0x0
0x00800063 PROVIDE (__noinit_start, .)
@@ -504,9 +503,9 @@
.PP
.PP
.nf
-:1000000012C070C06FC06EC06DC06CC06BC06AC0E3
-:1000100011C068C067C066C065C064C063C062C00C
-:1000200061C060C05FC011241FBECFE5D4E0DEBF59
+:1000000012C06CC06BC06AC069C068C067C066C0FF
+:1000100011C064C063C062C061C060C05FC05EC028
+:100020005DC05CC05BC011241FBECFE5D4E0DEBF65
:10003000CDBF4BC01F920F920FB60F9211242F937A
:100040003F938F9380916000882339F08130B9F01D
:10005000209161003091620021C0209161003091B7
@@ -516,9 +515,8 @@
:1000900061002115310511F4109260003BBD2ABDAD
:1000A0008F913F912F910F900FBE0F901F90189539
:1000B00083E88FBD8EB581608EBD1BBC1ABC82E00B
-:1000C00087BB84E089BF78940895CFE5D4E0DEBF94
-:1000D000CDBFEEDF85B7806885BF889585B78F7700
-:0600E00085BFF8CF8DCFB3
+:1000C00087BB84E089BF78940895F2DF85B78068A4
+:0E00D00085BF889585B78F7785BFF8CF91CF14
:00000001FF
.fi
.PP
@@ -535,11 +533,10 @@
.PP
.PP
.nf
-:00000001FF
.fi
.PP
.PP
-which is an empty \fC\fP.hex file (which is expected, since we didn't define any EEPROM variables).
+which is an empty \fC\fP.hex file (which is expected, since we didn't define any EEPROM variables). Starting with version 2.17 of the GNU binutils, the \fCavr-objcopy\fP command that used to generate the empty EEPROM files now aborts because of the empty input section \fC\fP.eeprom, so these empty files are not generated. It also signals an error to the Makefile which will be caught there, and makes it print a message about the empty file not being generated.
.SH "Letting Make Build the Project"
.PP
Rather than type these commands over and over, they can all be placed in a make file. To build the demo project using \fCmake\fP, save the following in a file called \fCMakefile\fP.
@@ -661,13 +658,16 @@
esrec: $(PRG)_eeprom.srec
%_eeprom.hex: %.elf
- $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
+ $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \
+ || { echo empty $@ not generated; exit 0; }
%_eeprom.srec: %.elf
- $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@
+ $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \
+ || { echo empty $@ not generated; exit 0; }
%_eeprom.bin: %.elf
- $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@
+ $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \
+ || { echo empty $@ not generated; exit 0; }
# Every thing below here is used by avr-libc's build system and can be ignored
# by the casual user.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/demos.3 new/man/man3/demos.3
--- old/man/man3/demos.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/demos.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "Demo projects" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "Demo projects" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -15,6 +15,8 @@
.PP
The \fBExample using the two-wire interface (TWI)\fP project explains the use of the two-wire hardware interface (also known as 'I2C') that is present on many AVR controllers.
.PP
+Finally, the \fBCombining C and assembly source files\fP demo shows how C and assembly language source files can collaborate within one project. While the overall project is managed by a C program part for easy maintenance, time-critical parts are written directly in manually optimized assembly language for shortest execution times possible. Naturally, this kind of project is very closely tied to the hardware design, thus it is custom-tailored to a particular controller type and peripheral setup. As an alternative to the assembly-language solution, this project also offers a C-only implementation (deploying the exact same peripheral setup) based on a more sophisticated (and thus more expensive) but pin-compatible controller.
+.PP
While the simple demo is meant to run on about any AVR setup possible where a LED could be connected to the OCR1[A] output, the \fBlarge\fP and \fBstdio\fP demos are mainly targeted to the Atmel STK500 starter kit, and the \fBTWI\fP example requires a controller where some 24Cxx two-wire EEPPROM can be connected to. For the STK500 demos, the default CPU (either an AT90S8515 or an ATmega8515) should be removed from its socket, and the ATmega16 that ships with the kit should be inserted into socket SCKT3100A3. The ATmega16 offers an on-board ADC that is used in the \fBlarge\fP demo, and all AVRs with an ADC feature a different pinout than the industry-standard compatible devices.
.PP
In order to fully utilize the \fBlarge\fP demo, a female 10-pin header with cable, connecting to a 10 kOhm potentiometer will be useful.
@@ -25,6 +27,9 @@
.in +1c
.ti -1c
+.RI "\fBCombining C and assembly source files\fP"
+.br
+.ti -1c
.RI "\fBA simple project\fP"
.br
.ti -1c
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/deprecated.3 new/man/man3/deprecated.3
--- old/man/man3/deprecated.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/deprecated.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "deprecated" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "deprecated" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -29,6 +29,16 @@
.PP
.PP
+.IP "\fBGlobal \fBinb\fP \fP" 1c
+.PP
+.PP
+.PP
+
+.IP "\fBGlobal \fBoutb\fP \fP" 1c
+.PP
+.PP
+.PP
+
.IP "\fBGlobal \fBsbi\fP \fP" 1c
.PP
.PP
@@ -37,4 +47,9 @@
.IP "\fBGlobal \fBcbi\fP \fP" 1c
.PP
.PP
+.PP
+
+.IP "\fBGlobal \fBSIGNAL\fP \fP" 1c
+Do not use anymore in new code.
+.PP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/deprecated_items.3 new/man/man3/deprecated_items.3
--- old/man/man3/deprecated_items.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/deprecated_items.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Deprecated items" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Deprecated items" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -46,6 +46,9 @@
.RI "#define \fBINTERRUPT\fP(signame)"
.br
.ti -1c
+.RI "#define \fB__INTR_ATTRS\fP used"
+.br
+.ti -1c
.RI "static __inline__ void \fBtimer_enable_int\fP (unsigned char ints)"
.br
.in -1c
@@ -60,7 +63,13 @@
.RI "#define \fBinp\fP(port) (port)"
.br
.ti -1c
-.RI "#define \fBoutp\fP(port, val) (port) = (val)"
+.RI "#define \fBoutp\fP(val, port) (port) = (val)"
+.br
+.ti -1c
+.RI "#define \fBinb\fP(port) (port)"
+.br
+.ti -1c
+.RI "#define \fBoutb\fP(port, val) (port) = (val)"
.br
.ti -1c
.RI "#define \fBsbi\fP(port, bit) (port) |= (1 << (bit))"
@@ -85,6 +94,13 @@
.RE
.PP
This macro gives access to the \fCGIMSK\fP register (or \fCEIMSK\fP register if using an AVR Mega device or \fCGICR\fP register for others). Although this macro is essentially the same as assigning to the register, it does adapt slightly to the type of device being used. This macro is unavailable if none of the registers listed above are defined.
+.SS "#define inb(port) (port)"
+.PP
+\fBDeprecated\fP
+.RS 4
+.RE
+.PP
+Read a value from an IO port \fCport\fP.
.SS "#define inp(port) (port)"
.PP
\fBDeprecated\fP
@@ -97,7 +113,7 @@
\fBValue:\fP
.PP
.nf
-void signame (void) __attribute__ ((interrupt)); \
+void signame (void) __attribute__ ((interrupt,__INTR_ATTRS)); \
void signame (void)
.fi
\fBDeprecated\fP
@@ -107,7 +123,14 @@
Introduces an interrupt handler function that runs with global interrupts initially enabled. This allows interrupt handlers to be interrupted.
.PP
As this macro has been used by too many unsuspecting people in the past, it has been deprecated, and will be removed in a future version of the library. Users who want to legitimately re-enable interrupts in their interrupt handlers as quickly as possible are encouraged to explicitly declare their handlers as described \fBabove\fP.
-.SS "#define outp(port, val) (port) = (val)"
+.SS "#define outb(port, val) (port) = (val)"
+.PP
+\fBDeprecated\fP
+.RS 4
+.RE
+.PP
+Write \fCval\fP to IO port \fCport\fP.
+.SS "#define outp(val, port) (port) = (val)"
.PP
\fBDeprecated\fP
.RS 4
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/div_t.3 new/man/man3/div_t.3
--- old/man/man3/div_t.3 2006-04-20 23:32:51.000000000 +0200
+++ new/man/man3/div_t.3 2006-10-09 22:29:27.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "div_t" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "div_t" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/FAQ.3 new/man/man3/FAQ.3
--- old/man/man3/FAQ.3 2006-04-20 23:32:52.000000000 +0200
+++ new/man/man3/FAQ.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "FAQ" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "FAQ" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -58,6 +58,10 @@
\fBWhy have 'programmed' fuses the bit value 0?\fP
.IP "26." 4
\fBWhich AVR-specific assembler operators are available?\fP
+.IP "27." 4
+\fBWhy are interrupts re-enabled in the middle of writing the stack pointer?\fP
+.IP "28." 4
+\fBWhy are there five different linker scripts?\fP
.PP
.SH "My program doesn't recognize a variable updated within an interrupt routine"
.PP
@@ -528,7 +532,7 @@
.fi
.PP
.PP
-The result is not want you want though. What you end up with is the array stored in ROM, while the individual strings end up in RAM (in the \fC\fP.data section).
+The result is not what you want though. What you end up with is the array stored in ROM, while the individual strings end up in RAM (in the \fC\fP.data section).
.PP
To work around this, you need to do something like this:
.PP
@@ -830,4 +834,39 @@
.PP
See \fBPseudo-ops and operators\fP.
.PP
+Back to \fBFAQ Index\fP.
+.SH "Why are interrupts re-enabled in the middle of writing the stack pointer?"
+.PP
+When setting up space for local variables on the stack, the compiler generates code like this:
+.PP
+.PP
+.nf
+/* prologue: frame size=20 */
+ push r28
+ push r29
+ in r28,__SP_L__
+ in r29,__SP_H__
+ sbiw r28,20
+ in __tmp_reg__,__SREG__
+ cli
+ out __SP_H__,r29
+ out __SREG__,__tmp_reg__
+ out __SP_L__,r28
+/* prologue end (size=10) */
+.fi
+.PP
+.PP
+It reads the current stack pointer value, decrements it by the required amount of bytes, then disables interrupts, writes back the high part of the stack pointer, writes back the saved \fCSREG\fP (which will eventually re-enable interrupts if they have been enabled before), and finally writes the low part of the stack pointer.
+.PP
+At the first glance, there's a race between restoring \fCSREG\fP, and writing \fCSPL\fP. However, after enabling interrupts (either explicitly by setting the \fCI\fP flag, or by restoring it as part of the entire \fCSREG\fP), the AVR hardware executes (at least) the next instruction still with interrupts disabled, so the write to \fCSPL\fP is guaranteed to be executed with interrupts disabled still. Thus, the emitted sequence ensures interrupts will be disabled only for the minimum time required to guarantee the integrity of this operation.
+.PP
+Back to \fBFAQ Index\fP.
+.SH "Why are there five different linker scripts?"
+.PP
+From a comment in the source code:
+.PP
+Which one of the five linker script files is actually used depends on command line options given to ld.
+.PP
+A .x script file is the default script A .xr script is for linking without relocation (-r flag) A .xu script is like .xr but *do* create constructors (-Ur flag) A .xn script is for linking with -n flag (mix text and data on same page). A .xbn script is for linking with -N flag (mix text and data on same page).
+.PP
Back to \fBFAQ Index\fP.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/inb.3 new/man/man3/inb.3
--- old/man/man3/inb.3 1970-01-01 01:00:00.000000000 +0100
+++ new/man/man3/inb.3 2006-10-09 22:29:29.000000000 +0200
@@ -0,0 +1 @@
+.so man3/deprecated_items.3
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/inline_asm.3 new/man/man3/inline_asm.3
--- old/man/man3/inline_asm.3 2006-04-20 23:32:52.000000000 +0200
+++ new/man/man3/inline_asm.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "inline_asm" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "inline_asm" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/install_tools.3 new/man/man3/install_tools.3
--- old/man/man3/install_tools.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/install_tools.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "install_tools" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "install_tools" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -144,14 +144,8 @@
.PP
\fBNote:\fP
.RS 4
-Replace \fC\fP
-.RE
-.PP
+Replace \fC<version>\fP with the version of the package you downloaded.
.PP
-with the version of the package you downloaded.
-.PP
-\fBNote:\fP
-.RS 4
If you obtained a gzip compressed file (.gz), use \fCgunzip\fP instead of \fCbunzip2\fP.
.RE
.PP
@@ -196,6 +190,12 @@
.PP
.PP
You should now have the programs from binutils installed into \fC$PREFIX/bin\fP. Don't forget to \fBset your PATH\fP environment variable before going to build avr-gcc.
+.PP
+\fBNote:\fP
+.RS 4
+The official version of binutils might lack support for recent AVR devices. A patch that adds more AVR types can be found at http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-binutils/files/patch-n...
+.RE
+.PP
.SH "GCC for the AVR target"
.PP
.PP
@@ -213,7 +213,7 @@
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ \
- --disable-nls --with-dwarf2
+ --disable-nls --disable-libssp --with-dwarf2
$ make
$ make install
.fi
@@ -226,6 +226,8 @@
Early versions of these tools did not support C++.
.PP
The stdc++ libs are not included with C++ for AVR due to the size limitations of the devices.
+.PP
+The official version of GCC might lack support for recent AVR devices. A patch that adds more AVR types can be found at http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/patch-newdev...
.RE
.PP
.SH "AVR Libc"
@@ -247,29 +249,7 @@
.nf
$ gunzip -c avr-libc-<version>.tar.gz | tar xf -
$ cd avr-libc-<version>
-$ ./configure --build=`./config.guess` --host=avr
-$ make
-$ make install
-.fi
-.PP
-.PP
-\fBNote:\fP
-.RS 4
-Other configure options might follow, notably --prefix in order to change the directory prefix for the installed files from its default \fC/usr/local\fP.
-.RE
-.PP
-.SH "UISP"
-.PP
-.PP
-Uisp also uses the \fCconfigure\fP system, so to build and install:
-.PP
-.PP
-.nf
-$ gunzip -c uisp-<version>.tar.gz | tar xf -
-$ cd uisp-<version>
-$ mkdir obj-avr
-$ cd obj-avr
-$ ../configure --prefix=$PREFIX
+$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
$ make
$ make install
.fi
@@ -280,7 +260,7 @@
.PP
\fBNote:\fP
.RS 4
-It has been ported to windows (via cygwin) and linux. Other unix systems should be trivial to port to.
+It has been ported to windows (via MinGW or cygwin), Linux and Solaris. Other Unix systems should be trivial to port to.
.RE
.PP
\fC\fBavrdude\fP\fP is part of the FreeBSD ports system. To install it, simply do the following:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/__INTR_ATTRS.3 new/man/man3/__INTR_ATTRS.3
--- old/man/man3/__INTR_ATTRS.3 1970-01-01 01:00:00.000000000 +0100
+++ new/man/man3/__INTR_ATTRS.3 2006-10-09 22:29:29.000000000 +0200
@@ -0,0 +1 @@
+.so man3/deprecated_items.3
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/ISR_ALIAS.3 new/man/man3/ISR_ALIAS.3
--- old/man/man3/ISR_ALIAS.3 1970-01-01 01:00:00.000000000 +0100
+++ new/man/man3/ISR_ALIAS.3 2006-10-09 22:29:32.000000000 +0200
@@ -0,0 +1 @@
+.so man3/avr_interrupts.3
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/largedemo.3 new/man/man3/largedemo.3
--- old/man/man3/largedemo.3 2006-04-20 23:32:57.000000000 +0200
+++ new/man/man3/largedemo.3 2006-10-09 22:29:33.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "A more sophisticated project" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "A more sophisticated project" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/ldiv_t.3 new/man/man3/ldiv_t.3
--- old/man/man3/ldiv_t.3 2006-04-20 23:32:51.000000000 +0200
+++ new/man/man3/ldiv_t.3 2006-10-09 22:29:27.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "ldiv_t" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "ldiv_t" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/malloc.3 new/man/man3/malloc.3
--- old/man/man3/malloc.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/malloc.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "malloc" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "malloc" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/mem_sections.3 new/man/man3/mem_sections.3
--- old/man/man3/mem_sections.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/mem_sections.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "mem_sections" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "mem_sections" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/outb.3 new/man/man3/outb.3
--- old/man/man3/outb.3 1970-01-01 01:00:00.000000000 +0100
+++ new/man/man3/outb.3 2006-10-09 22:29:29.000000000 +0200
@@ -0,0 +1 @@
+.so man3/deprecated_items.3
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/release_method.3 new/man/man3/release_method.3
--- old/man/man3/release_method.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/release_method.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "release_method" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "release_method" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/setjmp.3 new/man/man3/setjmp.3
--- old/man/man3/setjmp.3 2006-04-20 23:32:54.000000000 +0200
+++ new/man/man3/setjmp.3 2006-10-09 22:29:30.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Non-local goto" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Non-local goto" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/stdiodemo.3 new/man/man3/stdiodemo.3
--- old/man/man3/stdiodemo.3 2006-04-20 23:32:57.000000000 +0200
+++ new/man/man3/stdiodemo.3 2006-10-09 22:29:33.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "Using the standard IO facilities" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "Using the standard IO facilities" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -96,7 +96,7 @@
.PP
On top, a few preprocessor glueing tricks are used to establish symbolic access to the hardware port pins the LCD controller is attached to, based on the application's definitions made in \fBdefines.h\fP.
.PP
-The \fChd44780_pulse_e()\fP function asserts a short pulse to the controller's E (enable) pin.
+The \fChd44780_pulse_e()\fP function asserts a short pulse to the controller's E (enable) pin. Since reading back the data asserted by the LCD controller needs to be performed while E is active, this function reads and returns the input data if the parameter \fCreadback\fP is true. When called with a compile-time constant parameter that is false, the compiler will completely eliminate the unused readback operation, as well as the return value as part of its optimizations.
.PP
As the controller is used in 4-bit interface mode, all byte IO to/from the controller needs to be handled as two nibble IOs. The functions \fChd44780_outnibble()\fP and \fChd44780_innibble()\fP implement this. They do not belong to the public interface, so they are declared static.
.PP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/todo.3 new/man/man3/todo.3
--- old/man/man3/todo.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/todo.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "todo" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "todo" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/twi_demo.3 new/man/man3/twi_demo.3
--- old/man/man3/twi_demo.3 2006-04-20 23:32:57.000000000 +0200
+++ new/man/man3/twi_demo.3 2006-10-09 22:29:33.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "Example using the two-wire interface (TWI)" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "Example using the two-wire interface (TWI)" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/using_avrprog.3 new/man/man3/using_avrprog.3
--- old/man/man3/using_avrprog.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/using_avrprog.3 2006-10-09 22:29:28.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "using_avrprog" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "using_avrprog" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/using_tools.3 new/man/man3/using_tools.3
--- old/man/man3/using_tools.3 2006-04-20 23:32:53.000000000 +0200
+++ new/man/man3/using_tools.3 2006-10-09 22:29:29.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "using_tools" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH "using_tools" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
@@ -15,7 +15,7 @@
.PP
Compile code for \fIarchitecture\fP. Currently known architectures are
.PP
-avr1Simple CPU core, only assembler support avr2'Classic' CPU core, up to 8 KB of ROM avr3'Classic' CPU core, more than 8 KB of ROM avr4'Enhanced' CPU core, up to 8 KB of ROM avr5'Enhanced' CPU core, more than 8 KB of ROM
+avr1Simple CPU core, only assembler support avr2'Classic' CPU core, up to 8 KB of ROM avr3'Classic' CPU core, more than 8 KB of ROM avr4'Enhanced' CPU core, up to 8 KB of ROM avr5'Enhanced' CPU core, more than 8 KB of ROM avr6'Enhanced' CPU core, Program Counter of 3 bytes
.PP
By default, code is generated for the avr2 architecture.
.PP
@@ -27,7 +27,7 @@
.PP
The following MCU types are currently understood by avr-gcc. The table matches them against the corresponding avr-gcc architecture name, and shows the preprocessor symbol declared by the \fC-mmcu\fP option.
.PP
-ArchitectureMCU nameMacro avr1at90s1200__AVR_AT90S1200__ avr1attiny11__AVR_ATtiny11__ avr1attiny12__AVR_ATtiny12__ avr1attiny15__AVR_ATtiny15__ avr1attiny28__AVR_ATtiny28__ avr2at90s2313__AVR_AT90S2313__ avr2at90s2323__AVR_AT90S2323__ avr2at90s2333__AVR_AT90S2333__ avr2at90s2343__AVR_AT90S2343__ avr2attiny22__AVR_ATtiny22__ avr2attiny24__AVR_ATtiny24__ avr2attiny25__AVR_ATtiny25__ avr2attiny26__AVR_ATtiny26__ avr2attiny261__AVR_ATtiny261__ avr2attiny44__AVR_ATtiny44__ avr2attiny45__AVR_ATtiny45__ avr2attiny461__AVR_ATtiny461__ avr2attiny84__AVR_ATtiny84__ avr2attiny85__AVR_ATtiny85__ avr2attiny861__AVR_ATtiny861__ avr2at90s4414__AVR_AT90S4414__ avr2at90s4433__AVR_AT90S4433__ avr2at90s4434__AVR_AT90S4434__ avr2at90s8515__AVR_AT90S8515__ avr2at90c8534__AVR_AT90C8534__ avr2at90s8535__AVR_AT90S8535__ avr2at86rf401__AVR_AT86RF401__ avr2attiny13__AVR_ATtiny13__ avr2attiny2313__AVR_ATtiny2313__ avr3atmega103__AVR_ATmega103__ avr3atmega603__AVR_ATmega603__ avr3at43usb320__AVR_AT43USB320__ avr3at43usb355__AVR_AT43USB355__ avr3at76c711__AVR_AT76C711__ avr4atmega48__AVR_ATmega48__ avr4atmega8__AVR_ATmega8__ avr4atmega8515__AVR_ATmega8515__ avr4atmega8535__AVR_ATmega8535__ avr4atmega88__AVR_ATmega88__ avr4at90pwm2__AVR_AT90PWM2__ avr4at90pwm3__AVR_AT90PWM3__ avr5at90can32__AVR_AT90CAN32__ avr5at90can64__AVR_AT90CAN64__ avr5at90can128__AVR_AT90CAN128__ avr5at90usb646__AVR_AT90USB646__ avr5at90usb647__AVR_AT90USB647__ avr5at90usb1286__AVR_AT90USB1286__ avr5at90usb1287__AVR_AT90USB1287__ avr5atmega128__AVR_ATmega128__ avr5atmega1280__AVR_ATmega1280__ avr5atmega1281__AVR_ATmega1281__ avr5atmega16__AVR_ATmega16__ avr5atmega161__AVR_ATmega161__ avr5atmega162__AVR_ATmega162__ avr5atmega163__AVR_ATmega163__ avr5atmega164p__AVR_ATmega164P__ avr5atmega165__AVR_ATmega165__ avr5atmega168__AVR_ATmega168__ avr5atmega169__AVR_ATmega169__ avr5atmega32__AVR_ATmega32__ avr5atmega323__AVR_ATmega323__ avr5atmega324p__AVR_ATmega324P__ avr5atmega325__AVR_ATmega325__ avr5atmega3250__AVR_ATmega3250__ avr5atmega329__AVR_ATmega329__ avr5atmega3290__AVR_ATmega3290__ avr5atmega406__AVR_ATmega406__ avr5atmega64__AVR_ATmega64__ avr5atmega640__AVR_ATmega640__ avr5atmega644__AVR_ATmega644__ avr5atmega644p__AVR_ATmega644P__ avr5atmega645__AVR_ATmega645__ avr5atmega6450__AVR_ATmega6450__ avr5atmega649__AVR_ATmega649__ avr5atmega6490__AVR_ATmega6490__ avr5at94k__AVR_AT94K__
+ArchitectureMCU nameMacro avr1at90s1200__AVR_AT90S1200__ avr1attiny11__AVR_ATtiny11__ avr1attiny12__AVR_ATtiny12__ avr1attiny15__AVR_ATtiny15__ avr1attiny28__AVR_ATtiny28__ avr2at90s2313__AVR_AT90S2313__ avr2at90s2323__AVR_AT90S2323__ avr2at90s2333__AVR_AT90S2333__ avr2at90s2343__AVR_AT90S2343__ avr2attiny22__AVR_ATtiny22__ avr2attiny24__AVR_ATtiny24__ avr2attiny25__AVR_ATtiny25__ avr2attiny26__AVR_ATtiny26__ avr2attiny261__AVR_ATtiny261__ avr2attiny44__AVR_ATtiny44__ avr2attiny45__AVR_ATtiny45__ avr2attiny461__AVR_ATtiny461__ avr2attiny84__AVR_ATtiny84__ avr2attiny85__AVR_ATtiny85__ avr2attiny861__AVR_ATtiny861__ avr2at90s4414__AVR_AT90S4414__ avr2at90s4433__AVR_AT90S4433__ avr2at90s4434__AVR_AT90S4434__ avr2at90s8515__AVR_AT90S8515__ avr2at90c8534__AVR_AT90C8534__ avr2at90s8535__AVR_AT90S8535__ avr2at86rf401__AVR_AT86RF401__ avr2attiny13__AVR_ATtiny13__ avr2attiny2313__AVR_ATtiny2313__ avr3atmega103__AVR_ATmega103__ avr3atmega603__AVR_ATmega603__ avr3at43usb320__AVR_AT43USB320__ avr3at43usb355__AVR_AT43USB355__ avr3at76c711__AVR_AT76C711__ avr4atmega48__AVR_ATmega48__ avr4atmega8__AVR_ATmega8__ avr4atmega8515__AVR_ATmega8515__ avr4atmega8535__AVR_ATmega8535__ avr4atmega88__AVR_ATmega88__ avr4at90pwm2__AVR_AT90PWM2__ avr4at90pwm3__AVR_AT90PWM3__ avr5at90can32__AVR_AT90CAN32__ avr5at90can64__AVR_AT90CAN64__ avr5at90can128__AVR_AT90CAN128__ avr5at90usb646__AVR_AT90USB646__ avr5at90usb647__AVR_AT90USB647__ avr5at90usb1286__AVR_AT90USB1286__ avr5at90usb1287__AVR_AT90USB1287__ avr5atmega128__AVR_ATmega128__ avr5atmega1280__AVR_ATmega1280__ avr5atmega1281__AVR_ATmega1281__ avr5atmega16__AVR_ATmega16__ avr5atmega161__AVR_ATmega161__ avr5atmega162__AVR_ATmega162__ avr5atmega163__AVR_ATmega163__ avr5atmega164p__AVR_ATmega164P__ avr5atmega165__AVR_ATmega165__ avr5atmega165p__AVR_ATmega165P__ avr5atmega168__AVR_ATmega168__ avr5atmega169__AVR_ATmega169__ avr5atmega169p__AVR_ATmega169P__ avr5atmega32__AVR_ATmega32__ avr5atmega323__AVR_ATmega323__ avr5atmega324p__AVR_ATmega324P__ avr5atmega325__AVR_ATmega325__ avr5atmega3250__AVR_ATmega3250__ avr5atmega329__AVR_ATmega329__ avr5atmega3290__AVR_ATmega3290__ avr5atmega406__AVR_ATmega406__ avr5atmega64__AVR_ATmega64__ avr5atmega640__AVR_ATmega640__ avr5atmega644__AVR_ATmega644__ avr5atmega644p__AVR_ATmega644P__ avr5atmega645__AVR_ATmega645__ avr5atmega6450__AVR_ATmega6450__ avr5atmega649__AVR_ATmega649__ avr5atmega6490__AVR_ATmega6490__ avr5at94k__AVR_AT94K__ avr6atmega2560__AVR_ATmega2560__ avr6atmega2561__AVR_ATmega2561__
.PP
.PP
.IP "\(bu" 2
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/util_crc.3 new/man/man3/util_crc.3
--- old/man/man3/util_crc.3 2006-04-20 23:32:55.000000000 +0200
+++ new/man/man3/util_crc.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": CRC Computations" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": CRC Computations" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/util_delay.3 new/man/man3/util_delay.3
--- old/man/man3/util_delay.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/util_delay.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Busy-wait delay loops" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Busy-wait delay loops" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/util_parity.3 new/man/man3/util_parity.3
--- old/man/man3/util_parity.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/util_parity.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": Parity bit generation" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": Parity bit generation" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/man/man3/util_twi.3 new/man/man3/util_twi.3
--- old/man/man3/util_twi.3 2006-04-20 23:32:56.000000000 +0200
+++ new/man/man3/util_twi.3 2006-10-09 22:29:32.000000000 +0200
@@ -1,4 +1,4 @@
-.TH ": TWI bit mask definitions" 3 "20 Apr 2006" "Version 1.4.4" "avr-libc" \" -*- nroff -*-
+.TH ": TWI bit mask definitions" 3 "9 Oct 2006" "Version 1.4.5" "avr-libc" \" -*- nroff -*-
.ad l
.nh
.SH NAME
++++++ avr-libc-user-manual-1.4.4.tar.bz2 -> avr-libc-user-manual-1.4.5.tar.bz2 ++++++
++++ 1859 lines of diff (skipped)
++++++ logicp-1.00.tgz -> logicp-1.01.tgz ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/logicp-1.00/logicp.c new/logicp-1.01/logicp.c
--- old/logicp-1.00/logicp.c 2006-06-11 20:25:45.000000000 +0200
+++ new/logicp-1.01/logicp.c 2007-01-09 14:05:46.000000000 +0100
@@ -7,6 +7,7 @@
*
* 2006-06-11, jw
*
+ * 2007-01-08, V1.01 - jw, added make test, using --oformat ihex
*/
#if 0
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/logicp-1.00/Makefile new/logicp-1.01/Makefile
--- old/logicp-1.00/Makefile 2006-06-11 18:49:40.000000000 +0200
+++ new/logicp-1.01/Makefile 2007-01-09 15:05:49.000000000 +0100
@@ -48,6 +48,15 @@
SHELL = /bin/sh
all: $(NAME).hex
+
+
+test: clean $(NAME)-xlinker.hex
+
+test-all:
+ $(MAKE) $(MFLAGS) test CFLAGS="$(CFLAGS) $(TEST_CFLAGS)" CPU=tiny2313
+ $(MAKE) $(MFLAGS) test CFLAGS="$(CFLAGS) $(TEST_CFLAGS)" CPU=mega8
+ $(MAKE) $(MFLAGS) test CFLAGS="$(CFLAGS) $(TEST_CFLAGS)" CPU=mega48
+
install: all upload
.PHONY: $(NAME).hex $(NAME)-src.hex version.h flashcount
@@ -98,6 +107,11 @@
$(CC) $(CFLAGS) -Wl,-Map,$(NAME).map,--cref -o $(NAME).out $(OFILES)
@$(OBJDUMP) -t $(NAME).out | egrep '(__stack|__bss|_etext)'
+$(NAME)-xlinker.hex: $(OFILES) $(NAME).hex
+ -$(CC) $(CFLAGS) -Wl,-Map,$(NAME).map,--cref -Xlinker --oformat -Xlinker ihex -o $(NAME)-xlinker.hex $(OFILES)
+ @ls -l $(NAME).hex $(NAME)-xlinker.hex
+
+
# identical implicit rule using $(CC) and $(CFLAGS) exists.
# $(NAME).o: $(NAME).c
# $(CC) $(CFLAGS) -c $<
@@ -114,7 +128,7 @@
./avr_source.sh get download.hex down/download_src.tgz
clean:
- rm -f $(NAME).hex $(NAME)-src.hex $(NAME).out $(NAME)-src.out $(OFILES)
+ rm -f $(NAME).hex $(NAME)-*.hex $(NAME).out $(NAME)-src.out $(OFILES)
rm -f $(NAME).s
### start of fuse section
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/logicp-1.00/version new/logicp-1.01/version
--- old/logicp-1.00/version 2006-06-11 20:45:12.000000000 +0200
+++ new/logicp-1.01/version 2007-01-09 14:05:50.000000000 +0100
@@ -1 +1 @@
-1 0
+1 1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/logicp-1.00/version.h new/logicp-1.01/version.h
--- old/logicp-1.00/version.h 2006-06-11 20:59:12.000000000 +0200
+++ new/logicp-1.01/version.h 2007-01-09 15:06:11.000000000 +0100
@@ -1 +1 @@
-#define VERSION "1.00"
+#define VERSION "1.01"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org