Compiled ATmega16 port example project with IAR Embedded workbench.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
|
||||||
|
<workspace>
|
||||||
|
<project>
|
||||||
|
<path>$WS_DIR$\bacnet.ewp</path>
|
||||||
|
</project>
|
||||||
|
<batchBuild/>
|
||||||
|
</workspace>
|
||||||
|
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ int Device_Encode_Property_APDU(
|
|||||||
for (i = 0; i < MAX_BACNET_SERVICES_SUPPORTED; i++) {
|
for (i = 0; i < MAX_BACNET_SERVICES_SUPPORTED; i++) {
|
||||||
/* automatic lookup based on handlers set */
|
/* automatic lookup based on handlers set */
|
||||||
bitstring_set_bit(&bit_string, (uint8_t) i,
|
bitstring_set_bit(&bit_string, (uint8_t) i,
|
||||||
apdu_service_supported(i));
|
apdu_service_supported((BACNET_SERVICES_SUPPORTED)i));
|
||||||
}
|
}
|
||||||
apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
|
apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -25,16 +25,19 @@
|
|||||||
#ifndef HARDWARE_H
|
#ifndef HARDWARE_H
|
||||||
#define HARDWARE_H
|
#define HARDWARE_H
|
||||||
|
|
||||||
/* The processor clock frequency */
|
#if !defined(F_CPU)
|
||||||
#define F_CPU (7372800)
|
/* The processor clock frequency */
|
||||||
|
#define F_CPU (7372800)
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <avr/io.h>
|
#if defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ASM__)
|
||||||
#include <avr/interrupt.h>
|
#include <iom168.h>
|
||||||
#include <util/delay.h>
|
#else
|
||||||
|
#if !defined(__AVR_ATmega168__)
|
||||||
|
#error Firmware is configured for ATmega168 only (-mmcu=atmega168)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#include "iar2gcc.h"
|
||||||
#include "avr035.h"
|
#include "avr035.h"
|
||||||
|
|
||||||
#if !defined(__AVR_ATmega168__)
|
|
||||||
#error Firmware is configured for ATmega168 only.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -0,0 +1,196 @@
|
|||||||
|
/*####COPYRIGHTBEGIN####
|
||||||
|
-------------------------------------------
|
||||||
|
Copyright (C) 2007 Steve Karg
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 2
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to:
|
||||||
|
The Free Software Foundation, Inc.
|
||||||
|
59 Temple Place - Suite 330
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
As a special exception, if other files instantiate templates or
|
||||||
|
use macros or inline functions from this file, or you compile
|
||||||
|
this file and link it with other works to produce a work based
|
||||||
|
on this file, this file does not by itself cause the resulting
|
||||||
|
work to be covered by the GNU General Public License. However
|
||||||
|
the source code for this file must still be made available in
|
||||||
|
accordance with section (3) of the GNU General Public License.
|
||||||
|
|
||||||
|
This exception does not invalidate any other reasons why a work
|
||||||
|
based on this file might be covered by the GNU General Public
|
||||||
|
License.
|
||||||
|
-------------------------------------------
|
||||||
|
####COPYRIGHTEND####*/
|
||||||
|
#ifndef IAR2GCC_H
|
||||||
|
#define IAR2GCC_H
|
||||||
|
|
||||||
|
#if defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ASM__)
|
||||||
|
#include <inavr.h>
|
||||||
|
#include <ioavr.h>
|
||||||
|
#define _BV(bit_num) (1 << (bit_num))
|
||||||
|
#define _delay_us(x) \
|
||||||
|
|
||||||
|
/* inline function */
|
||||||
|
static inline void delay_us(uint8_t microseconds)
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
__delay_cycles(F_CPU/1000000);
|
||||||
|
} while (microseconds--);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
#if !defined(F_CPU)
|
||||||
|
#define F_CPU (7372800)
|
||||||
|
#endif
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <avr/interrupt.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char bit0:1;
|
||||||
|
unsigned char bit1:1;
|
||||||
|
unsigned char bit2:1;
|
||||||
|
unsigned char bit3:1;
|
||||||
|
unsigned char bit4:1;
|
||||||
|
unsigned char bit5:1;
|
||||||
|
unsigned char bit6:1;
|
||||||
|
unsigned char bit7:1;
|
||||||
|
} BitRegisterType;
|
||||||
|
|
||||||
|
#ifndef true
|
||||||
|
#define true 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef false
|
||||||
|
#define false 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define GPIO_BITREG(port,bitnum) \
|
||||||
|
((volatile BitRegisterType*)_SFR_MEM_ADDR(port) \
|
||||||
|
)->bit ## bitnum
|
||||||
|
|
||||||
|
#define PINA_Bit0 GPIO_BITREG(PINA,0)
|
||||||
|
#define PINA_Bit1 GPIO_BITREG(PINA,1)
|
||||||
|
#define PINA_Bit2 GPIO_BITREG(PINA,2)
|
||||||
|
#define PINA_Bit3 GPIO_BITREG(PINA,3)
|
||||||
|
#define PINA_Bit4 GPIO_BITREG(PINA,4)
|
||||||
|
#define PINA_Bit5 GPIO_BITREG(PINA,5)
|
||||||
|
#define PINA_Bit6 GPIO_BITREG(PINA,6)
|
||||||
|
#define PINA_Bit7 GPIO_BITREG(PINA,7)
|
||||||
|
|
||||||
|
#define PORTA_Bit0 GPIO_BITREG(PORTA,0)
|
||||||
|
#define PORTA_Bit1 GPIO_BITREG(PORTA,1)
|
||||||
|
#define PORTA_Bit2 GPIO_BITREG(PORTA,2)
|
||||||
|
#define PORTA_Bit3 GPIO_BITREG(PORTA,3)
|
||||||
|
#define PORTA_Bit4 GPIO_BITREG(PORTA,4)
|
||||||
|
#define PORTA_Bit5 GPIO_BITREG(PORTA,5)
|
||||||
|
#define PORTA_Bit6 GPIO_BITREG(PORTA,6)
|
||||||
|
#define PORTA_Bit7 GPIO_BITREG(PORTA,7)
|
||||||
|
|
||||||
|
#define PINB_Bit0 GPIO_BITREG(PINB,0)
|
||||||
|
#define PINB_Bit1 GPIO_BITREG(PINB,1)
|
||||||
|
#define PINB_Bit2 GPIO_BITREG(PINB,2)
|
||||||
|
#define PINB_Bit3 GPIO_BITREG(PINB,3)
|
||||||
|
#define PINB_Bit4 GPIO_BITREG(PINB,4)
|
||||||
|
#define PINB_Bit5 GPIO_BITREG(PINB,5)
|
||||||
|
#define PINB_Bit6 GPIO_BITREG(PINB,6)
|
||||||
|
#define PINB_Bit7 GPIO_BITREG(PINB,7)
|
||||||
|
|
||||||
|
#define PORTB_Bit0 GPIO_BITREG(PORTB,0)
|
||||||
|
#define PORTB_Bit1 GPIO_BITREG(PORTB,1)
|
||||||
|
#define PORTB_Bit2 GPIO_BITREG(PORTB,2)
|
||||||
|
#define PORTB_Bit3 GPIO_BITREG(PORTB,3)
|
||||||
|
#define PORTB_Bit4 GPIO_BITREG(PORTB,4)
|
||||||
|
#define PORTB_Bit5 GPIO_BITREG(PORTB,5)
|
||||||
|
#define PORTB_Bit6 GPIO_BITREG(PORTB,6)
|
||||||
|
#define PORTB_Bit7 GPIO_BITREG(PORTB,7)
|
||||||
|
|
||||||
|
#define PINC_Bit0 GPIO_BITREG(PINC,0)
|
||||||
|
#define PINC_Bit1 GPIO_BITREG(PINC,1)
|
||||||
|
#define PINC_Bit2 GPIO_BITREG(PINC,2)
|
||||||
|
#define PINC_Bit3 GPIO_BITREG(PINC,3)
|
||||||
|
#define PINC_Bit4 GPIO_BITREG(PINC,4)
|
||||||
|
#define PINC_Bit5 GPIO_BITREG(PINC,5)
|
||||||
|
#define PINC_Bit6 GPIO_BITREG(PINC,6)
|
||||||
|
#define PINC_Bit7 GPIO_BITREG(PINC,7)
|
||||||
|
|
||||||
|
#define PORTC_Bit0 GPIO_BITREG(PORTC,0)
|
||||||
|
#define PORTC_Bit1 GPIO_BITREG(PORTC,1)
|
||||||
|
#define PORTC_Bit2 GPIO_BITREG(PORTC,2)
|
||||||
|
#define PORTC_Bit3 GPIO_BITREG(PORTC,3)
|
||||||
|
#define PORTC_Bit4 GPIO_BITREG(PORTC,4)
|
||||||
|
#define PORTC_Bit5 GPIO_BITREG(PORTC,5)
|
||||||
|
#define PORTC_Bit6 GPIO_BITREG(PORTC,6)
|
||||||
|
#define PORTC_Bit7 GPIO_BITREG(PORTC,7)
|
||||||
|
|
||||||
|
#define PIND_Bit0 GPIO_BITREG(PIND,0)
|
||||||
|
#define PIND_Bit1 GPIO_BITREG(PIND,1)
|
||||||
|
#define PIND_Bit2 GPIO_BITREG(PIND,2)
|
||||||
|
#define PIND_Bit3 GPIO_BITREG(PIND,3)
|
||||||
|
#define PIND_Bit4 GPIO_BITREG(PIND,4)
|
||||||
|
#define PIND_Bit5 GPIO_BITREG(PIND,5)
|
||||||
|
#define PIND_Bit6 GPIO_BITREG(PIND,6)
|
||||||
|
#define PIND_Bit7 GPIO_BITREG(PIND,7)
|
||||||
|
|
||||||
|
#define PORTD_Bit0 GPIO_BITREG(PORTD,0)
|
||||||
|
#define PORTD_Bit1 GPIO_BITREG(PORTD,1)
|
||||||
|
#define PORTD_Bit2 GPIO_BITREG(PORTD,2)
|
||||||
|
#define PORTD_Bit3 GPIO_BITREG(PORTD,3)
|
||||||
|
#define PORTD_Bit4 GPIO_BITREG(PORTD,4)
|
||||||
|
#define PORTD_Bit5 GPIO_BITREG(PORTD,5)
|
||||||
|
#define PORTD_Bit6 GPIO_BITREG(PORTD,6)
|
||||||
|
#define PORTD_Bit7 GPIO_BITREG(PORTD,7)
|
||||||
|
|
||||||
|
#define GPIOR0_Bit0 GPIO_BITREG(GPIOR0,0)
|
||||||
|
#define GPIOR0_Bit1 GPIO_BITREG(GPIOR0,1)
|
||||||
|
#define GPIOR0_Bit2 GPIO_BITREG(GPIOR0,2)
|
||||||
|
#define GPIOR0_Bit3 GPIO_BITREG(GPIOR0,3)
|
||||||
|
#define GPIOR0_Bit4 GPIO_BITREG(GPIOR0,4)
|
||||||
|
#define GPIOR0_Bit5 GPIO_BITREG(GPIOR0,5)
|
||||||
|
#define GPIOR0_Bit6 GPIO_BITREG(GPIOR0,6)
|
||||||
|
#define GPIOR0_Bit7 GPIO_BITREG(GPIOR0,7)
|
||||||
|
|
||||||
|
#define GPIOR1_Bit0 GPIO_BITREG(GPIOR1,0)
|
||||||
|
#define GPIOR1_Bit1 GPIO_BITREG(GPIOR1,1)
|
||||||
|
#define GPIOR1_Bit2 GPIO_BITREG(GPIOR1,2)
|
||||||
|
#define GPIOR1_Bit3 GPIO_BITREG(GPIOR1,3)
|
||||||
|
#define GPIOR1_Bit4 GPIO_BITREG(GPIOR1,4)
|
||||||
|
#define GPIOR1_Bit5 GPIO_BITREG(GPIOR1,5)
|
||||||
|
#define GPIOR1_Bit6 GPIO_BITREG(GPIOR1,6)
|
||||||
|
#define GPIOR1_Bit7 GPIO_BITREG(GPIOR1,7)
|
||||||
|
|
||||||
|
#define GPIOR2_Bit0 GPIO_BITREG(GPIOR2,0)
|
||||||
|
#define GPIOR2_Bit1 GPIO_BITREG(GPIOR2,1)
|
||||||
|
#define GPIOR2_Bit2 GPIO_BITREG(GPIOR2,2)
|
||||||
|
#define GPIOR2_Bit3 GPIO_BITREG(GPIOR2,3)
|
||||||
|
#define GPIOR2_Bit4 GPIO_BITREG(GPIOR2,4)
|
||||||
|
#define GPIOR2_Bit5 GPIO_BITREG(GPIOR2,5)
|
||||||
|
#define GPIOR2_Bit6 GPIO_BITREG(GPIOR2,6)
|
||||||
|
#define GPIOR2_Bit7 GPIO_BITREG(GPIOR2,7)
|
||||||
|
|
||||||
|
/* FIXME: intrinsic routines: map to assembler for size/speed */
|
||||||
|
#define __multiply_unsigned(x,y) ((x)*(y))
|
||||||
|
|
||||||
|
|
||||||
|
/* memory location */
|
||||||
|
#define __eeprom __attribute__((section (".eeprom")))
|
||||||
|
#define __flash __attribute__((progmem))
|
||||||
|
/* __root means to not optimize or strip */
|
||||||
|
#define __root
|
||||||
|
#define __enable_interrupt() sei()
|
||||||
|
#define __disable_interrupt() cli()
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -95,7 +95,7 @@ static inline void init(
|
|||||||
BIT_SET(DDRD, DDD5);
|
BIT_SET(DDRD, DDD5);
|
||||||
|
|
||||||
/* Enable global interrupts */
|
/* Enable global interrupts */
|
||||||
sei();
|
__enable_interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t NPDU_Timer;
|
static uint8_t NPDU_Timer;
|
||||||
@@ -137,7 +137,8 @@ static inline void input_switch_read(
|
|||||||
uint8_t value;
|
uint8_t value;
|
||||||
static uint8_t old_value = 0;
|
static uint8_t old_value = 0;
|
||||||
|
|
||||||
value = BITMASK_CHECK(PINC, 0x0F) | (BITMASK_CHECK(PINB, 0x07) << 4);
|
value = BITMASK_CHECK(PINC, 0x0F);
|
||||||
|
value |= (BITMASK_CHECK(PINB, 0x07) << 4);
|
||||||
if (value != old_value) {
|
if (value != old_value) {
|
||||||
old_value = value;
|
old_value = value;
|
||||||
} else {
|
} else {
|
||||||
@@ -176,6 +177,4 @@ int main(
|
|||||||
NPDU_LED_On();
|
NPDU_LED_On();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,12 +30,76 @@ C:\code\bacnet-stack\ports\atmega168> make clean all
|
|||||||
I also used the bacnet.aps project file in AVR Studio to
|
I also used the bacnet.aps project file in AVR Studio to
|
||||||
make the project and simulate it.
|
make the project and simulate it.
|
||||||
|
|
||||||
Note that the bacnet stack is currently layed out as encapsulating
|
Compiler settings for IAR Embedded Workbench (FIXME: makefile?):
|
||||||
modules that include both client and server functionality for each service.
|
General Options
|
||||||
The nice thing about the all in one modules that it permits easy unit
|
---------------
|
||||||
testing. The bad thing is that it puts all the unused code into the build.
|
Target
|
||||||
Therefore, until the code is split into separate modules,
|
Processor configuration: --cpu=m168. ATmega168
|
||||||
the unused sections must be commented out (use #if 0, #endif).
|
Memory Model: Small
|
||||||
|
System configuration: Configure system using dialogs (not in .XCL file)
|
||||||
|
Output
|
||||||
|
Executable
|
||||||
|
Output Directories: Debug\Exe, Debug\Obj, Debug\List
|
||||||
|
Library Configuration
|
||||||
|
Library: CLIB
|
||||||
|
Library Options
|
||||||
|
Printf formatter: Small
|
||||||
|
Scanf formatter: Medium
|
||||||
|
Heap Configuration
|
||||||
|
CLIB heap size: 0x10
|
||||||
|
System
|
||||||
|
CSTACK: 0x20 (0x60?)
|
||||||
|
RSTACK: 16 (32?)
|
||||||
|
Initialize unused interrupt vectors with RETI instructions (enabled)
|
||||||
|
Enable bit defnitions in I/O-Include files. (enabled)
|
||||||
|
MISRA C
|
||||||
|
not enabled
|
||||||
|
|
||||||
|
C/C++ Compiler
|
||||||
|
--------------
|
||||||
|
Language
|
||||||
|
Language: C
|
||||||
|
Require prototypes (not enabled)
|
||||||
|
Allow IAR extensions
|
||||||
|
Plain 'char' is Signed
|
||||||
|
Enable multibyte support (not enabled)
|
||||||
|
Code
|
||||||
|
Memory utilization:
|
||||||
|
Place aggregate initializers in flash memory (enabled)
|
||||||
|
Force generation of all global and static variables (not enabled)
|
||||||
|
Register utilization:
|
||||||
|
Number of registers to lock for global variables: 0
|
||||||
|
Use ICCA90 1.x calling convention (not enabled)
|
||||||
|
Optimizations
|
||||||
|
Size: High (Maximum optimization)
|
||||||
|
Number of cross-call passes: Unlimited
|
||||||
|
Always do cross call optimization (not enabled)
|
||||||
|
Output
|
||||||
|
Module type: Override default (not enabled)
|
||||||
|
Object module name (not enabled)
|
||||||
|
Generate debug information (enabled)
|
||||||
|
No error messages in output files (not enabled)
|
||||||
|
List
|
||||||
|
Output list file (not enabled)
|
||||||
|
Output assembler file (enabled)
|
||||||
|
Preprocessor
|
||||||
|
Ignore standard include paths (not enabled)
|
||||||
|
Include paths:
|
||||||
|
$PROJ_DIR$
|
||||||
|
$PROJ_DIR$\..\..\include
|
||||||
|
Preinclude file: (none)
|
||||||
|
Defined symbols:
|
||||||
|
BACDL_MSTP
|
||||||
|
MAX_APDU=128
|
||||||
|
BIG_ENDIAN=0
|
||||||
|
MAX_TSM_TRANSACTIONS=0
|
||||||
|
BACAPP_REAL
|
||||||
|
Diagnostics
|
||||||
|
(not enabled)
|
||||||
|
MISRA C
|
||||||
|
(not enabled)
|
||||||
|
Extra Options
|
||||||
|
Use command line options (not enabled)
|
||||||
|
|
||||||
Hopefully you find it useful!
|
Hopefully you find it useful!
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef STDBOOL_H
|
||||||
|
#define STDBOOL_H
|
||||||
|
|
||||||
|
/* C99 Boolean types for compilers without C99 support */
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
/* typedef char _Bool; */
|
||||||
|
#ifndef bool
|
||||||
|
#define bool _Bool
|
||||||
|
#endif
|
||||||
|
#ifndef true
|
||||||
|
#define true 1
|
||||||
|
#endif
|
||||||
|
#ifndef false
|
||||||
|
#define false 0
|
||||||
|
#endif
|
||||||
|
#define __bool_true_false_are_defined 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/* Defines the standard integer types that are used in code */
|
||||||
|
|
||||||
|
#ifndef STDINT_H
|
||||||
|
#define STDINT_H 1
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
typedef unsigned char uint8_t; /* 1 byte 0 to 255 */
|
||||||
|
typedef signed char int8_t; /* 1 byte -127 to 127 */
|
||||||
|
typedef unsigned short uint16_t; /* 2 bytes 0 to 65535 */
|
||||||
|
typedef signed short int16_t; /* 2 bytes -32767 to 32767 */
|
||||||
|
typedef unsigned long uint32_t; /* 4 bytes 0 to 4294967295 */
|
||||||
|
typedef signed long int32_t; /* 4 bytes -2147483647 to 2147483647 */
|
||||||
|
|
||||||
|
#endif /* STDINT_H */
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
#include <stdint.h>
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
|
|
||||||
/* This module is a 1 millisecond timer */
|
/* This module is a 1 millisecond timer */
|
||||||
@@ -46,7 +46,7 @@ void Timer_Initialize(
|
|||||||
{
|
{
|
||||||
/* Normal Operation */
|
/* Normal Operation */
|
||||||
TCCR1A = 0;
|
TCCR1A = 0;
|
||||||
/* CSn2 CSn1 CSn0 Description
|
/* CSn2 CSn1 CSn0 Description
|
||||||
---- ---- ---- -----------
|
---- ---- ---- -----------
|
||||||
0 0 0 No Clock Source
|
0 0 0 No Clock Source
|
||||||
0 0 1 No prescaling
|
0 0 1 No prescaling
|
||||||
@@ -71,7 +71,12 @@ void Timer_Initialize(
|
|||||||
/* Timer interupt */
|
/* Timer interupt */
|
||||||
/* note: Global interupts must be enabled - sei() */
|
/* note: Global interupts must be enabled - sei() */
|
||||||
/* Timer Overflowed! Increment the time. */
|
/* Timer Overflowed! Increment the time. */
|
||||||
|
#if defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ASM__)
|
||||||
|
#pragma vector=TIMER0_OVF_vect
|
||||||
|
__interrupt void myTIMER0_OVF_vect()
|
||||||
|
#else
|
||||||
ISR(TIMER0_OVF_vect)
|
ISR(TIMER0_OVF_vect)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
/* Set the counter for the next interrupt */
|
/* Set the counter for the next interrupt */
|
||||||
TCNT0 = TIMER_COUNT;
|
TCNT0 = TIMER_COUNT;
|
||||||
@@ -91,7 +96,7 @@ uint16_t Timer_Silence(
|
|||||||
uint8_t sreg;
|
uint8_t sreg;
|
||||||
|
|
||||||
sreg = SREG;
|
sreg = SREG;
|
||||||
cli();
|
__disable_interrupt();
|
||||||
timer = SilenceTime;
|
timer = SilenceTime;
|
||||||
SREG = sreg;
|
SREG = sreg;
|
||||||
|
|
||||||
@@ -105,7 +110,7 @@ void Timer_Silence_Reset(
|
|||||||
uint8_t sreg;
|
uint8_t sreg;
|
||||||
|
|
||||||
sreg = SREG;
|
sreg = SREG;
|
||||||
cli();
|
__disable_interrupt();
|
||||||
SilenceTime = 0;
|
SilenceTime = 0;
|
||||||
SREG = sreg;
|
SREG = sreg;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user