Additions from 18/05/2021

This commit is contained in:
Yohan Boujon 2021-03-20 19:25:09 +01:00
commit 2c0e04a7d9
15 changed files with 790 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
.vs/**
**/Debug

31
README.md Normal file
View file

@ -0,0 +1,31 @@
Lancez le fichier 'transcoder\transcodeur.atsln'
Tout d'abord connectez le STK500 au port COM3.
Ensuite branchez le port de sortie au COM1.
Ouvez PuTTY et mettez les paramètres suivants :
Session
-Serial Port
-COM1
Connection\SSH\Serial
-Port de connection COM1
-9600 Bauds
-8 Bit de Data
-1 Bit de Stop
-Pas de parité
-Pas de flow control
Terminal
-Echo Always ON
Ensuite branchez le RXD et le TXD au Port PD0 et PD1 respectivement.
Branchez le PORTA et le PORTC au LCD (normalement les fils sont tous droits s'ils sont bien mis).
Branchez PD2, PD3 et PB2 au SW0, SW1 et SW2 respectivement.
Vous aurez donc normalement :
-L'arrêt sur SW0
-Les 4 vitesses sur SW1
-Les 3 fréquences sur SW2
Enfin, branchez PB3 soit à un oscilloscope soit à un haut-parleur pour entendre/visualiser le transcodeur morse.
Vous n'avez plus qu'à programmer sur le STK500 le programme, et à mettre le texte que vous voulez sur PuTTY.

22
transcodeur.atsln Normal file
View file

@ -0,0 +1,22 @@

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}") = "transcodeur", "transcodeur\transcodeur.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

52
transcodeur/lcd.c Normal file
View file

@ -0,0 +1,52 @@
/*
* lcd.c
*
* Created: 17/05/2021 12:10:24
* Author: yboujon1
*/
#include "main.h"
#include "lcd.h"
void LCD_Init (void)
{
DDRC = 0xFF; // Le port de controle en sortie
DDRA = 0xFF; // le port des donnees en sortie
PORTC &= ~(1<<E); // E=0 Enable desactive
_delay_ms(50); //on attends +30ms pour que Vdd soit a 4,5V
LCD_Command (FUNCTION_SET | TWO_LINE_MODE);
LCD_Command (DISPLAY_CTRL | DISPLAY_ON);
LCD_Command (CLEAR_DISPLAY);
LCD_Command (ENTRY_MODE_SET | INCREMENT_MODE);
}
void LCD_Command(unsigned char cmd)
{
PORTC &= ~(1<<RS); // RS=0 on active le mode commande
PORTC &= ~(1<<RW); // RW=0 write mode
PORTC |= (1<<E); // E=1 Enable autorise
PORTA= cmd; //on envoie la donnee
PORTC &= ~(1<<E); // E=0 Enable desactive
switch(cmd)
{
case 0x01:
_delay_ms(2);
break;
case 0x81:
_delay_ms(2);
break;
default:
_delay_us(50);
};
}
int LCD_putchar(char c, FILE *stream) /* LCD data write function */
{
_delay_ms(10);
PORTC |= (1<<PC2); // RS=1 on active le mode data
PORTC &= ~(1<<PC1); // RW=0 write mode
PORTC |= (1<<PC0); // E=1 Enable autorise
PORTA = c; //on envoie la donnee
PORTC &= ~(1<<PC0); //on desactive l'enable
return 0;
}

35
transcodeur/lcd.h Normal file
View file

@ -0,0 +1,35 @@
/*
* lcd.h
*
* Created: 17/05/2021 12:11:26
* Author: yboujon1
*/
#include "main.h"
#define RS PC2
#define RW PC1
#define E PC0
#define FUNCTION_SET 0x30
#define TWO_LINE_MODE 0x08
#define DOTS_MODE 0x04
#define DISPLAY_CTRL 0x08
#define DISPLAY_ON 0x04
#define CURSOR_ON 0x02
#define BLINK_ON 0x01
#define CLEAR_DISPLAY 0x01
#define ENTRY_MODE_SET 0x04
#define INCREMENT_MODE 0x02
#define ENTIRE_SHIFT_ON 0x01
#define FIRST_LINE 0x80
#define SECOND_LINE 0xC0
void LCD_Init (void);
void LCD_Command(unsigned char cmd);
int LCD_putchar(char c, FILE *stream);
void LCD_placing(char c);

31
transcodeur/main.c Normal file
View file

