Commit 0cbb0c29 authored by spookysys's avatar spookysys

Dag 2 oppgaver done

parent d52e998a
......@@ -42,7 +42,7 @@ int main(void)
TCA0.SINGLE.CTRLA |= (TCA_SINGLE_ENABLE_bm); //Enable timer
TCA0.SINGLE.CTRLB |= (0x05 << TCA_SINGLE_WGMODE0_bp); //Set mode to single slope
TCA0.SINGLE.CTRLB |= (TCA_SINGLE_CMP0EN_bm) | (TCA_SINGLE_CMP1EN_bm);
TCA0.SINGLE.CTRLB |= (TCA_SINGLE_CMP0EN_bm) | (TCA_SINGLE_CMP1EN_bm); //Enable the compare channels
TCA0.SINGLE.PER = 0x0fff; //We set our top to have a sufficiently high frequency (Top at 16 bit (0xffff) ~25Hz, 12 bit (0x0fff) ~400Hz)
TCA0.SINGLE.CMP0 = 0x0000;
......
......@@ -34,7 +34,9 @@ int main(void)
//Next we Enable timer interupts on overflow
TCA0.SINGLE.INTCTRL |= (TCA_SINGLE_OVF_bm);
//Finally we have to set the max value of the timer, the top.
//This defines the period of the interrupt (which hints at the register's name.)
//Note that this is a 16 bit value!
uint16_t counterTop = 0x4000;
TCA0.SINGLE.PER = counterTop;
......@@ -51,6 +53,6 @@ ISR(TCA0_OVF_vect){
PORTB.OUTTGL = (1 << LED1) | (1 << LED2);
TCA0.SINGLE.INTFLAGS |= ( TCA_SINGLE_OVF_bm); //Clear the interupt flag
TCA0.SINGLE.INTFLAGS = ( TCA_SINGLE_OVF_bm); //Clear the interupt flag
}
\ No newline at end of file
......@@ -33,7 +33,7 @@ void uart_transmit(unsigned char data){
while (!(USART0.STATUS & (1 << USART_DREIF_bp))){
//wait for previous transmit to finish
};
USART0.TXDATAH = 0x00; //Is needed!
USART0.TXDATAL = data;
}
......
/*
* PWM-LF.c
*
* Created: 29.01.2017 23:43:39
* Author : Petter
*/
#define F_CPU 3333333UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define LED1 0 // port B, connected to WO0
#define LED2 1 // port B, connected to WO1
#define LED3 4 // Port B
#define SW1 5 // Port A
#define SW2 6 // Port A
#define SW3 7 // Port A
int main(void)
{
//Set up the leds and buttons. You might want to copy this from previous exercises.
/*We will be using timer 1 in single (not split) mode.
It is highly recommended that you read chapter 20.3.3.4 in the datasheet
on timer compare channels.
There you will find a sub-capter on the single-slope PWM we will be using.
*/
//First, enable the timer
//Set the mode of the timer to single slope PWM
//We have to override the normal pin opperation so the PWM is pushed directly to the pin
//Hint: WO0 and WO1 are connected to leds. We need to override them to get the PWM out.
/*Timer A is a 16 bit timer. This will give us a frequency of 25Hz, we can see it flicker.
By lowering the period, (PER) we get higher frequency at the cost of lower resolution.
*/
//Set the period to 12 bit. (This results in a frequency of ~400Hz.)
//We can now control the PWM duty cycle by simply writing values to the CMP0 and CMP1 registers.
TCA0.SINGLE.CMP0 = 0x0000; //Max brightness (Leds are inverted)
TCA0.SINGLE.CMP1 = 0x0fff; //Min brightness (Leds are inverted)
while(1){
/*Have some fun with the leds. Examples:
Have them fade between max and min
Have them fade in a pattern (Heartbeat?)
Change the brightness based on buttons
*/
}
}
#define F_CPU 3333333UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define LED1 0 // port B
#define LED2 1 // port B
#define LED3 4 // Port B
int main(void)
{
/* In this exercise we will get LEDs to blink at even intervals using interrupts
First set up the LEDs like in the previous exercise.
You can either copy paste from the previous exercise or start fresh.
*/
/*We will be using timer A that will trigger an overflow interupt.
This is a 16 bit timer that can run in 2 modes
-sigle mode as 1 16-bit timer
-dual/split mode as 2 8-bit timers
We will be using single mode in this exercise.
Hint because the register names can be hard to understand:
TCA0.SINGLE.CTRLA adresses the control A register for timer A
First we set the prescaler to clk=clk/256 and enable the timer.
This is done by setting the right bits in the control A register.
*/
//Next we Enable timer interupt for overflow on timer A.
//Finally we have to set the max value of the timer, the top.
//This defines the period of the interrupt (which hints at the register's name.)
//Note that this is a 16 bit value!
//To be able to react to the interrupts from the module we have to enable interrupts globally.
//This is done in the function sei(), whih is located in the already included header file <avr/interrupt.h>
sei();
while(1){
//Do other things?
//Remember to fill in the ISR at the bottom of the file, else nothing will happen!
}
}
ISR(TCA0_OVF_vect){
//Do something with the led(s), like toggle.
//Clear the interupt flag.
//If we do not clear the flag, we will instantly jump back into the ISR again
}
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Atmel Studio Solution File, Format Version 11.00
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "UART", "UART\UART.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AVR = Debug|AVR
Release|AVR = Release|AVR
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
LINKER_SCRIPT_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../main.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
main.o
OBJS_AS_ARGS += \
main.o
C_DEPS += \
main.d
C_DEPS_AS_ARGS += \
main.d
OUTPUT_FILE_PATH +=UART.elf
OUTPUT_FILE_PATH_AS_ARGS +=UART.elf
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:= ./makedep.mk
LIB_DEP+=
LINKER_SCRIPT_DEP+=
# AVR32/GNU C Compiler
./%.o: .././%.c
@echo Building file: $<
@echo Invoking: AVR/GNU C Compiler : 4.9.2
$(QUOTE)D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"D:\Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny817 -B "D:\Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\gcc\dev\attiny817" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
# AVR32/GNU Preprocessing Assembler
# AVR32/GNU Assembler
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
@echo Building target: $@
@echo Invoking: AVR/GNU Linker : 4.9.2
$(QUOTE)D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="UART.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=attiny817 -B "D:\Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\gcc\dev\attiny817"
@echo Finished building target: $@
"D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "UART.elf" "UART.hex"
"D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "UART.elf" "UART.eep" || exit 0
"D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "UART.elf" > "UART.lss"
"D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "UART.elf" "UART.srec"
"D:\Atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "UART.elf"
# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)
-$(RM) $(C_DEPS_AS_ARGS)
rm -rf "UART.elf" "UART.a" "UART.hex" "UART.lss" "UART.eep" "UART.map" "UART.srec" "UART.usersignatures"
\ No newline at end of file
:1000000019C022C021C020C01FC01EC01DC01CC0FE
:100010001BC01AC019C018C017C016C015C014C024
:1000200013C012C011C010C00FC00EC00DC00CC054
:100030000BC00AC011241FBECFEFCDBFDFE3DEBF70
:100040000E9458000C949D000C9400009C01990F94
:10005000440B550B64E573E78BEC90E00E947B004A
:10006000E4E2F4E0808184608083E0E2F4E0808177
:1000700084608083832F992787FD9A958093090850
:1000800020930808E6E0F8E08081806C8083089582
:10009000E4E0F8E080818823ECF78091000808957F
:1000A000E4E0F8E0908195FFFDCF80930208089589
:1000B00080E895E20E942600E0E2F4E08081806121
:1000C0008083E4E2F4E0808180618083C4E2D4E054
:1000D0000E94480098819F7E98830E9450002AE6E3
:1000E00084E091E0215080409040E1F700C0888199
:1000F00080618883EDCFA1E21A2EAA1BBB1BFD01F4
:100100000DC0AA1FBB1FEE1FFF1FA217B307E407F6
:10011000F50720F0A21BB30BE40BF50B661F771F4E
:10012000881F991F1A9469F760957095809590952E
:0E0130009B01AC01BD01CF010895F894FFCFF3
:00000001FF
UART.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00803e00 00803e00 00000192 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000013e 00000000 00000000 00000054 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .comment 00000030 00000000 00000000 00000192 2**0
CONTENTS, READONLY
3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000001c4 2**2
CONTENTS, READONLY
4 .debug_aranges 00000038 00000000 00000000 00000200 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 0000183c 00000000 00000000 00000238 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 00001692 00000000 00000000 00001a74 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000002e2 00000000 00000000 00003106 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000054 00000000 00000000 000033e8 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 00000b34 00000000 00000000 0000343c 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 00000039 00000000 00000000 00003f70 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000028 00000000 00000000 00003fa9 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end>
2: 22 c0 rjmp .+68 ; 0x48 <__bad_interrupt>
4: 21 c0 rjmp .+66 ; 0x48 <__bad_interrupt>
6: 20 c0 rjmp .+64 ; 0x48 <__bad_interrupt>
8: 1f c0 rjmp .+62 ; 0x48 <__bad_interrupt>
a: 1e c0 rjmp .+60 ; 0x48 <__bad_interrupt>
c: 1d c0 rjmp .+58 ; 0x48 <__bad_interrupt>
e: 1c c0 rjmp .+56 ; 0x48 <__bad_interrupt>
10: 1b c0 rjmp .+54 ; 0x48 <__bad_interrupt>
12: 1a c0 rjmp .+52 ; 0x48 <__bad_interrupt>
14: 19 c0 rjmp .+50 ; 0x48 <__bad_interrupt>
16: 18 c0 rjmp .+48 ; 0x48 <__bad_interrupt>
18: 17 c0 rjmp .+46 ; 0x48 <__bad_interrupt>
1a: 16 c0 rjmp .+44 ; 0x48 <__bad_interrupt>
1c: 15 c0 rjmp .+42 ; 0x48 <__bad_interrupt>
1e: 14 c0 rjmp .+40 ; 0x48 <__bad_interrupt>
20: 13 c0 rjmp .+38 ; 0x48 <__bad_interrupt>
22: 12 c0 rjmp .+36 ; 0x48 <__bad_interrupt>
24: 11 c0 rjmp .+34 ; 0x48 <__bad_interrupt>
26: 10 c0 rjmp .+32 ; 0x48 <__bad_interrupt>
28: 0f c0 rjmp .+30 ; 0x48 <__bad_interrupt>
2a: 0e c0 rjmp .+28 ; 0x48 <__bad_interrupt>
2c: 0d c0 rjmp .+26 ; 0x48 <__bad_interrupt>
2e: 0c c0 rjmp .+24 ; 0x48 <__bad_interrupt>
30: 0b c0 rjmp .+22 ; 0x48 <__bad_interrupt>
32: 0a c0 rjmp .+20 ; 0x48 <__bad_interrupt>
00000034 <__ctors_end>:
34: 11 24 eor r1, r1
36: 1f be out 0x3f, r1 ; 63
38: cf ef ldi r28, 0xFF ; 255
3a: cd bf out 0x3d, r28 ; 61
3c: df e3 ldi r29, 0x3F ; 63
3e: de bf out 0x3e, r29 ; 62
40: 0e 94 58 00 call 0xb0 ; 0xb0 <main>
44: 0c 94 9d 00 jmp 0x13a ; 0x13a <_exit>
00000048 <__bad_interrupt>:
48: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
0000004c <uart_init>:
#include <util/delay.h>
#include <stdbool.h>
void uart_init(int baud){
int baudRate = ((4UL*F_CPU)/baud); //CLK_PER = CLK_CPU, see tabell 24-2
4c: 9c 01 movw r18, r24
4e: 99 0f add r25, r25
50: 44 0b sbc r20, r20
52: 55 0b sbc r21, r21
54: 64 e5 ldi r22, 0x54 ; 84
56: 73 e7 ldi r23, 0x73 ; 115
58: 8b ec ldi r24, 0xCB ; 203
5a: 90 e0 ldi r25, 0x00 ; 0
5c: 0e 94 7b 00 call 0xf6 ; 0xf6 <__udivmodsi4>
//From chapter 24.3 in datasheet
PORTB_OUT |= (1 << 2);
60: e4 e2 ldi r30, 0x24 ; 36
62: f4 e0 ldi r31, 0x04 ; 4
64: 80 81 ld r24, Z
66: 84 60 ori r24, 0x04 ; 4
68: 80 83 st Z, r24
PORTB_DIR |= (1 << 2); //Setting up TX pin as output
6a: e0 e2 ldi r30, 0x20 ; 32
6c: f4 e0 ldi r31, 0x04 ; 4
6e: 80 81 ld r24, Z
70: 84 60 ori r24, 0x04 ; 4
72: 80 83 st Z, r24
USART0_BAUDH = (baudRate >> 8); //Shift register right by 8 bits
74: 83 2f mov r24, r19
76: 99 27 eor r25, r25
78: 87 fd sbrc r24, 7
7a: 9a 95 dec r25
7c: 80 93 09 08 sts 0x0809, r24 ; 0x800809 <__TEXT_REGION_LENGTH__+0x700809>
USART0_BAUDL = baudRate; //Set baud rate
80: 20 93 08 08 sts 0x0808, r18 ; 0x800808 <__TEXT_REGION_LENGTH__+0x700808>
//control bits default async, 1 stop bit, 8 bit character size
USART0_CTRLB |= (1 << USART_RXEN_bp) | (1 << USART_TXEN_bp); //Enable RX and TX
84: e6 e0 ldi r30, 0x06 ; 6
86: f8 e0 ldi r31, 0x08 ; 8
88: 80 81 ld r24, Z
8a: 80 6c ori r24, 0xC0 ; 192
8c: 80 83 st Z, r24
8e: 08 95 ret
00000090 <uart_recieve>:
}
// function to recieve data
unsigned char uart_recieve (void){
while (!(USART0_STATUS & (1 << USART_RXCIF_bp)));
90: e4 e0 ldi r30, 0x04 ; 4
92: f8 e0 ldi r31, 0x08 ; 8
94: 80 81 ld r24, Z
96: 88 23 and r24, r24
98: ec f7 brge .-6 ; 0x94 <uart_recieve+0x4>
return USART0_RXDATAL;
9a: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x700800>
}
9e: 08 95 ret
000000a0 <uart_transmit>:
// function to transmit data
void uart_transmit(unsigned char data){
while (!(USART0_STATUS & (1 << USART_DREIF_bp)));
a0: e4 e0 ldi r30, 0x04 ; 4
a2: f8 e0 ldi r31, 0x08 ; 8
a4: 90 81 ld r25, Z
a6: 95 ff sbrs r25, 5
a8: fd cf rjmp .-6 ; 0xa4 <uart_transmit+0x4>
USART0_TXDATAL = data;
aa: 80 93 02 08 sts 0x0802, r24 ; 0x800802 <__TEXT_REGION_LENGTH__+0x700802>
ae: 08 95 ret
000000b0 <main>:
int main(void)
{
unsigned char a; // to hold the data
uart_init(9600); //start uart with baudrate of 9600
b0: 80 e8 ldi r24, 0x80 ; 128
b2: 95 e2 ldi r25, 0x25 ; 37
b4: 0e 94 26 00 call 0x4c ; 0x4c <uart_init>
PORTB_DIR |= (1 << PIN4_bp); //Setup onboard led for signaling
b8: e0 e2 ldi r30, 0x20 ; 32
ba: f4 e0 ldi r31, 0x04 ; 4
bc: 80 81 ld r24, Z
be: 80 61 ori r24, 0x10 ; 16
c0: 80 83 st Z, r24
PORTB_OUT |= (1 << PIN4_bp);
c2: e4 e2 ldi r30, 0x24 ; 36
c4: f4 e0 ldi r31, 0x04 ; 4
c6: 80 81 ld r24, Z
c8: 80 61 ori r24, 0x10 ; 16
ca: 80 83 st Z, r24
while (1)
{
a = uart_recieve(); // save the recieved data in varible a
PORTB_OUT &= ~(1 << PIN4_bp);
cc: c4 e2 ldi r28, 0x24 ; 36
ce: d4 e0 ldi r29, 0x04 ; 4
PORTB_OUT |= (1 << PIN4_bp);
while (1)
{
a = uart_recieve(); // save the recieved data in varible a
d0: 0e 94 48 00 call 0x90 ; 0x90 <uart_recieve>
PORTB_OUT &= ~(1 << PIN4_bp);
d4: 98 81 ld r25, Y
d6: 9f 7e andi r25, 0xEF ; 239
d8: 98 83 st Y, r25
uart_transmit(a); // transmit the recieved data back
da: 0e 94 50 00 call 0xa0 ; 0xa0 <uart_transmit>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
de: 2a e6 ldi r18, 0x6A ; 106
e0: 84 e0 ldi r24, 0x04 ; 4
e2: 91 e0 ldi r25, 0x01 ; 1
e4: 21 50 subi r18, 0x01 ; 1
e6: 80 40 sbci r24, 0x00 ; 0
e8: 90 40 sbci r25, 0x00 ; 0
ea: e1 f7 brne .-8 ; 0xe4 <main+0x34>
ec: 00 c0 rjmp .+0 ; 0xee <main+0x3e>
_delay_ms(100);
PORTB_OUT |= (1 << PIN4_bp);
ee: 88 81 ld r24, Y
f0: 80 61 ori r24, 0x10 ; 16
f2: 88 83 st Y, r24
}
f4: ed cf rjmp .-38 ; 0xd0 <main+0x20>
000000f6 <__udivmodsi4>:
f6: a1 e2 ldi r26, 0x21 ; 33
f8: 1a 2e mov r1, r26
fa: aa 1b sub r26, r26
fc: bb 1b sub r27, r27
fe: fd 01 movw r30, r26
100: 0d c0 rjmp .+26 ; 0x11c <__udivmodsi4_ep>
00000102 <__udivmodsi4_loop>:
102: aa 1f adc r26, r26
104: bb 1f adc r27, r27
106: ee 1f adc r30, r30
108: ff 1f adc r31, r31
10a: a2 17 cp r26, r18
10c: b3 07 cpc r27, r19
10e: e4 07 cpc r30, r20
110: f5 07 cpc r31, r21
112: 20 f0 brcs .+8 ; 0x11c <__udivmodsi4_ep>
114: a2 1b sub r26, r18
116: b3 0b sbc r27, r19
118: e4 0b sbc r30, r20
11a: f5 0b sbc r31, r21
0000011c <__udivmodsi4_ep>:
11c: 66 1f adc r22, r22
11e: 77 1f adc r23, r23
120: 88 1f adc r24, r24
122: 99 1f adc r25, r25
124: 1a 94 dec r1
126: 69 f7 brne .-38 ; 0x102 <__udivmodsi4_loop>
128: 60 95 com r22
12a: 70 95 com r23
12c: 80 95 com r24
12e: 90 95 com r25
130: 9b 01 movw r18, r22
132: ac 01 movw r20, r24
134: bd 01 movw r22, r26
136: cf 01 movw r24, r30
138: 08 95 ret
0000013a <_exit>:
13a: f8 94 cli
0000013c <__stop_program>:
13c: ff cf rjmp .-2 ; 0x13c <__stop_program>
This diff is collapsed.
S00C0000554152542E73726563DC
S113000019C022C021C020C01FC01EC01DC01CC0FA
S11300101BC01AC019C018C017C016C015C014C020
S113002013C012C011C010C00FC00EC00DC00CC050
S11300300BC00AC011241FBECFEFCDBFDFE3DEBF6C
S11300400E9458000C949D000C9400009C01990F90
S1130050440B550B64E573E78BEC90E00E947B0046
S1130060E4E2F4E0808184608083E0E2F4E0808173
S113007084608083832F992787FD9A95809309084C
S113008020930808E6E0F8E08081806C808308957E
S1130090E4E0F8E080818823ECF78091000808957B
S11300A0E4E0F8E0908195FFFDCF80930208089585
S11300B080E895E20E942600E0E2F4E0808180611D
S11300C08083E4E2F4E0808180618083C4E2D4E050
S11300D00E94480098819F7E98830E9450002AE6DF
S11300E084E091E0215080409040E1F700C0888195
S11300F080618883EDCFA1E21A2EAA1BBB1BFD01F0
S11301000DC0AA1FBB1FEE1FFF1FA217B307E407F2
S1130110F50720F0A21BB30BE40BF50B661F771F4A
S1130120881F991F1A9469F760957095809590952A
S11101309B01AC01BD01CF010895F894FFCFEF
S9030000FC
main.d main.o: .././main.c \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
D:\Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\include/avr/iotn817.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\xmega.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdbool.h
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
D:\Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\include/avr/iotn817.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\xmega.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h:
d:\atmel\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdbool.h:
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
main.c
<?xml version="1.0" encoding="utf-8"?>
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
<ProjectComponents>
<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<CApiVersion></CApiVersion>
<CBundle></CBundle>
<CClass>Device</CClass>
<CGroup>Startup</CGroup>
<CSub></CSub>
<CVariant></CVariant>
<CVendor>Atmel</CVendor>
<CVersion>1.1.0</CVersion>
<DefaultRepoPath>D:/Atmel\7.0\Packs</DefaultRepoPath>
<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<Description></Description>
<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>D:/Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\include</AbsolutePath>
<Attribute></Attribute>
<Category>include</Category>
<Condition>C</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>include</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>D:/Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\include\avr\iotn817.h</AbsolutePath>
<Attribute></Attribute>
<Category>header</Category>
<Condition>C</Condition>
<FileContentHash>GzsE/dwQAz37AkZENa/sHg==</FileContentHash>
<FileVersion></FileVersion>
<Name>include/avr/iotn817.h</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>D:/Atmel\7.0\Packs\atmel\ATtiny_DFP\1.1.102\templates\main.c</AbsolutePath>
<Attribute>template</Attribute>