Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
avrkurs
avrkurs
Commits
9788a10e
Commit
9788a10e
authored
Feb 18, 2019
by
BuildTools
Browse files
Merge branch 'master' into fixurd
Different fixes in each, so merging should be fine.
parents
11fb15c0
293ffe09
Changes
32
Hide whitespace changes
Inline
Side-by-side
Session1-LF/Task1-LF.c
View file @
9788a10e
/*
/*
* Task1
-LF
.c
* Task1.c
*
*
* Created:
29
.0
1
.2017 23:
43:39
* Created:
11
.0
2
.2017 23:
37:53
* Author : Petter
* Author : Petter
*/
*/
/**
/**
* F_CPU tells the timer what the CPU's clock frequency is, such that the timer will count correctly.
* F_CPU tells the timer what the CPU's clock frequency is, such that the timer will count correctly.
* Note that this DOES NOT set the clock speed, it just informs the timer.
* Note that this DOES NOT set the clock speed, it just informs the timer.
...
@@ -13,7 +15,7 @@
...
@@ -13,7 +15,7 @@
* F_CPU must be defined before including headers.
* F_CPU must be defined before including headers.
*/
*/
#define F_CPU 3333333UL //The ATtiny
817
operates at 20MHz with a default scaling factor of 6: 20/6 = 3.333333MHz
#define F_CPU 3333333UL //The ATtiny
4809
operates at 20MHz with a default scaling factor of 6: 20/6 = 3.333333MHz
/**
/**
* System headers bellow
* System headers bellow
...
@@ -24,26 +26,31 @@
...
@@ -24,26 +26,31 @@
/**
/**
* Define helpers for pin bit positions.
* Define helpers for pin bit positions.
* The LED0 on the AT
mega324PB
main board is connected to pin 4 on port
B
.
* The LED0 on the AT
tiny4809
main board is connected to pin 4 on port
D
.
* Check the datasheet to find out which pins on which ports the different LEDs and buttons are connected to.
* Check the datasheet to find out which pins on which ports the different LEDs and buttons are connected to.
*/
*/
#define LED0 4 // LED0 is connected to pin 4 on port B (PIN4_bp)
#define LED0 4 // LED 1 is connected to pin 4 on PORTD
int
main
(
void
){
int
main
(
void
){
/**
/**
* We want to send signals to the LEDs, in order to turn the off and on.
* We want to send signals to the LEDs, in order to turn the off and on.
* In the AVR world we have the following:
* In the AVR world we have the following:
* PORTx
_
DIR: 1 is output, 0 is input
* PORTx
.
DIR: 1 is output, 0 is input
* LED: 1 LED is off, 0 LED is on, this is called active-low
* LED: 1 LED is off, 0 LED is on, this is called active-low
* Button: 1 button is open, 0 button is pressed, this is called active-low
* Button: 1 button is open, 0 button is pressed, this is called active-low
*
*
* Remember bit set logic:
* Remember bit set logic:
* Set to 1: FLAG |= ( 1 << BIT_POS ) - using 'or' so we only change the one we want and leave the others untouched
* Set to 1: FLAG |= ( 1 << BIT_POS ) - using 'or' so we only change the one we want and leave the others untouched
* Set to 0: FLAG &= ~( 1 << BIT_POS ) - same thing here but using 'and', find paper and a logic-table, and try it out if you want to know how it works
* Set to 0: FLAG &= ~( 1 << BIT_POS ) - same thing here but using 'and', find paper and a logic-table, and try it out if you want to know how it works
* Toogle bit: FLAG ^= ( 1 << BIT_POS ) - using bitwise xor, toogles the bit at BIT_POS
*/
*/
PORT
B
.
DIR
|=
(
1
<<
LED0
);
// Set LED0 as output - Using "
B
" in PORTx.DIR since the LED is connected to port
B
on the microcontroller
PORT
D
.
DIR
|=
(
1
<<
LED0
);
// Set LED0 as output - Using "
D
" in PORTx.DIR since the LED is connected to port
D
on the microcontroller
/*
/*
* The usual way to run microcontrollers is using a simple infinite loop
* The usual way to run microcontrollers is using a simple infinite loop
...
@@ -51,8 +58,9 @@ int main(void){
...
@@ -51,8 +58,9 @@ int main(void){
while
(
1
)
while
(
1
)
{
{
PORTB
.
OUT
^=
(
1
<<
LED0
);
// Changes the state of LED0 by XOR-ing the last state. Check the XOR-table to find out how this works.
PORTD
.
OUT
^=
(
1
<<
LED0
);
// Changes the state of LED0 by XOR-ing the last state. Check the XOR-table to find out how this works.
// Non-compressed: PORTB_OUT = PORTB.OUT ^ (1 << LED0);
// Non-compressed: PORTD.OUT = PORTD.OUT ^ (1 << LED0);
//Can also refer to toogle register: PORTD.OUTTGL = (1 << LED0). IMPORTANT: only use equal sign here (=)
_delay_ms
(
500
);
_delay_ms
(
500
);
}
}
}
}
Session1-LF/Task2-LF.c
View file @
9788a10e
/*
/*
* Task2
-LF
.c
* Task2.c
*
*
* Created:
29
.0
1
.2017 23:
43:39
* Created:
11
.0
2
.2017 23:
39:47
* Author : Petter
* Author : Petter
*/
*/
...
@@ -15,59 +15,74 @@
...
@@ -15,59 +15,74 @@
#include <util/delay.h>
#include <util/delay.h>
/*
/*
* Checkout the ATtiny
817
datasheet to find the correct ports and pins
* Check
out the ATtiny
4809
datasheet to find the correct ports and pins
*/
*/
// LED
// LED
#define LED0 4 //On port
B
#define LED0 4 //On port
D
// Button
// Button
#define SW0
5
//On port
B
#define SW0
2
//On port
C
int
main
(
void
)
int
main
(
void
)
{
{
/*
/*
* We want to send signals to the LEDs, in order to turn it off and on.
* We want to send signals to the LEDs, in order to turn it off and on.
* We also want to be able to read the switches.
* We also want to be able to read the switches.
* This is done by setting bits in the PORTx.DIR register (in this case PORT
B
.DIR)
* This is done by setting bits in the PORTx.DIR register (in this case PORT
D.DIR and PORTC
.DIR)
* PORTx.DIR: 1 is output, 0 is input
* PORTx.DIR: 1 is output, 0 is input
* LED: 1 LED is off, 0 LED is on
* LED: 1 LED is off, 0 LED is on
* Button: 1 Button is open, 0 button is pressed
* Button: 1 Button is open, 0 button is pressed
* Bit set logic:
* Bit set logic:
* Set to 1:
FLA
G |= ( 1 << BIT_POS )
* Set to 1:
RE
G |= ( 1 << BIT_POS )
* Set to 0:
FLA
G &= ~( 1 << BIT_POS )
* Set to 0:
RE
G &= ~( 1 << BIT_POS )
*/
*/
/**
/**
* In order to read from the switches, we need to give it a ground reference, via a pull-up resistor.
* In order to read from the switches, we need to give it a ground reference, via a pull-up resistor.
* If we don't, the switch will have a floating ground, and hence its value will be undefined.
* If we don't, the switch will have a floating ground, and hence its value will be undefined.
* On the ATtiny817, we enable pull-up by setting the "PORT_PULLUPEN_bp" flag in "PORTx.PINnCTRL" high.
* On the ATtiny4809, we enable pull-up by setting the "PORT_PULLUPEN" flag in "PORTx.PINnCTRL" high.
* See datasheet section 16 (I/O-ports) and user guide section 4 (Hardware User Guide).
* See datasheet section 15 (I/O-ports).
*/
/*
* It's your time to do some stuff! Do the following:
* 1 - Set LED0 as output
* 2 - Set SW0 as input
* 3 - Enable pull-up on button SW0
*/
*/
PORTB
.
DIR
|=
(
1
<<
LED0
);
// Set LED0 as output
PORTB
.
DIR
&=
~
(
1
<<
SW0
);
//Set SW0 as input
PORTB
.
PIN5CTRL
|=
(
1
<<
PORT_PULLUPEN_bp
);
//Enable pull-up on button SW0 (pin5)
PORTD
.
DIR
|=
(
1
<<
LED0
);
// Set LED0 as output
PORTC
.
DIR
&=
~
(
1
<<
SW0
);
//Set SW0 as input
PORTB
.
PIN2CTRL
|=
(
1
<<
PORT_PULLUPEN_bp
);
//Enable pull-up on button SW0 (pin5)
while
(
1
)
while
(
1
)
{
{
/*
/*
* Here, you want to check if a button is pressed, and if yes, turn on the LED.
* Here, you want to check if a button is pressed, and if yes, turn on the LED.
* If no, then do the opposite.
* If no, then do the opposite.
* Similar to setting pins with PORTx
_
OUT, we can read pins with PORTx.IN
* Similar to setting pins with PORTx
.
OUT, we can read pins with PORTx.IN
* In order to check a pin value, mask out that particular bit. (use bitwise AND)
* In order to check a pin value, mask out that particular bit. (use bitwise AND)
* Bit masking is done like this:
* Bit masking is done like this:
* (REGISTER & (1 << BIT_POS)), which selects bit BIT_POS from register.
* (REGISTER & (1 << BIT_POS)), which selects bit BIT_POS from register.
* If that bit is 0, the result will be 0. If it is 1, the result will be other than 0 (depending on bit pos).
* If that bit is 0, the result will be 0. If it is 1, the result will be other than 0 (depending on bit pos).
*/
*/
if
(
!
(
PORTB
.
IN
&
(
1
<<
SW0
))){
// If button is pressed (0 - LOW
PORTB
.
OUT
&=
~
(
1
<<
LED0
);
// Sets output to 0, turns LED0 on
/*
* Do the following:
* 1 - check if button SW0 is pressed
* 2 - if so, turn the LED on
* 3 - if not, turn the LED off
*/
if
(
!
(
PORTC
.
IN
&
(
1
<<
SW0
))){
// If button is pressed (0 - LOW
PORTD
.
OUT
&=
~
(
1
<<
LED0
);
// Sets output to 0, turns LED0 on
}
}
else
{
else
{
PORT
B
.
OUT
|=
(
1
<<
LED0
);
// Sets output to 1, turns LED off
PORT
D
.
OUT
|=
(
1
<<
LED0
);
// Sets output to 1, turns LED off
}
}
}
}
...
...
Session1-LF/Task3-LF.c
View file @
9788a10e
...
@@ -12,10 +12,10 @@
...
@@ -12,10 +12,10 @@
#include <stdbool.h>
#include <stdbool.h>
//LED
//LED
#define LED0 4 //on port
B
#define LED0 4 //on port
D
//Button
//Button
#define SW0
5
//on port
B
#define SW0
2
//on port
C
int
main
(
void
)
int
main
(
void
)
{
{
...
@@ -29,10 +29,10 @@ int main(void)
...
@@ -29,10 +29,10 @@ int main(void)
* Set to 0: REG &= ~( 1 << BIT_POS )
* Set to 0: REG &= ~( 1 << BIT_POS )
* This is called "read-modify-write".
* This is called "read-modify-write".
*
*
* The ATtiny
817
also has special port registers that can do some of this for you.
* The ATtiny
4809
also has special port registers that can do some of this for you.
* Read what PORTx.DIRSET, .DIRCLR and .DIRTGL do to the PORTx.DIR register,
* Read what PORTx.DIRSET, .DIRCLR and .DIRTGL do to the PORTx.DIR register,
* And similarly what PORTx.OUTSET, .OUTCLR and .OUTTGL do to PORTx.OUT
* And similarly what PORTx.OUTSET, .OUTCLR and .OUTTGL do to PORTx.OUT
* (HINT: see chapter 1
6
.5 of the datasheet)
* (HINT: see chapter 1
5
.5 of the datasheet)
LF: They set clear and toggle bit in the register. eks: PORTB.DIRCLR = (1 << 5); to clear bit 5
LF: They set clear and toggle bit in the register. eks: PORTB.DIRCLR = (1 << 5); to clear bit 5
...
@@ -40,13 +40,16 @@ int main(void)
...
@@ -40,13 +40,16 @@ int main(void)
*/
*/
PORTB
.
DIRSET
=
(
1
<<
LED0
);
// Set LED0 as output
PORTD
.
DIRSET
=
(
1
<<
LED0
);
// Set LED0 as output
//Alt: PORTB.DIR |= (1 << LED0);
//Alt: PORTD.DIR |= (1 << LED0);
PORTD
.
OUTSET
=
(
1
<<
LED0
);
// Set LED0 output high (turns off the led, since the led is active low)
//Alt: PORTD.OUT |= (1 << LED0);
PORT
B
.
DIRCLR
=
(
1
<<
SW0
);
// Set SW0 as input (default)
PORT
C
.
DIRCLR
=
(
1
<<
SW0
);
// Set SW0 as input (default)
//Alt: PORT
B
.DIR &= ~(1 << SW0);
//Alt: PORT
C
.DIR &= ~(1 << SW0);
PORT
B
.
PIN
5
CTRL
|=
(
1
<<
3
);
// Enable pull-up on button SW
PORT
C
.
PIN
2
CTRL
|=
(
1
<<
3
);
// Enable pull-up on button SW
//eller bruk PORT_PULLUPEN_bp som er lik 3 (_bp = Bit Position)
//eller bruk PORT_PULLUPEN_bp som er lik 3 (_bp = Bit Position)
...
@@ -54,11 +57,11 @@ int main(void)
...
@@ -54,11 +57,11 @@ int main(void)
while
(
1
)
while
(
1
)
{
{
if
(
!
(
PORT
B
.
IN
&
(
1
<<
SW0
))){
if
(
!
(
PORT
C
.
IN
&
(
1
<<
SW0
))){
if
(
buttonState
==
0
){
if
(
buttonState
==
0
){
PORT
B
.
OUTTGL
=
(
1
<<
LED0
);
PORT
D
.
OUTTGL
=
(
1
<<
LED0
);
//Alt: PORT
B
.OUT ^= (1 << LED0);
//Alt: PORT
D
.OUT ^= (1 << LED0);
buttonState
=
1
;
buttonState
=
1
;
}
}
...
...
Session1/Task1/Task1.componentinfo.xml
View file @
9788a10e
...
@@ -9,13 +9,13 @@
...
@@ -9,13 +9,13 @@
<CSub></CSub>
<CSub></CSub>
<CVariant></CVariant>
<CVariant></CVariant>
<CVendor>
Atmel
</CVendor>
<CVendor>
Atmel
</CVendor>
<CVersion>
1.
1
.0
</CVersion>
<CVersion>
1.
2
.0
</CVersion>
<DefaultRepoPath>
D
:/
Atmel
\7.0\Packs
</DefaultRepoPath>
<DefaultRepoPath>
C
:/
Program Files (x86)\Atmel\Studio
\7.0\Packs
</DefaultRepoPath>
<DependentComponents
xmlns:d4p1=
"http://schemas.microsoft.com/2003/10/Serialization/Arrays"
/>
<DependentComponents
xmlns:d4p1=
"http://schemas.microsoft.com/2003/10/Serialization/Arrays"
/>
<Description></Description>
<Description></Description>
<Files
xmlns:d4p1=
"http://schemas.microsoft.com/2003/10/Serialization/Arrays"
>
<Files
xmlns:d4p1=
"http://schemas.microsoft.com/2003/10/Serialization/Arrays"
>
<d4p1:anyType
i:type=
"FileInfo"
>
<d4p1:anyType
i:type=
"FileInfo"
>
<AbsolutePath>
D
:/
Atmel
\7.0\Packs\atmel\AT
tiny
_DFP\1.
1.102
\include
</AbsolutePath>
<AbsolutePath>
C
:/
Program Files (x86)\Atmel\Studio
\7.0\Packs\atmel\AT
mega
_DFP\1.
2.209
\include
</AbsolutePath>
<Attribute></Attribute>
<Attribute></Attribute>
<Category>
include
</Category>
<Category>
include
</Category>
<Condition>
C
</Condition>
<Condition>
C
</Condition>
...
@@ -26,29 +26,29 @@
...
@@ -26,29 +26,29 @@
<SourcePath></SourcePath>
<SourcePath></SourcePath>
</d4p1:anyType>
</d4p1:anyType>
<d4p1:anyType
i:type=
"FileInfo"
>
<d4p1:anyType
i:type=
"FileInfo"
>
<AbsolutePath>
D
:/
Atmel
\7.0\Packs\atmel\AT
tiny
_DFP\1.
1.102
\include\avr\io
tn817
.h
</AbsolutePath>
<AbsolutePath>
C
:/
Program Files (x86)\Atmel\Studio
\7.0\Packs\atmel\AT
mega
_DFP\1.
2.209
\include\avr\io
m4809
.h
</AbsolutePath>
<Attribute></Attribute>
<Attribute></Attribute>
<Category>
header
</Category>
<Category>
header
</Category>
<Condition>
C
</Condition>
<Condition>
C
</Condition>
<FileContentHash>
GzsE/dwQAz37AkZENa/sH
g==
</FileContentHash>
<FileContentHash>
mWiFIOAGwUPlW0rYsXcjk
g==
</FileContentHash>
<FileVersion></FileVersion>
<FileVersion></FileVersion>
<Name>
include/avr/io
tn817
.h
</Name>
<Name>
include/avr/io
m4809
.h
</Name>
<SelectString></SelectString>
<SelectString></SelectString>
<SourcePath></SourcePath>
<SourcePath></SourcePath>
</d4p1:anyType>
</d4p1:anyType>
<d4p1:anyType
i:type=
"FileInfo"
>
<d4p1:anyType
i:type=
"FileInfo"
>
<AbsolutePath>
D
:/
Atmel
\7.0\Packs\atmel\AT
tiny
_DFP\1.
1.102
\templates\main.c
</AbsolutePath>
<AbsolutePath>
C
:/
Program Files (x86)\Atmel\Studio
\7.0\Packs\atmel\AT
mega
_DFP\1.
2.209
\templates\main.c
</AbsolutePath>
<Attribute>
template
</Attribute>
<Attribute>
template
</Attribute>
<Category>
source
</Category>
<Category>
source
</Category>
<Condition>
C Exe
</Condition>
<Condition>
C Exe
</Condition>
<FileContentHash>
NtrFFJHqGYFgQ+e154IDwQ
==
</FileContentHash>
<FileContentHash>
GD1k8YYhulqRs6FD1B2Hog
==
</FileContentHash>
<FileVersion></FileVersion>
<FileVersion></FileVersion>
<Name>
templates/main.c
</Name>
<Name>
templates/main.c
</Name>
<SelectString>
Main file (.c)
</SelectString>
<SelectString>
Main file (.c)
</SelectString>
<SourcePath></SourcePath>
<SourcePath></SourcePath>
</d4p1:anyType>
</d4p1:anyType>
<d4p1:anyType
i:type=
"FileInfo"
>
<d4p1:anyType
i:type=
"FileInfo"
>
<AbsolutePath>
D
:/
Atmel
\7.0\Packs\atmel\AT
tiny
_DFP\1.
1.102
\templates\main.cpp
</AbsolutePath>
<AbsolutePath>
C
:/
Program Files (x86)\Atmel\Studio
\7.0\Packs\atmel\AT
mega
_DFP\1.
2.209
\templates\main.cpp
</AbsolutePath>
<Attribute>
template
</Attribute>
<Attribute>
template
</Attribute>
<Category>
source
</Category>
<Category>
source
</Category>
<Condition>
C Exe
</Condition>
<Condition>
C Exe
</Condition>
...
@@ -59,22 +59,22 @@
...
@@ -59,22 +59,22 @@
<SourcePath></SourcePath>
<SourcePath></SourcePath>
</d4p1:anyType>
</d4p1:anyType>
<d4p1:anyType
i:type=
"FileInfo"
>
<d4p1:anyType
i:type=
"FileInfo"
>
<AbsolutePath>
D
:/
Atmel
\7.0\Packs\atmel\AT
tiny
_DFP\1.
1.102
\gcc\dev\at
tiny817
</AbsolutePath>
<AbsolutePath>
C
:/
Program Files (x86)\Atmel\Studio
\7.0\Packs\atmel\AT
mega
_DFP\1.
2.209
\gcc\dev\at
mega4809
</AbsolutePath>
<Attribute></Attribute>
<Attribute></Attribute>
<Category>
libraryPrefix
</Category>
<Category>
libraryPrefix
</Category>
<Condition>
GCC
</Condition>
<Condition>
GCC
</Condition>
<FileContentHash
i:nil=
"true"
/>
<FileContentHash
i:nil=
"true"
/>
<FileVersion></FileVersion>
<FileVersion></FileVersion>
<Name>
gcc/dev/at
tiny817
</Name>
<Name>
gcc/dev/at
mega4809
</Name>
<SelectString></SelectString>
<SelectString></SelectString>
<SourcePath></SourcePath>
<SourcePath></SourcePath>
</d4p1:anyType>
</d4p1:anyType>
</Files>
</Files>
<PackName>
AT
tiny
_DFP
</PackName>
<PackName>
AT
mega
_DFP
</PackName>
<PackPath>
D
:/
Atmel
/7.0/Packs/atmel/AT
tiny
_DFP/1.
1.102
/Atmel.AT
tiny
_DFP.pdsc
</PackPath>
<PackPath>
C
:/
Program Files (x86)/Atmel/Studio
/7.0/Packs/atmel/AT
mega
_DFP/1.
2.209
/Atmel.AT
mega
_DFP.pdsc
</PackPath>
<PackVersion>
1.
1.102
</PackVersion>
<PackVersion>
1.
2.209
</PackVersion>
<PresentInProject>
true
</PresentInProject>
<PresentInProject>
true
</PresentInProject>
<ReferenceConditionId>
AT
tiny817
</ReferenceConditionId>
<ReferenceConditionId>
AT
mega4809
</ReferenceConditionId>
<RteComponents
xmlns:d4p1=
"http://schemas.microsoft.com/2003/10/Serialization/Arrays"
>
<RteComponents
xmlns:d4p1=
"http://schemas.microsoft.com/2003/10/Serialization/Arrays"
>
<d4p1:string></d4p1:string>
<d4p1:string></d4p1:string>
</RteComponents>
</RteComponents>
...
...
Session1/Task1/Task1.cproj
View file @
9788a10e
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<ProjectVersion>
7.0
</ProjectVersion>
<ProjectVersion>
7.0
</ProjectVersion>
<ToolchainName>
com.Atmel.AVRGCC8.C
</ToolchainName>
<ToolchainName>
com.Atmel.AVRGCC8.C
</ToolchainName>
<ProjectGuid>
dce6c7e3-ee26-4d79-826b-08594b9ad897
</ProjectGuid>
<ProjectGuid>
dce6c7e3-ee26-4d79-826b-08594b9ad897
</ProjectGuid>
<avrdevice>
AT
tiny817
</avrdevice>
<avrdevice>
AT
mega4809
</avrdevice>
<avrdeviceseries>
none
</avrdeviceseries>
<avrdeviceseries>
none
</avrdeviceseries>
<OutputType>
Executable
</OutputType>
<OutputType>
Executable
</OutputType>
<Language>
C
</Language>
<Language>
C
</Language>
...
@@ -20,29 +20,71 @@
...
@@ -20,29 +20,71 @@
<OverrideVtor>
false
</OverrideVtor>
<OverrideVtor>
false
</OverrideVtor>
<CacheFlash>
true
</CacheFlash>
<CacheFlash>
true
</CacheFlash>
<ProgFlashFromRam>
true
</ProgFlashFromRam>
<ProgFlashFromRam>
true
</ProgFlashFromRam>
<RamSnippetAddress
/
>
<RamSnippetAddress
>
0x20000000
</RamSnippetAddress
>
<UncachedRange
/>
<UncachedRange
/>
<preserveEEPROM>
true
</preserveEEPROM>
<preserveEEPROM>
true
</preserveEEPROM>
<OverrideVtorValue
/
>
<OverrideVtorValue
>
exception_table
</OverrideVtorValue
>
<BootSegment>
2
</BootSegment>
<BootSegment>
2
</BootSegment>
<eraseonlaunchrule>
0
</eraseonlaunchrule>
<eraseonlaunchrule>
0
</eraseonlaunchrule>
<AsfFrameworkConfig>
<AsfFrameworkConfig>
<framework-data
xmlns=
""
>
<framework-data>
<options
/>
<options
/>
<configurations
/>
<configurations
/>
<files
/>
<files
/>
<documentation
help=
""
/>
<documentation
help=
""
/>
<offline-documentation
help=
""
/>
<offline-documentation
help=
""
/>
<dependencies>
<dependencies>
<content-extension
eid=
"atmel.asf"
uuidref=
"Atmel.ASF"
version=
"3.3
2.0
"
/>
<content-extension
eid=
"atmel.asf"
uuidref=
"Atmel.ASF"
version=
"3.3
4.1
"
/>
</dependencies>
</dependencies>
</framework-data>
</framework-data>
</AsfFrameworkConfig>
</AsfFrameworkConfig>
<ResetRule>
0
</ResetRule>
<EraseKey
/>
<avrtool>
com.atmel.avrdbg.tool.nedbg
</avrtool>
<avrtoolserialnumber>
ATML3094051800000431
</avrtoolserialnumber>
<avrdeviceexpectedsignature>
0x1E9651
</avrdeviceexpectedsignature>
<custom>
<ToolOptions>
<InterfaceProperties>
</InterfaceProperties>
<InterfaceName>
</InterfaceName>
</ToolOptions>
<ToolType>
custom
</ToolType>
<ToolNumber>
</ToolNumber>
<ToolName>
Custom Programming Tool
</ToolName>
</custom>
<avrtoolinterface>
UPDI
</avrtoolinterface>
<com_atmel_avrdbg_tool_simulator>
<ToolOptions
xmlns=
""
>
<InterfaceProperties>
</InterfaceProperties>
<InterfaceName>
</InterfaceName>
</ToolOptions>
<ToolType
xmlns=
""
>
com.atmel.avrdbg.tool.simulator
</ToolType>
<ToolNumber
xmlns=
""
>
</ToolNumber>
<ToolName
xmlns=
""
>
Simulator
</ToolName>
</com_atmel_avrdbg_tool_simulator>
<com_atmel_avrdbg_tool_nedbg>
<ToolOptions>
<InterfaceProperties>
<UpdiClock>
750000
</UpdiClock>
</InterfaceProperties>
<InterfaceName>
UPDI
</InterfaceName>
</ToolOptions>
<ToolType>
com.atmel.avrdbg.tool.nedbg
</ToolType>
<ToolNumber>
ATML3094051800000431
</ToolNumber>
<ToolName>
nEDBG
</ToolName>
</com_atmel_avrdbg_tool_nedbg>
<avrtoolinterfaceclock>
750000
</avrtoolinterfaceclock>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup
Condition=
" '$(Configuration)' == 'Release' "
>
<PropertyGroup
Condition=
" '$(Configuration)' == 'Release' "
>
<ToolchainSettings>
<ToolchainSettings>
<AvrGcc>
<AvrGcc>
<avrgcc.common.Device>
-mmcu=at
tiny817
-B "%24(PackRepoDir)\atmel\AT
tiny
_DFP\1.
1.102
\gcc\dev\at
tiny817
"
</avrgcc.common.Device>
<avrgcc.common.Device>
-mmcu=at
mega4809
-B "%24(PackRepoDir)\atmel\AT
mega
_DFP\1.
2.209
\gcc\dev\at
mega4809
"
</avrgcc.common.Device>
<avrgcc.common.outputfiles.hex>
True
</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.hex>
True
</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>
True
</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.lss>
True
</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>
True
</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.eep>
True
</avrgcc.common.outputfiles.eep>
...
@@ -57,7 +99,7 @@
...
@@ -57,7 +99,7 @@
</avrgcc.compiler.symbols.DefSymbols>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<ListValues>
<Value>
%24(PackRepoDir)\atmel\AT
tiny
_DFP\1.
1.102
\include
</Value>
<Value>
%24(PackRepoDir)\atmel\AT
mega
_DFP\1.
2.209
\include
</Value>
</ListValues>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>
Optimize for size (-Os)
</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.level>
Optimize for size (-Os)
</avrgcc.compiler.optimization.level>
...
@@ -71,7 +113,7 @@
...
@@ -71,7 +113,7 @@
</avrgcc.linker.libraries.Libraries>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.general.IncludePaths>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<ListValues>
<Value>
%24(PackRepoDir)\atmel\AT
tiny
_DFP\1.
1.102
\include
</Value>
<Value>
%24(PackRepoDir)\atmel\AT
mega
_DFP\1.
2.209
\include
</Value>
</ListValues>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
</avrgcc.assembler.general.IncludePaths>
</AvrGcc>
</AvrGcc>
...
@@ -80,7 +122,7 @@
...
@@ -80,7 +122,7 @@
<PropertyGroup
Condition=
" '$(Configuration)' == 'Debug' "
>
<PropertyGroup
Condition=
" '$(Configuration)' == 'Debug' "
>
<ToolchainSettings>
<ToolchainSettings>
<AvrGcc>
<AvrGcc>
<avrgcc.common.Device>
-mmcu=at
tiny817
-B "%24(PackRepoDir)\atmel\AT
tiny
_DFP\1.
1.102
\gcc\dev\at
tiny817
"
</avrgcc.common.Device>
<avrgcc.common.Device>
-mmcu=at
mega4809
-B "%24(PackRepoDir)\atmel\AT
mega
_DFP\1.
2.209
\gcc\dev\at
mega4809
"
</avrgcc.common.Device>
<avrgcc.common.outputfiles.hex>
True
</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.hex>
True
</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>
True
</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.lss>
True
</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>
True
</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.eep>
True
</avrgcc.common.outputfiles.eep>
...
@@ -95,7 +137,7 @@
...
@@ -95,7 +137,7 @@
</avrgcc.compiler.symbols.DefSymbols>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<ListValues>
<Value>
%24(PackRepoDir)\atmel\AT
tiny
_DFP\1.
1.102
\include
</Value>
<Value>
%24(PackRepoDir)\atmel\AT
mega
_DFP\1.
2.209
\include
</Value>
</ListValues>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>
Optimize (-O1)
</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.level>
Optimize (-O1)
</avrgcc.compiler.optimization.level>
...
@@ -110,7 +152,7 @@
...
@@ -110,7 +152,7 @@
</avrgcc.linker.libraries.Libraries>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.general.IncludePaths>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<ListValues>
<Value>
%24(PackRepoDir)\atmel\AT
tiny
_DFP\1.
1.102
\include
</Value>
<Value>
%24(PackRepoDir)\atmel\AT
mega
_DFP\1.
2.209
\include
</Value>
</ListValues>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
</avrgcc.assembler.general.IncludePaths>
<avrgcc.assembler.debugging.DebugLevel>
Default (-Wa,-g)
</avrgcc.assembler.debugging.DebugLevel>
<avrgcc.assembler.debugging.DebugLevel>
Default (-Wa,-g)
</avrgcc.assembler.debugging.DebugLevel>
...
...
Session1/Task1/main.c
View file @
9788a10e
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
* F_CPU must be defined before including headers.
* F_CPU must be defined before including headers.
*/
*/
#define F_CPU 3333333UL //The ATtiny
817
operates at 20MHz with a default scaling factor of 6: 20/6 = 3.333333MHz
#define F_CPU 3333333UL //The ATtiny
4809
operates at 20MHz with a default scaling factor of 6: 20/6 = 3.333333MHz
/**
/**
* System headers bellow
* System headers bellow
...
@@ -25,11 +25,15 @@
...
@@ -25,11 +25,15 @@