@ -0,0 +1,31 @@
/*
* transcodeur.c
*
* Created: 27/04/2021 14:01:46
* Author : yboujon1
*/
#include "main.h"
#include "lcd.h"
#include "timerinterrupt.h"
#include "saisieuart.h"
#include "morse.h"
FILE std_out_lcd= FDEV_SETUP_STREAM(LCD_putchar, NULL,_FDEV_SETUP_WRITE);
int main(void)
{
init_interruption();
uart_init(UBRR_THEO);
LCD_Init();
int taille=0;
char tab[MAX];
stdout=&std_out_lcd;
DDRB|=(1<<PB3);
while(1){
saisie(tab,&taille);
LCD_Command (CLEAR_DISPLAY);
printf("%s",tab);
maj2min_convert(tab,taille);
latin2morse(tab,taille);
};
}

16
transcodeur/main.h Normal file
View file

@ -0,0 +1,16 @@
/*
* main.h
*
* Created: 17/05/2021 12:14:20
* Author: yboujon1
*/
#define F_CPU 3686400
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <inttypes.h>

177
transcodeur/morse.c Normal file
View file

@ -0,0 +1,177 @@
/*
* morse.c
*
* Created: 18/05/2021 15:47:14
* Author: yboujon1
*/
#include "main.h"
#include "morse.h"
unsigned char morse_library[LETTRES][7]= { {'a',POINT,TRAIT,'\0'},
{'b',TRAIT,POINT,POINT,POINT,'\0'},
{'c',TRAIT,POINT,TRAIT,POINT,'\0'},
{'d',TRAIT,POINT,POINT,'\0'},
{'e',POINT,'\0'},
{'f',POINT,POINT,TRAIT,POINT,'\0'},
{'g',TRAIT,TRAIT,POINT,'\0'},
{'h',POINT,POINT,POINT,POINT,'\0'},
{'i',POINT,POINT,'\0'},
{'j',POINT,TRAIT,TRAIT,TRAIT,'\0'},
{'k',TRAIT,POINT,TRAIT,'\0'},
{'l',POINT,TRAIT,POINT,POINT,'\0'},
{'m',TRAIT,TRAIT,'\0'},
{'n',TRAIT,POINT,'\0'},
{'o',TRAIT,TRAIT,TRAIT,'\0'},
{'p',POINT,TRAIT,TRAIT,POINT,'\0'},
{'q',TRAIT,TRAIT,POINT,TRAIT,'\0'},
{'r',POINT,TRAIT,POINT,'\0'},
{'s',POINT,POINT,POINT,'\0'},
{'t',TRAIT,'\0'},
{'u',POINT,POINT,TRAIT,'\0'},
{'v',POINT,POINT,POINT,TRAIT,'\0'},
{'w',POINT,TRAIT,TRAIT,'\0'},
{'x',TRAIT,POINT,POINT,TRAIT,'\0'},
{'y',TRAIT,POINT,TRAIT,TRAIT,'\0'},
{'z',TRAIT,TRAIT,POINT,POINT,'\0'},
{'0',TRAIT,TRAIT,TRAIT,TRAIT,TRAIT,'\0'},
{'1',POINT,TRAIT,TRAIT,TRAIT,TRAIT,'\0'},
{'2',POINT,POINT,TRAIT,TRAIT,TRAIT,'\0'},
{'3',POINT,POINT,POINT,TRAIT,TRAIT,'\0'},
{'4',POINT,POINT,POINT,POINT,TRAIT,'\0'},
{'5',POINT,POINT,POINT,POINT,POINT,'\0'},
{'6',TRAIT,POINT,POINT,POINT,POINT,'\0'},
{'7',TRAIT,TRAIT,POINT,POINT,POINT,'\0'},
{'8',TRAIT,TRAIT,TRAIT,POINT,POINT,'\0'},
{'9',TRAIT,TRAIT,TRAIT,TRAIT,POINT,'\0'}
};
void envoyer_signe_morse(unsigned char signe_morse)
{
switch(signe_morse){
case POINT:
start_timer0();
start_timer1(ONEMS);
wait_ocf1a_timer1();
stop_timer0();
wait_ocf1a_timer1();
break;
case TRAIT:
start_timer0();
start_timer1(3*ONEMS);
wait_ocf1a_timer1();
stop_timer0();
start_timer1(ONEMS);
wait_ocf1a_timer1();
break;
case INTERLETTRE:
start_timer1(2*ONEMS);
wait_ocf1a_timer1();
break;
case INTERMOT:
start_timer1(10*ONEMS);
wait_ocf1a_timer1();
break;
case FIN:
resume_timer1();
stop_timer1();
break;
default:
break;
};
}
void maj2min_convert(char *tab, int n)
{
int i;
for(i=0; i<=n; i++)
{
if(tab[i]>=65 && tab[i]<=90) //si c'est une majuscule
{
tab[i]=tab[i]+32; //la met en minuscule
}
else
{
tab[i]=tab[i]; //sinon rien
};
};
}
void latin2morse(char *tab, int n)
{
int i=0; //varie la chaine de caractere
int j=0; //varie la librarie
do
{
if(tab[i]==morse_library[j][0]) //verifie si le caractere correspond ? la librarie
{
library_checker(tab,&i,&j); //traduit dans la librairie et renvoie les deux variables pour continuer
}
else //si ce n'est pas dans la librarie
{
simple_terms(tab,&i,&j); //traduit directement les termes plus simples
};
}
while(i<n); //tant qu'on arrive ? la fin du tableau
}
void library_checker(char *tab,int* i,int* j)
{
morselibrary_output(*j); //traduit en morse
*j=0; //on revient au d?but de la librairie
lcd_char(tab,i);
*i=*i+1; //on avance dans la chaine
if(tab[*i]!=32 && tab[*i]!='\0') //s'il n'y a pas d'espace ou de fin de mot apr?s, INTERLETTRE
{
envoyer_signe_morse(INTERLETTRE);
};
}
void simple_terms(char *tab,int* i,int* j)
{
switch(tab[*i]) //en fonction du caractere
{
case 32: //si c'est un espace INTERMOT
envoyer_signe_morse(INTERMOT);
*j=0; //on revient au d?but de la librairie
lcd_char(tab,i);
*i=*i+1; //on avance dans la chaine
break;
case '\0':
envoyer_signe_morse(FIN); //si c'est la fin de la chaine, FIN
*j=0; //on revient au d?but de la librairie
*i=*i+1; //on avance dans la chaine
break;
default: //dans d'autres cas continuer l'analyse de la chaine
*j=*j+1; //on avance dans la tableau
};
}
void morselibrary_output(int id)
{
int y=1; //on commence a la 2eme colonne
do
{
if(etat==0){
envoyer_signe_morse(morse_library[id][y]); //fonction qui envoie un trait ou un point en fonction de la librarie
y++;
}
else{
//nothing
};
}
while(morse_library[id][y]!='\0'); //jusqu'a la fin de la traduction dans la librairie
}
void lcd_char(char *tab,int* i)
{
switch(*i)
{
case 0:
LCD_Command(SECOND_LINE);
printf("%c",tab[*i]);
break;
default:
printf("%c",tab[*i]);
};
}

