Compare commits
No commits in common. "master" and "5002c16c1df48ffe8e6fda2311e0dd9b0c4f6ce0" have entirely different histories.
master
...
5002c16c1d
11
ADC/main.c
11
ADC/main.c
|
@ -7,16 +7,13 @@ int main(void)
|
||||||
{
|
{
|
||||||
DDRL = 0xff;//port L direction: output //pins- 49:42
|
DDRL = 0xff;//port L direction: output //pins- 49:42
|
||||||
DDRC = 0xff;//port C direction: output //pins- 37:30
|
DDRC = 0xff;//port C direction: output //pins- 37:30
|
||||||
//DDRA = 0x00;//port A direction: input //pins- 22:29
|
DDRA = 0x00;//port A direction: input //pins- 22:29
|
||||||
ADCSRA = 0x87;// ADC enabled and prescaler=128
|
ADCSRA = 0x87;// ADC enabled and prescaler=128
|
||||||
ADMUX = 0x61;// Ref= Vcc// data is left-justified //ADC0 is source pin
|
ADMUX = 0xC0;// input at ADC0// data is right-justified
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
//ADIF=0 ifu wanna reset, otherwise you keep it as 1 so that conversion doesnt start again
|
ADCSRA |= (1<<ADSC); //to start conversion
|
||||||
//ADCSRA |= (1<<ADSC); //to start conversion, we set ADSC bit to 1
|
while(ADCSRA && (1<<ADIF)==0);// waiting for conversion to finish
|
||||||
ADCSRA |= 0x40; //ADSC=1
|
|
||||||
//while(ADCSRA && (1<<ADIF)==0);// waiting for conversion to finish
|
|
||||||
while(ADIF==0);
|
|
||||||
PORTL = ADCL;
|
PORTL = ADCL;
|
||||||
PORTC = ADCH;
|
PORTC = ADCH;
|
||||||
}
|
}
|
||||||
|
|
BIN
ADC/main.elf
BIN
ADC/main.elf
Binary file not shown.
10
ADC/main.hex
10
ADC/main.hex
|
@ -13,9 +13,9 @@
|
||||||
:1000C0000C947E000C947E000C947E000C947E00B8
|
:1000C0000C947E000C947E000C947E000C947E00B8
|
||||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||||
:1000F00000E00CBF0E9480000C9497000C9400005C
|
:1000F00000E00CBF0E9480000C949A000C94000059
|
||||||
:100100008FEF80930A0187B987E880937A0081E6B0
|
:100100008FEF80930A0187B911B887E880937A004E
|
||||||
:1001100080937C0080917A00806480937A00809143
|
:1001100080EC80937C0080917A00806480937A00E8
|
||||||
:10012000780080930B018091790088B9F3CFF8941F
|
:1001200080917A008091780080930B018091790012
|
||||||
:02013000FFCFFF
|
:0801300088B9F1CFF894FFCF6C
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
BIN
ADC/main.o
BIN
ADC/main.o
Binary file not shown.
|
@ -12,8 +12,8 @@ Bit 4= ADIF: ADC Interrupt Flag- This bit is set when an ADC conversion complete
|
||||||
Bit [2:0] = 111 = Prescaler-128
|
Bit [2:0] = 111 = Prescaler-128
|
||||||
|
|
||||||
ADMUX: ADC Multiplexer = 0xC0
|
ADMUX: ADC Multiplexer = 0xC0
|
||||||
Bit [7:6] = 01 = Vref= AVcc = 5V
|
Bit [7:6] = 11 = Vref= 2.56V
|
||||||
Bit 5 = 1 = Result(10-bits-wide) is left-justified
|
Bit 5 = 0 = Result(10-bits-wide) is right-justified
|
||||||
Bit [4:0] = 00000 = Input at ADC0
|
Bit [4:0] = 00000 = Input at ADC0
|
||||||
|
|
||||||
ADCL: ADC Data Register Lower= stores the lower 8 bits of result of conversion
|
ADCL: ADC Data Register Lower= stores the lower 8 bits of result of conversion
|
||||||
|
|
|
@ -10,7 +10,7 @@ int main(void)
|
||||||
//pin 37-port C0 ; C7- pin 30
|
//pin 37-port C0 ; C7- pin 30
|
||||||
DDRC = 0xff;//port C direction: output
|
DDRC = 0xff;//port C direction: output
|
||||||
DDRA = 0xff;//port A direction: output
|
DDRA = 0xff;//port A direction: output
|
||||||
DDRB = 0x00;//pin 10-13: Port B4 to B7 //direction: input; pin 53-50: Port B0 to B3
|
DDRB = 0x00;//pin 10-13: Port B4 to B7 //direction: input
|
||||||
//PINB = 0x00;//clearing PINB register
|
//PINB = 0x00;//clearing PINB register
|
||||||
//PORTA = PINB;
|
//PORTA = PINB;
|
||||||
//while(1);
|
//while(1);
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
//GPIO- Input Configuration
|
||||||
|
|
||||||
|
|
||||||
|
#include <avr/io.h>
|
||||||
|
#define F_CPU 16000000//16MHz
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
//pin 37-port C0 ; C7- pin 30
|
||||||
|
DDRC = 0xff;//port C direction: output
|
||||||
|
DDRA = 0xff;//port A direction: output
|
||||||
|
DDRB = 0x00;//pin 10-13: Port B4 to B7 //direction: input
|
||||||
|
//PINB = 0x00;//clearing PINB register
|
||||||
|
//PORTA = PINB;
|
||||||
|
//while(1);
|
||||||
|
|
||||||
|
//enabling pull-up resistors//use=?//default output when pull-up enabled=high
|
||||||
|
PORTB = 0xff;
|
||||||
|
//PORTC = 0xff;
|
||||||
|
//PORTB=0x00;//disabling pull-up resistors?//does it help or not?
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
PORTA = PINB;//PortA= pin 22-29
|
||||||
|
if(PINB==0xFF)
|
||||||
|
{
|
||||||
|
PORTC = 0x01;
|
||||||
|
_delay_ms(5);
|
||||||
|
PORTC = 0x00;
|
||||||
|
_delay_ms(5);
|
||||||
|
}//f=100Hz
|
||||||
|
else if(PINB==0x00)
|
||||||
|
{
|
||||||
|
PORTC = 0x01;
|
||||||
|
_delay_ms(10);
|
||||||
|
PORTC = 0x00;
|
||||||
|
_delay_ms(10);
|
||||||
|
}//f=50Hz
|
||||||
|
/*else if(PINB==0x10)
|
||||||
|
{
|
||||||
|
PORTC = 0x01;
|
||||||
|
_delay_ms(7);
|
||||||
|
PORTC = 0x00;
|
||||||
|
_delay_ms(7);
|
||||||
|
}//f=approx 75Hz
|
||||||
|
else if(PINB==0x20)
|
||||||
|
{
|
||||||
|
PORTC = 0x01;
|
||||||
|
_delay_ms(20);
|
||||||
|
PORTC = 0x00;
|
||||||
|
_delay_ms(20);
|
||||||
|
}//f=25Hz
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -13,10 +13,11 @@
|
||||||
:1000C0000C947E000C947E000C947E000C947E00B8
|
:1000C0000C947E000C947E000C947E000C947E00B8
|
||||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||||
:1000F00000E00CBF0E9480000C94A5000C9400004E
|
:1000F00000E00CBF0E9480000C94AA000C94000049
|
||||||
:100100008FEF84B987E880937A0080E480937C0045
|
:100100008FEF87B981B914B885B981E093B192B9FD
|
||||||
:1001100023E890E180917A00806480937A00809156
|
:1001100093B19F3F69F488B9EFE1FEE43197F1F7BD
|
||||||
:1001200078008093880080917900809389002093E3
|
:1001200000C0000018B8EFE1FEE43197F1F70FC00E
|
||||||
:100130008000909381003FEF40E782E031504040E3
|
:1001300093B19111EBCF88B9EFE3FCE93197F1F777
|
||||||
:0E0140008040E1F700C00000E5CFF894FFCF4B
|
:1001400000C0000018B8EFE3FCE93197F1F700C0F8
|
||||||
|
:080150000000DCCFF894FFCFA2
|
||||||
:00000001FF
|
:00000001FF
|
Binary file not shown.
|
@ -1,14 +0,0 @@
|
||||||
#include <avr/io.h>
|
|
||||||
#define F_CPU 16000000//16MHz
|
|
||||||
#include <util/delay.h>
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
DDRL &= 0xfe;//port L direction: input; pin 49
|
|
||||||
PORTL |= 0x01;//L01 PU resistor activated
|
|
||||||
DDRC |= 0x01;//pin 37: pin C7 //direction: output
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
PORTC = (PINL &= 0x01);
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,20 +0,0 @@
|
||||||
:100000000C9472000C947E000C947E000C947E0084
|
|
||||||
:100010000C947E000C947E000C947E000C947E0068
|
|
||||||
:100020000C947E000C947E000C947E000C947E0058
|
|
||||||
:100030000C947E000C947E000C947E000C947E0048
|
|
||||||
:100040000C947E000C947E000C947E000C947E0038
|
|
||||||
:100050000C947E000C947E000C947E000C947E0028
|
|
||||||
:100060000C947E000C947E000C947E000C947E0018
|
|
||||||
:100070000C947E000C947E000C947E000C947E0008
|
|
||||||
:100080000C947E000C947E000C947E000C947E00F8
|
|
||||||
:100090000C947E000C947E000C947E000C947E00E8
|
|
||||||
:1000A0000C947E000C947E000C947E000C947E00D8
|
|
||||||
:1000B0000C947E000C947E000C947E000C947E00C8
|
|
||||||
:1000C0000C947E000C947E000C947E000C947E00B8
|
|
||||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
|
||||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
|
||||||
:1000F00000E00CBF0E9480000C9492000C94000061
|
|
||||||
:1001000080910A018E7F80930A0180910B018160AA
|
|
||||||
:1001100080930B01389A80910901817080930901C5
|
|
||||||
:0801200088B9F9CFF894FFCF74
|
|
||||||
:00000001FF
|
|
Binary file not shown.
|
@ -4,19 +4,18 @@
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
DDRA=0xFF;//Port A Output
|
DDRA=0xFF;//Port A Output
|
||||||
DDRC=0xFF;//Port C Output
|
DDRB=0xFF;//Port B Output
|
||||||
PORTD=0xFF;//activate pull-up//ICP1 in pin PD4= grey 47
|
PORTD=0xFF;//activate pull-up
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
TCCR1A=0x00;//Normal mode
|
TCCR1A=0x00;//Normal mode
|
||||||
//TCCR1B=0x41;//rising edge, no pre-scaler, no noise canceller
|
TCCR1B=0x41;//rising edge, no pre-scaler, no noise canceller
|
||||||
TCCR1B=0x45;//rising edge, pre-scaler is max=1024, no noise canceller
|
|
||||||
//while(TIFR1 && (1<<ICF1)==0);//
|
//while(TIFR1 && (1<<ICF1)==0);//
|
||||||
//TIFR1=(1<<ICF1);//clear ICF1
|
//TIFR1=(1<<ICF1);//clear ICF1
|
||||||
while(TIFR1 && 0x20 == 0x00);//waiting for ICF1 Flag to be set
|
while(TIFR1 && 0x20 == 0x00);//waiting for ICF1 Flag to be set
|
||||||
//ICF1=0;//why not this command?
|
//ICF1=0;//why not this command?
|
||||||
TIFR1=(1<<ICF1);
|
TIFR1=(1<<ICF1);
|
||||||
PORTA=ICR1L;//check output in pins 22-29(A7=29)
|
PORTA=ICR1L;//
|
||||||
PORTC=ICR1H;//check output in pins 37-30(C0=30)
|
PORTB=ICR1H;//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -14,7 +14,7 @@
|
||||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||||
:1000F00000E00CBF0E9480000C9493000C94000060
|
:1000F00000E00CBF0E9480000C9493000C94000060
|
||||||
:100100008FEF81B987B98BB925E490E21092800016
|
:100100008FEF81B984B98BB921E490E2109280001D
|
||||||
:100110002093810086B396BB8091860082B980913E
|
:100110002093810086B396BB8091860082B980913E
|
||||||
:0A012000870088B9F3CFF894FFCFF1
|
:0A012000870085B9F3CFF894FFCFF4
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
Binary file not shown.
|
@ -2,7 +2,7 @@ Registers involved:
|
||||||
|
|
||||||
GPIO:
|
GPIO:
|
||||||
DDRA: Data Direction Register for Port A= 0xFF for output
|
DDRA: Data Direction Register for Port A= 0xFF for output
|
||||||
DDRC: Data Direction Register for Port C= 0xFF for output
|
DDRB: Data Direction Register for Port B= 0xFF for output
|
||||||
PORTD: Port D Data Register= set as 0xFF to activate pull up registers
|
PORTD: Port D Data Register= set as 0xFF to activate pull up registers
|
||||||
|
|
||||||
Input Capture Unit(ICU):
|
Input Capture Unit(ICU):
|
||||||
|
|
|
@ -13,3 +13,4 @@ max current LED can tolerate:
|
||||||
Resistance offered within the board(if any):
|
Resistance offered within the board(if any):
|
||||||
|
|
||||||
|
|
||||||
|
Hi- change made
|
||||||
|
|
|
@ -6,17 +6,14 @@ int main(void)
|
||||||
{
|
{
|
||||||
DDRB = 0xFF;//Port B set as output
|
DDRB = 0xFF;//Port B set as output
|
||||||
|
|
||||||
OCR0A= 0x7F;//50 percent of 255=duty cycle//decimal=127
|
OCR0A= 0x7F;//50 percent of 255=duty cycle
|
||||||
TCCR0A = 0x83;
|
TCCR0A = 0x83;
|
||||||
//TCCR0B = 0x03;//prescaler = 64 for 1kHz
|
TCCR0B = 0x03;//prescaler = 64 for 1kHz
|
||||||
TCCR0B = 0x02;//prescaler = 8 for 8kHz
|
|
||||||
//output at OC0A=pin 13
|
//output at OC0A=pin 13
|
||||||
|
|
||||||
//OCR2A= 0x87;//duty cycle= 47 percent, value= 0.53*255=135
|
OCR2A= 0x87;//duty cycle= 47 percent, value= 0.53*255=135
|
||||||
OCR2A= 0x83;//duty cycle= 48 percent, value= 0.52*255=131
|
|
||||||
TCCR2A = 0xC3;//inverting PWM
|
TCCR2A = 0xC3;//inverting PWM
|
||||||
//TCCR2B = 0x04;//prescaler = 64 for 1 kHz
|
TCCR2B = 0x04;//prescaler = 64 for 1 kHz
|
||||||
TCCR2B = 0x02;//prescaler = 8 for 8kHz
|
|
||||||
//output at OC2A=pin 10
|
//output at OC2A=pin 10
|
||||||
|
|
||||||
while(1);
|
while(1);
|
||||||
|
|
Binary file not shown.
|
@ -13,8 +13,8 @@
|
||||||
:1000C0000C947E000C947E000C947E000C947E00B8
|
:1000C0000C947E000C947E000C947E000C947E00B8
|
||||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||||
:1000F00000E00CBF0E9480000C9490000C94000063
|
:1000F00000E00CBF0E9480000C9492000C94000061
|
||||||
:100100008FEF84B98FE787BD93E894BD82E085BD0A
|
:100100008FEF84B98FE787BD83E884BD83E085BD29
|
||||||
:100110009093B30093EC9093B0008093B100FFCF25
|
:1001100087E88093B30083EC8093B00084E0809301
|
||||||
:04012000F894FFCF81
|
:08012000B100FFCFF894FFCFFE
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
Binary file not shown.
|
@ -31,6 +31,4 @@ The most important nonlinearity is caused by the necessary
|
||||||
blanking time between top and bottom switch to avoid inverter
|
blanking time between top and bottom switch to avoid inverter
|
||||||
leg shoot-through of the DC bus circuit. The type of the switch
|
leg shoot-through of the DC bus circuit. The type of the switch
|
||||||
and pre-driver characteristics determine amount of the
|
and pre-driver characteristics determine amount of the
|
||||||
necessary blank time.
|
necessary blank time.
|
||||||
|
|
||||||
for a difference of 2 decimal numbers in binary, and frequency of 8kHz, we obtain a deadtime of 1.5 microseconds
|
|
|
@ -1,4 +1,4 @@
|
||||||
//triangular PWM
|
//sinusoidal PWM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +23,4 @@ int main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Problem with this code: The duty cycle here varies in triangular manner and isnt sinusoidal
|
|
|
@ -14,7 +14,7 @@ Bit [1:0]= WGM[1:0]- Waveform Generation Mode=11- for non-inverting fast PWM.
|
||||||
TCCR0B: Timer/Counter 0 Control Register B = 0x03
|
TCCR0B: Timer/Counter 0 Control Register B = 0x03
|
||||||
Bit [2:0] – CS0[2:0]-Clock Select = 011- for prescaler=64 in order to obtain frequency of 1kHz
|
Bit [2:0] – CS0[2:0]-Clock Select = 011- for prescaler=64 in order to obtain frequency of 1kHz
|
||||||
|
|
||||||
The PWM runs in a loop with duty-cycle varying(i.e. changing value of OCR0A) such that the mean value follows a linear pattern. This function maybe helpful in AC generators.
|
The PWM runs in a loop with duty-cycle varying(i.e. changing value of OCR0A) such that the mean value follows a sinusoidal pattern. This function maybe helpful in AC generators.
|
||||||
|
|
||||||
inbuilt delay function used to induce a delay of 0.5 seconds before the duty cycle of the PWM changes
|
inbuilt delay function used to induce a delay of 0.5 seconds before the duty cycle of the PWM changes
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
//sinusoidal PWM using ADC(16-bit PWM to be used)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define F_CPU 16000000//16Mhz
|
|
||||||
#define MS_DELAY 1000
|
|
||||||
#include <avr/io.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
DDRB = 0xFF;//Port B set as output
|
|
||||||
//DDRL = 0xff;//port L direction: output //pins- 49:42
|
|
||||||
//DDRC = 0xff;//port C direction: output //pins- 37:30
|
|
||||||
ADCSRA = 0x87;// ADC enabled and prescaler=128
|
|
||||||
ADMUX = 0x40;// Ref= Vcc// data is right-justified //ADC0 is source pin
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
//ADIF=0 ifu wanna reset, otherwise you keep it as 1 so that conversion doesnt start again
|
|
||||||
//ADCSRA |= (1<<ADSC); //to start conversion, we set ADSC bit to 1
|
|
||||||
ADCSRA |= 0x40; //ADSC=1
|
|
||||||
//while(ADCSRA && (1<<ADIF)==0);// waiting for conversion to finish
|
|
||||||
while(ADIF==0);
|
|
||||||
OCR1AL = ADCL;
|
|
||||||
OCR1AH = ADCH;
|
|
||||||
TCCR1A = 0x83;//non-inverting pwm; mode-7: 10-bit Fast PWM
|
|
||||||
TCCR1B = 0x10;//prescaler = 8 for frequency to be approx 2kHz
|
|
||||||
//output of pwm is at pin 13(OC0)
|
|
||||||
_delay_ms(50);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,106 +0,0 @@
|
||||||
# simple AVR Makefile
|
|
||||||
#
|
|
||||||
# written by michael cousins (http://github.com/mcous)
|
|
||||||
# released to the public domain
|
|
||||||
|
|
||||||
# Makefile
|
|
||||||
#
|
|
||||||
# targets:
|
|
||||||
# all: compiles the source code
|
|
||||||
# test: tests the isp connection to the mcu
|
|
||||||
# flash: writes compiled hex file to the mcu's flash memory
|
|
||||||
# fuse: writes the fuse bytes to the MCU
|
|
||||||
# disasm: disassembles the code for debugging
|
|
||||||
# clean: removes all .hex, .elf, and .o files in the source code and library directories
|
|
||||||
|
|
||||||
# parameters (change this stuff accordingly)
|
|
||||||
# project name
|
|
||||||
PRJ = main
|
|
||||||
# avr mcu
|
|
||||||
MCU = atmega2560
|
|
||||||
# mcu clock frequency
|
|
||||||
CLK = 16000000
|
|
||||||
# avr programmer (and port if necessary)
|
|
||||||
# e.g. PRG = usbtiny -or- PRG = arduino -P /dev/tty.usbmodem411
|
|
||||||
PRG = wiring -P /dev/ttyACM0
|
|
||||||
# fuse values for avr: low, high, and extended
|
|
||||||
# these values are from an Arduino Uno (ATMega328P)
|
|
||||||
# see http://www.engbedded.com/fusecalc/ for other MCUs and options
|
|
||||||
LFU = 0xFF
|
|
||||||
HFU = 0xD0
|
|
||||||
EFU = 0xFD
|
|
||||||
# program source files (not including external libraries)
|
|
||||||
SRC = $(PRJ).c
|
|
||||||
# where to look for external libraries (consisting of .c/.cpp files and .h files)
|
|
||||||
# e.g. EXT = ../../EyeToSee ../../YouSART
|
|
||||||
EXT =
|
|
||||||
|
|
||||||
|
|
||||||
#################################################################################################
|
|
||||||
# \/ stuff nobody needs to worry about until such time that worrying about it is appropriate \/ #
|
|
||||||
#################################################################################################
|
|
||||||
|
|
||||||
# include path
|
|
||||||
INCLUDE := $(foreach dir, $(EXT), -I$(dir))
|
|
||||||
# c flags
|
|
||||||
CFLAGS = -Wall -Os -DF_CPU=$(CLK) -mmcu=$(MCU) $(INCLUDE)
|
|
||||||
# any aditional flags for c++
|
|
||||||
CPPFLAGS =
|
|
||||||
|
|
||||||
# executables
|
|
||||||
AVRDUDE = avrdude -C /usr/share/arduino/hardware/tools/avrdude.conf -c $(PRG) -p $(MCU) -b 115200 -D
|
|
||||||
OBJCOPY = avr-objcopy
|
|
||||||
OBJDUMP = avr-objdump
|
|
||||||
SIZE = avr-size --format=avr --mcu=$(MCU)
|
|
||||||
CC = avr-gcc
|
|
||||||
|
|
||||||
# generate list of objects
|
|
||||||
CFILES = $(filter %.c, $(SRC))
|
|
||||||
EXTC := $(foreach dir, $(EXT), $(wildcard $(dir)/*.c))
|
|
||||||
CPPFILES = $(filter %.cpp, $(SRC))
|
|
||||||
EXTCPP := $(foreach dir, $(EXT), $(wildcard $(dir)/*.cpp))
|
|
||||||
OBJ = $(CFILES:.c=.o) $(EXTC:.c=.o) $(CPPFILES:.cpp=.o) $(EXTCPP:.cpp=.o)
|
|
||||||
|
|
||||||
# user targets
|
|
||||||
# compile all files
|
|
||||||
all: $(PRJ).hex
|
|
||||||
|
|
||||||
# test programmer connectivity
|
|
||||||
test:
|
|
||||||
$(AVRDUDE) -v
|
|
||||||
|
|
||||||
# flash program to mcu
|
|
||||||
flash: all
|
|
||||||
$(AVRDUDE) -U flash:w:$(PRJ).hex:i
|
|
||||||
|
|
||||||
# write fuses to mcu
|
|
||||||
fuse:
|
|
||||||
$(AVRDUDE) -U lfuse:w:$(LFU):m -U hfuse:w:$(HFU):m -U efuse:w:$(EFU):m
|
|
||||||
|
|
||||||
# generate disassembly files for debugging
|
|
||||||
disasm: $(PRJ).elf
|
|
||||||
$(OBJDUMP) -d $(PRJ).elf
|
|
||||||
|
|
||||||
# remove compiled files
|
|
||||||
clean:
|
|
||||||
rm -f *.hex *.elf *.o
|
|
||||||
$(foreach dir, $(EXT), rm -f $(dir)/*.o;)
|
|
||||||
|
|
||||||
# other targets
|
|
||||||
# objects from c files
|
|
||||||
.c.o:
|
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
# objects from c++ files
|
|
||||||
.cpp.o:
|
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
# elf file
|
|
||||||
$(PRJ).elf: $(OBJ)
|
|
||||||
$(CC) $(CFLAGS) -o $(PRJ).elf $(OBJ)
|
|
||||||
|
|
||||||
# hex file
|
|
||||||
$(PRJ).hex: $(PRJ).elf
|
|
||||||
rm -f $(PRJ).hex
|
|
||||||
$(OBJCOPY) -j .text -j .data -O ihex $(PRJ).elf $(PRJ).hex
|
|
||||||
$(SIZE) $(PRJ).elf
|
|
|
@ -1,387 +0,0 @@
|
||||||
#define F_CPU 16000000//16Mhz
|
|
||||||
#define MS_DELAY 1000
|
|
||||||
#include <avr/io.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
DDRB = 0xFF;//Port B set as output
|
|
||||||
//DDRB |= (1 <<3);//Port B(0:3) set as output
|
|
||||||
uint16_t testArray[360]={0x80,
|
|
||||||
0x82,
|
|
||||||
0x84,
|
|
||||||
0x86,
|
|
||||||
0x88,
|
|
||||||
0x8b,
|
|
||||||
0x8d,
|
|
||||||
0x8f,
|
|
||||||
0x91,
|
|
||||||
0x93,
|
|
||||||
0x96,
|
|
||||||
0x98,
|
|
||||||
0x9a,
|
|
||||||
0x9c,
|
|
||||||
0x9e,
|
|
||||||
0xa0,
|
|
||||||
0xa3,
|
|
||||||
0xa5,
|
|
||||||
0xa7,
|
|
||||||
0xa9,
|
|
||||||
0xab,
|
|
||||||
0xad,
|
|
||||||
0xaf,
|
|
||||||
0xb1,
|
|
||||||
0xb3,
|
|
||||||
0xb5,
|
|
||||||
0xb7,
|
|
||||||
0xb9,
|
|
||||||
0xbb,
|
|
||||||
0xbd,
|
|
||||||
0xbf,
|
|
||||||
0xc1,
|
|
||||||
0xc3,
|
|
||||||
0xc5,
|
|
||||||
0xc7,
|
|
||||||
0xc9,
|
|
||||||
0xca,
|
|
||||||
0xcc,
|
|
||||||
0xce,
|
|
||||||
0xd0,
|
|
||||||
0xd1,
|
|
||||||
0xd3,
|
|
||||||
0xd5,
|
|
||||||
0xd6,
|
|
||||||
0xd8,
|
|
||||||
0xda,
|
|
||||||
0xdb,
|
|
||||||
0xdd,
|
|
||||||
0xde,
|
|
||||||
0xe0,
|
|
||||||
0xe1,
|
|
||||||
0xe3,
|
|
||||||
0xe4,
|
|
||||||
0xe5,
|
|
||||||
0xe7,
|
|
||||||
0xe8,
|
|
||||||
0xe9,
|
|
||||||
0xea,
|
|
||||||
0xec,
|
|
||||||
0xed,
|
|
||||||
0xee,
|
|
||||||
0xef,
|
|
||||||
0xf0,
|
|
||||||
0xf1,
|
|
||||||
0xf2,
|
|
||||||
0xf3,
|
|
||||||
0xf4,
|
|
||||||
0xf5,
|
|
||||||
0xf6,
|
|
||||||
0xf7,
|
|
||||||
0xf7,
|
|
||||||
0xf8,
|
|
||||||
0xf9,
|
|
||||||
0xf9,
|
|
||||||
0xfa,
|
|
||||||
0xfb,
|
|
||||||
0xfb,
|
|
||||||
0xfc,
|
|
||||||
0xfc,
|
|
||||||
0xfd,
|
|
||||||
0xfd,
|
|
||||||
0xfd,
|
|
||||||
0xfe,
|
|
||||||
0xfe,
|
|
||||||
0xfe,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xff,
|
|
||||||
0xfe,
|
|
||||||
0xfe,
|
|
||||||
0xfe,
|
|
||||||
0xfd,
|
|
||||||
0xfd,
|
|
||||||
0xfd,
|
|
||||||
0xfc,
|
|
||||||
0xfc,
|
|
||||||
0xfb,
|
|
||||||
0xfb,
|
|
||||||
0xfa,
|
|
||||||
0xf9,
|
|
||||||
0xf9,
|
|
||||||
0xf8,
|
|
||||||
0xf7,
|
|
||||||
0xf7,
|
|
||||||
0xf6,
|
|
||||||
0xf5,
|
|
||||||
0xf4,
|
|
||||||
0xf3,
|
|
||||||
0xf2,
|
|
||||||
0xf1,
|
|
||||||
0xf0,
|
|
||||||
0xef,
|
|
||||||
0xee,
|
|
||||||
0xed,
|
|
||||||
0xec,
|
|
||||||
0xea,
|
|
||||||
0xe9,
|
|
||||||
0xe8,
|
|
||||||
0xe7,
|
|
||||||
0xe5,
|
|
||||||
0xe4,
|
|
||||||
0xe3,
|
|
||||||
0xe1,
|
|
||||||
0xe0,
|
|
||||||
0xde,
|
|
||||||
0xdd,
|
|
||||||
0xdb,
|
|
||||||
0xda,
|
|
||||||
0xd8,
|
|
||||||
0xd6,
|
|
||||||
0xd5,
|
|
||||||
0xd3,
|
|
||||||
0xd1,
|
|
||||||
0xd0,
|
|
||||||
0xce,
|
|
||||||
0xcc,
|
|
||||||
0xca,
|
|
||||||
0xc9,
|
|
||||||
0xc7,
|
|
||||||
0xc5,
|
|
||||||
0xc3,
|
|
||||||
0xc1,
|
|
||||||
0xbf,
|
|
||||||
0xbd,
|
|
||||||
0xbb,
|
|
||||||
0xb9,
|
|
||||||
0xb7,
|
|
||||||
0xb5,
|
|
||||||
0xb3,
|
|
||||||
0xb1,
|
|
||||||
0xaf,
|
|
||||||
0xad,
|
|
||||||
0xab,
|
|
||||||
0xa9,
|
|
||||||
0xa7,
|
|
||||||
0xa5,
|
|
||||||
0xa3,
|
|
||||||
0xa0,
|
|
||||||
0x9e,
|
|
||||||
0x9c,
|
|
||||||
0x9a,
|
|
||||||
0x98,
|
|
||||||
0x96,
|
|
||||||
0x93,
|
|
||||||
0x91,
|
|
||||||
0x8f,
|
|
||||||
0x8d,
|
|
||||||
0x8b,
|
|
||||||
0x88,
|
|
||||||
0x86,
|
|
||||||
0x84,
|
|
||||||
0x82,
|
|
||||||
0x80,
|
|
||||||
0x7d,
|
|
||||||
0x7b,
|
|
||||||
0x79,
|
|
||||||
0x77,
|
|
||||||
0x74,
|
|
||||||
0x72,
|
|
||||||
0x70,
|
|
||||||
0x6e,
|
|
||||||
0x6c,
|
|
||||||
0x69,
|
|
||||||
0x67,
|
|
||||||
0x65,
|
|
||||||
0x63,
|
|
||||||
0x61,
|
|
||||||
0x5f,
|
|
||||||
0x5c,
|
|
||||||
0x5a,
|
|
||||||
0x58,
|
|
||||||
0x56,
|
|
||||||
0x54,
|
|
||||||
0x52,
|
|
||||||
0x50,
|
|
||||||
0x4e,
|
|
||||||
0x4c,
|
|
||||||
0x4a,
|
|
||||||
0x48,
|
|
||||||
0x46,
|
|
||||||
0x44,
|
|
||||||
0x42,
|
|
||||||
0x40,
|
|
||||||
0x3e,
|
|
||||||
0x3c,
|
|
||||||
0x3a,
|
|
||||||
0x38,
|
|
||||||
0x36,
|
|
||||||
0x35,
|
|
||||||
0x33,
|
|
||||||
0x31,
|
|
||||||
0x2f,
|
|
||||||
0x2e,
|
|
||||||
0x2c,
|
|
||||||
0x2a,
|
|
||||||
0x29,
|
|
||||||
0x27,
|
|
||||||
0x25,
|
|
||||||
0x24,
|
|
||||||
0x22,
|
|
||||||
0x21,
|
|
||||||
0x1f,
|
|
||||||
0x1e,
|
|
||||||
0x1c,
|
|
||||||
0x1b,
|
|
||||||
0x1a,
|
|
||||||
0x18,
|
|
||||||
0x17,
|
|
||||||
0x16,
|
|
||||||
0x15,
|
|
||||||
0x13,
|
|
||||||
0x12,
|
|
||||||
0x11,
|
|
||||||
0x10,
|
|
||||||
0xf,
|
|
||||||
0xe,
|
|
||||||
0xd,
|
|
||||||
0xc,
|
|
||||||
0xb,
|
|
||||||
0xa,
|
|
||||||
0x9,
|
|
||||||
0x8,
|
|
||||||
0x8,
|
|
||||||
0x7,
|
|
||||||
0x6,
|
|
||||||
0x6,
|
|
||||||
0x5,
|
|
||||||
0x4,
|
|
||||||
0x4,
|
|
||||||
0x3,
|
|
||||||
0x3,
|
|
||||||
0x2,
|
|
||||||
0x2,
|
|
||||||
0x2,
|
|
||||||
0x1,
|
|
||||||
0x1,
|
|
||||||
0x1,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x0,
|
|
||||||
0x1,
|
|
||||||
0x1,
|
|
||||||
0x1,
|
|
||||||
0x2,
|
|
||||||
0x2,
|
|
||||||
0x2,
|
|
||||||
0x3,
|
|
||||||
0x3,
|
|
||||||
0x4,
|
|
||||||
0x4,
|
|
||||||
0x5,
|
|
||||||
0x6,
|
|
||||||
0x6,
|
|
||||||
0x7,
|
|
||||||
0x8,
|
|
||||||
0x8,
|
|
||||||
0x9,
|
|
||||||
0xa,
|
|
||||||
0xb,
|
|
||||||
0xc,
|
|
||||||
0xd,
|
|
||||||
0xe,
|
|
||||||
0xf,
|
|
||||||
0x10,
|
|
||||||
0x11,
|
|
||||||
0x12,
|
|
||||||
0x13,
|
|
||||||
0x15,
|
|
||||||
0x16,
|
|
||||||
0x17,
|
|
||||||
0x18,
|
|
||||||
0x1a,
|
|
||||||
0x1b,
|
|
||||||
0x1c,
|
|
||||||
0x1e,
|
|
||||||
0x1f,
|
|
||||||
0x21,
|
|
||||||
0x22,
|
|
||||||
0x24,
|
|
||||||
0x25,
|
|
||||||
0x27,
|
|
||||||
0x29,
|
|
||||||
0x2a,
|
|
||||||
0x2c,
|
|
||||||
0x2e,
|
|
||||||
0x2f,
|
|
||||||
0x31,
|
|
||||||
0x33,
|
|
||||||
0x35,
|
|
||||||
0x36,
|
|
||||||
0x38,
|
|
||||||
0x3a,
|
|
||||||
0x3c,
|
|
||||||
0x3e,
|
|
||||||
0x40,
|
|
||||||
0x42,
|
|
||||||
0x44,
|
|
||||||
0x46,
|
|
||||||
0x48,
|
|
||||||
0x4a,
|
|
||||||
0x4c,
|
|
||||||
0x4e,
|
|
||||||
0x50,
|
|
||||||
0x52,
|
|
||||||
0x54,
|
|
||||||
0x56,
|
|
||||||
0x58,
|
|
||||||
0x5a,
|
|
||||||
0x5c,
|
|
||||||
0x5f,
|
|
||||||
0x61,
|
|
||||||
0x63,
|
|
||||||
0x65,
|
|
||||||
0x67,
|
|
||||||
0x69,
|
|
||||||
0x6c,
|
|
||||||
0x6e,
|
|
||||||
0x70,
|
|
||||||
0x72,
|
|
||||||
0x74,
|
|
||||||
0x77,
|
|
||||||
0x79,
|
|
||||||
0x7b,
|
|
||||||
0x7d};
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
for(int i=0;i<360;i++)
|
|
||||||
{
|
|
||||||
OCR0A= testArray[i];
|
|
||||||
TCCR0A = 0x83;//non-inverting pwm
|
|
||||||
TCCR0B = 0x03;//prescaler = 64 for frequency to be approx 1kHz
|
|
||||||
//output of pwm is at pin 13(OC0)
|
|
||||||
_delay_ms(50);
|
|
||||||
}
|
|
||||||
//OCR0A= testArray[0];
|
|
||||||
/*OCR0A = 0x80;
|
|
||||||
TCCR0A = 0x83;//non-inverting pwm
|
|
||||||
TCCR0B = 0x03;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,70 +0,0 @@
|
||||||
:100000000C9472000C948B000C948B000C948B005D
|
|
||||||
:100010000C948B000C948B000C948B000C948B0034
|
|
||||||
:100020000C948B000C948B000C948B000C948B0024
|
|
||||||
:100030000C948B000C948B000C948B000C948B0014
|
|
||||||
:100040000C948B000C948B000C948B000C948B0004
|
|
||||||
:100050000C948B000C948B000C948B000C948B00F4
|
|
||||||
:100060000C948B000C948B000C948B000C948B00E4
|
|
||||||
:100070000C948B000C948B000C948B000C948B00D4
|
|
||||||
:100080000C948B000C948B000C948B000C948B00C4
|
|
||||||
:100090000C948B000C948B000C948B000C948B00B4
|
|
||||||
:1000A0000C948B000C948B000C948B000C948B00A4
|
|
||||||
:1000B0000C948B000C948B000C948B000C948B0094
|
|
||||||
:1000C0000C948B000C948B000C948B000C948B0084
|
|
||||||
:1000D0000C948B000C948B000C948B000C948B0074
|
|
||||||
:1000E0000C948B0011241FBECFEFD1E2DEBFCDBF39
|
|
||||||
:1000F00000E00CBF14E0A0E0B2E0EEE7F1E000E0C9
|
|
||||||
:100100000BBF02C007900D92A03DB107D9F70E9426
|
|
||||||
:100110008D000C94BD000C940000CF93DF93CDB7FD
|
|
||||||
:10012000DEB7C05DD2400FB6F894DEBF0FBECDBFC4
|
|
||||||
:100130008FEF84B980ED92E0E0E0F2E0DE0111960D
|
|
||||||
:1001400001900D920197E1F7CE018F529D4F23E868
|
|
||||||
:1001500033E0FE0131964081329647BD24BD35BD66
|
|
||||||
:100160004FEF50E762E0415050406040E1F700C07F
|
|
||||||
:0E0170000000E817F90779F7ECCFF894FFCFFD
|
|
||||||
:10017E00800082008400860088008B008D008F0036
|
|
||||||
:10018E0091009300960098009A009C009E00A0009B
|
|
||||||
:10019E00A300A500A700A900AB00AD00AF00B10001
|
|
||||||
:1001AE00B300B500B700B900BB00BD00BF00C10071
|
|
||||||
:1001BE00C300C500C700C900CA00CC00CE00D000E5
|
|
||||||
:1001CE00D100D300D500D600D800DA00DB00DD0068
|
|
||||||
:1001DE00DE00E000E100E300E400E500E700E800F7
|
|
||||||
:1001EE00E900EA00EC00ED00EE00EF00F000F10097
|
|
||||||
:1001FE00F200F300F400F500F600F700F700F80047
|
|
||||||
:10020E00F900F900FA00FB00FB00FC00FC00FD0009
|
|
||||||
:10021E00FD00FD00FE00FE00FE00FF00FF00FF00DF
|
|
||||||
:10022E00FF00FF00FF00FF00FF00FF00FF00FF00C8
|
|
||||||
:10023E00FE00FE00FE00FD00FD00FD00FC00FC00C7
|
|
||||||
:10024E00FB00FB00FA00F900F900F800F700F700D8
|
|
||||||
:10025E00F600F500F400F300F200F100F000EF00FC
|
|
||||||
:10026E00EE00ED00EC00EA00E900E800E700E50032
|
|
||||||
:10027E00E400E300E100E000DE00DD00DB00DA0078
|
|
||||||
:10028E00D800D600D500D300D100D000CE00CC00CF
|
|
||||||
:10029E00CA00C900C700C500C300C100BF00BD0031
|
|
||||||
:1002AE00BB00B900B700B500B300B100AF00AD00A0
|
|
||||||
:1002BE00AB00A900A700A500A300A0009E009C0013
|
|
||||||
:1002CE009A0098009600930091008F008D008B008D
|
|
||||||
:1002DE00880086008400820080007D007B0079000B
|
|
||||||
:1002EE0077007400720070006E006C006900670089
|
|
||||||
:1002FE006500630061005F005C005A005800560004
|
|
||||||
:10030E005400520050004E004C004A004800460077
|
|
||||||
:10031E004400420040003E003C003A0038003600E7
|
|
||||||
:10032E003500330031002F002E002C002A0029004A
|
|
||||||
:10033E00270025002400220021001F001E001C00A3
|
|
||||||
:10034E001B001A00180017001600150013001200EB
|
|
||||||
:10035E00110010000F000E000D000C000B000A0023
|
|
||||||
:10036E00090008000800070006000600050004004A
|
|
||||||
:10037E00040003000300020002000200010001005D
|
|
||||||
:10038E00010000000000000000000000000000005E
|
|
||||||
:10039E00000000000000000001000100010002004A
|
|
||||||
:1003AE000200020003000300040004000500060022
|
|
||||||
:1003BE00060007000800080009000A000B000C00E8
|
|
||||||
:1003CE000D000E000F00100011001200130015009A
|
|
||||||
:1003DE001600170018001A001B001C001E001F003C
|
|
||||||
:1003EE002100220024002500270029002A002C00CD
|
|
||||||
:1003FE002E002F00310033003500360038003A0051
|
|
||||||
:10040E003C003E00400042004400460048004A00C6
|
|
||||||
:10041E004C004E00500052005400560058005A0036
|
|
||||||
:10042E005C005F00610063006500670069006C009E
|
|
||||||
:10043E006E00700072007400770079007B007D0002
|
|
||||||
:00000001FF
|
|
Binary file not shown.
|
@ -1,106 +0,0 @@
|
||||||
# simple AVR Makefile
|
|
||||||
#
|
|
||||||
# written by michael cousins (http://github.com/mcous)
|
|
||||||
# released to the public domain
|
|
||||||
|
|
||||||
# Makefile
|
|
||||||
#
|
|
||||||
# targets:
|
|
||||||
# all: compiles the source code
|
|
||||||
# test: tests the isp connection to the mcu
|
|
||||||
# flash: writes compiled hex file to the mcu's flash memory
|
|
||||||
# fuse: writes the fuse bytes to the MCU
|
|
||||||
# disasm: disassembles the code for debugging
|
|
||||||
# clean: removes all .hex, .elf, and .o files in the source code and library directories
|
|
||||||
|
|
||||||
# parameters (change this stuff accordingly)
|
|
||||||
# project name
|
|
||||||
PRJ = main
|
|
||||||
# avr mcu
|
|
||||||
MCU = atmega2560
|
|
||||||
# mcu clock frequency
|
|
||||||
CLK = 16000000
|
|
||||||
# avr programmer (and port if necessary)
|
|
||||||
# e.g. PRG = usbtiny -or- PRG = arduino -P /dev/tty.usbmodem411
|
|
||||||
PRG = wiring -P /dev/ttyACM0
|
|
||||||
# fuse values for avr: low, high, and extended
|
|
||||||
# these values are from an Arduino Uno (ATMega328P)
|
|
||||||
# see http://www.engbedded.com/fusecalc/ for other MCUs and options
|
|
||||||
LFU = 0xFF
|
|
||||||
HFU = 0xD0
|
|
||||||
EFU = 0xFD
|
|
||||||
# program source files (not including external libraries)
|
|
||||||
SRC = $(PRJ).c
|
|
||||||
# where to look for external libraries (consisting of .c/.cpp files and .h files)
|
|
||||||
# e.g. EXT = ../../EyeToSee ../../YouSART
|
|
||||||
EXT =
|
|
||||||
|
|
||||||
|
|
||||||
#################################################################################################
|
|
||||||
# \/ stuff nobody needs to worry about until such time that worrying about it is appropriate \/ #
|
|
||||||
#################################################################################################
|
|
||||||
|
|
||||||
# include path
|
|
||||||
INCLUDE := $(foreach dir, $(EXT), -I$(dir))
|
|
||||||
# c flags
|
|
||||||
CFLAGS = -Wall -Os -DF_CPU=$(CLK) -mmcu=$(MCU) $(INCLUDE)
|
|
||||||
# any aditional flags for c++
|
|
||||||
CPPFLAGS =
|
|
||||||
|
|
||||||
# executables
|
|
||||||
AVRDUDE = avrdude -C /usr/share/arduino/hardware/tools/avrdude.conf -c $(PRG) -p $(MCU) -b 115200 -D
|
|
||||||
OBJCOPY = avr-objcopy
|
|
||||||
OBJDUMP = avr-objdump
|
|
||||||
SIZE = avr-size --format=avr --mcu=$(MCU)
|
|
||||||
CC = avr-gcc
|
|
||||||
|
|
||||||
# generate list of objects
|
|
||||||
CFILES = $(filter %.c, $(SRC))
|
|
||||||
EXTC := $(foreach dir, $(EXT), $(wildcard $(dir)/*.c))
|
|
||||||
CPPFILES = $(filter %.cpp, $(SRC))
|
|
||||||
EXTCPP := $(foreach dir, $(EXT), $(wildcard $(dir)/*.cpp))
|
|
||||||
OBJ = $(CFILES:.c=.o) $(EXTC:.c=.o) $(CPPFILES:.cpp=.o) $(EXTCPP:.cpp=.o)
|
|
||||||
|
|
||||||
# user targets
|
|
||||||
# compile all files
|
|
||||||
all: $(PRJ).hex
|
|
||||||
|
|
||||||
# test programmer connectivity
|
|
||||||
test:
|
|
||||||
$(AVRDUDE) -v
|
|
||||||
|
|
||||||
# flash program to mcu
|
|
||||||
flash: all
|
|
||||||
$(AVRDUDE) -U flash:w:$(PRJ).hex:i
|
|
||||||
|
|
||||||
# write fuses to mcu
|
|
||||||
fuse:
|
|
||||||
$(AVRDUDE) -U lfuse:w:$(LFU):m -U hfuse:w:$(HFU):m -U efuse:w:$(EFU):m
|
|
||||||
|
|
||||||
# generate disassembly files for debugging
|
|
||||||
disasm: $(PRJ).elf
|
|
||||||
$(OBJDUMP) -d $(PRJ).elf
|
|
||||||
|
|
||||||
# remove compiled files
|
|
||||||
clean:
|
|
||||||
rm -f *.hex *.elf *.o
|
|
||||||
$(foreach dir, $(EXT), rm -f $(dir)/*.o;)
|
|
||||||
|
|
||||||
# other targets
|
|
||||||
# objects from c files
|
|
||||||
.c.o:
|
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
# objects from c++ files
|
|
||||||
.cpp.o:
|
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
# elf file
|
|
||||||
$(PRJ).elf: $(OBJ)
|
|
||||||
$(CC) $(CFLAGS) -o $(PRJ).elf $(OBJ)
|
|
||||||
|
|
||||||
# hex file
|
|
||||||
$(PRJ).hex: $(PRJ).elf
|
|
||||||
rm -f $(PRJ).hex
|
|
||||||
$(OBJCOPY) -j .text -j .data -O ihex $(PRJ).elf $(PRJ).hex
|
|
||||||
$(SIZE) $(PRJ).elf
|
|
Binary file not shown.
Loading…
Reference in New Issue