28
transcodeur/morse.h Normal file
View file

@ -0,0 +1,28 @@
/*
* morse.h
*
* Created: 18/05/2021 15:47:24
* Author: yboujon1
*/
#include "main.h"
#include "timerinterrupt.h"
#include "lcd.h"
#define POINT 1
#define TRAIT 3
#define INTERLETTRE 30
#define INTERMOT 70
#define FIN 0
#define LETTRES 36
void envoyer_signe_morse(unsigned char signe_morse);
void maj2min_convert(char *tab, int n); //elle traduit des majuscules en minuscules
void latin2morse(char *tab, int n); //elle cherche les correspondances par rapport a la librairie ou non
void morselibrary_output(int id); //elle traduit en morse par rapport a la librairie
void envoie_morse(char morse); //elle envoie le caractere en morse
void library_checker(char *tab,int* i,int* j); //traduit dans la librairie et ajoute un intermot si possible
void simple_terms(char *tab,int* i,int* j); //traduit les espaces et les fins de message
void lcd_char(char *tab,int* i);
unsigned char morse_library[LETTRES][7];

41
transcodeur/saisieuart.c Normal file
View file

@ -0,0 +1,41 @@
/*
* saisieuart.c
*
* Created: 18/05/2021 15:40:37
* Author: yboujon1
*/
#include "saisieuart.h"
void uart_init(unsigned int ubrr)
{
DDRD|=(1<<PD1);
UBRRL=ubrr;
UCSRB|=(1<<RXEN)|(1<<TXEN);
UCSRC|=(1<<URSEL)|(1<<UPM1)|(3<<UCSZ0); //mode synchrone, parité paire, mode 8 bit
}
char uart_getchar(void)
{
do{
//nothing
}while ((UCSRA & (1<<RXC))==0);
return UDR;
}
void saisie(char tab[], int *n)
{
int i=0;
do
{
tab[i]=uart_getchar();
i++;
}
while((tab[i-1]!=13) && (i<MAX));
tab[i-1] = '\0';
if (!(i<MAX))
{
fflush(stdin);
}
*n=strlen(tab)+1;
}

14
transcodeur/saisieuart.h Normal file
View file

@ -0,0 +1,14 @@
/*
* saisieuart.h
*
* Created: 18/05/2021 15:40:59
* Author: yboujon1
*/
#include "main.h"
#define UBRR_THEO 23
#define MAX 17
void uart_init(unsigned int ubrr);
char uart_getchar(void);
void saisie(char *tab, int* n); //saisie de la chaine de char

View file

@ -0,0 +1,53 @@
/*
* timerinterrupt.c
*
* Created: 17/05/2021 12:58:50
* Author: yboujon1
*/
#include "main.h"
#include "timerinterrupt.h"
volatile unsigned char etat = 0;
void start_timer0(void){
DDRB |= (1<<PB3);
TCCR0 |= (3<<CS00)|(1<<WGM01)|(1<<COM00);
OCR0 = 65;
}
void stop_timer0(void){
TCCR0 &= ~(3<<CS00);
}
void init_interruption(void){
DDRD &= ~(1<<PD2); //on met int sur pd2
MCUCR |= (3<<ISC00);
GICR |= (1<<INT0);
sei();
}
ISR (INT0_vect){
etat = 1 - etat;
}
void start_timer1(unsigned short int ocr1a){
OCR1A=ocr1a;
TCCR1A |= (1<<COM1A0); //toggle
TCCR1B |= (1<<WGM12)|(1<<CS12); //compare + div 64
}
void stop_timer1(void){
TCCR1B &= ~(1<<CS12);
OCR1A=0; //règle le soucis du premier mot oublié
}
void resume_timer1(void){
TCCR1B |= (1<<CS12);
}
void wait_ocf1a_timer1(void){
do{
status=TIFR;
}while((status & (1<<OCF1A))==0);
TIFR = TIFR | (1<<OCF1A); //on remet OCF1A a 0
}

View file

@ -0,0 +1,20 @@
/*
* timerinterrupt.h
*
* Created: 17/05/2021 12:57:52
* Author: yboujon1
*/
#include "main.h"
#define ONEMS 1440
void start_timer0(void);
void stop_timer0(void);
void init_interruption(void);
ISR (INT0_vect);
unsigned char status;
void start_timer1(unsigned short int ocr1a);
void stop_timer1(void);
void resume_timer1(void);
void wait_ocf1a_timer1(void);
volatile unsigned char etat;

View file

@ -0,0 +1,86 @@
<?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.2.0</CVersion>
<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\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>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\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>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include\avr\iom16.h</AbsolutePath>
<Attribute></Attribute>
<Category>header</Category>
<Condition>C</Condition>
<FileContentHash>BDa+/Y5e630de26bwSjZpg==</FileContentHash>
<FileVersion></FileVersion>
<Name>include/avr/iom16.h</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.c</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>ke+693fxy85p6GOdRcSK5g==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.c</Name>
<SelectString>Main file (.c)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.cpp</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>YXFphlh0CtZJU+ebktABgQ==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.cpp</Name>
<SelectString>Main file (.cpp)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega16</AbsolutePath>
<Attribute></Attribute>
<Category>libraryPrefix</Category>
<Condition>GCC</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>gcc/dev/atmega16</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
</Files>
<PackName>ATmega_DFP</PackName>
<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/Atmel.ATmega_DFP.pdsc</PackPath>
<PackVersion>1.2.132</PackVersion>
<PresentInProject>true</PresentInProject>
<ReferenceConditionId>ATmega16</ReferenceConditionId>
<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string></d4p1:string>
</RteComponents>
<Status>Resolved</Status>
<VersionMode>Fixed</VersionMode>
<IsComponentInAtProject>true</IsComponentInAtProject>
</ProjectComponent>
</ProjectComponents>
</Store>

View file

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>7.0</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>dce6c7e3-ee26-4d79-826b-08594b9ad897</ProjectGuid>
<avrdevice>ATmega16</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>transcodeur</AssemblyName>
<Name>transcodeur</Name>
<RootNamespace>transcodeur</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<CacheFlash>true</CacheFlash>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress>0x20000000</RamSnippetAddress>
<UncachedRange />
<preserveEEPROM>true</preserveEEPROM>
<OverrideVtorValue>exception_table</OverrideVtorValue>
<BootSegment>2</BootSegment>
<eraseonlaunchrule>0</eraseonlaunchrule>
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.34.1" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
<avrtool>com.atmel.avrdbg.tool.stk500</avrtool>
<avrtoolserialnumber />
<avrdeviceexpectedsignature>0x1E9403</avrdeviceexpectedsignature>
<com_atmel_avrdbg_tool_stk500>
<ToolOptions>
<InterfaceProperties>
<IspClock>125000</IspClock>
</InterfaceProperties>
<InterfaceName>ISP</InterfaceName>
</ToolOptions>
<ToolType>com.atmel.avrdbg.tool.stk500</ToolType>
<ToolNumber>
</ToolNumber>
<ToolName>STK500</ToolName>
</com_atmel_avrdbg_tool_stk500>
<avrtoolinterface>ISP</avrtoolinterface>
<avrtoolinterfaceclock>125000</avrtoolinterfaceclock>
<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>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega16 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega16"</avrgcc.common.Device>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega16 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega16"</avrgcc.common.Device>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="lcd.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcd.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="main.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="main.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="morse.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="morse.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="saisieuart.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="saisieuart.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="timerinterrupt.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="timerinterrupt.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>