Compare commits

..

No commits in common. "master" and "5002c16c1df48ffe8e6fda2311e0dd9b0c4f6ce0" have entirely different histories.

41 changed files with 97 additions and 783 deletions

View File

@ -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;
} }

Binary file not shown.

View File

@ -13,9 +13,9 @@
:1000C0000C947E000C947E000C947E000C947E00B8 :1000C0000C947E000C947E000C947E000C947E00B8
:1000D0000C947E000C947E000C947E000C947E00A8 :1000D0000C947E000C947E000C947E000C947E00A8
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46 :1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
:1000F00000E00CBF0E9480000C9497000C9400005C :1000F00000E00CBF0E9480000C949A000C94000059
:100100008FEF80930A0187B987E880937A0081E6B0 :100100008FEF80930A0187B911B887E880937A004E
:1001100080937C0080917A00806480937A00809143 :1001100080EC80937C0080917A00806480937A00E8
:10012000780080930B018091790088B9F3CFF8941F :1001200080917A008091780080930B018091790012
:02013000FFCFFF :0801300088B9F1CFF894FFCF6C
:00000001FF :00000001FF

Binary file not shown.

View File

@ -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

View File

@ -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);

57
GPIO_Input_2/main.c Normal file
View File

@ -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
*/
}
}

View File

@ -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

BIN
GPIO_Input_2/main.o Normal file

Binary file not shown.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -14,7 +14,7 @@
:1000D0000C947E000C947E000C947E000C947E00A8 :1000D0000C947E000C947E000C947E000C947E00A8
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46 :1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
:1000F00000E00CBF0E9480000C9493000C94000060 :1000F00000E00CBF0E9480000C9493000C94000060
:100100008FEF81B987B98BB925E490E21092800016 :100100008FEF81B984B98BB921E490E2109280001D
:100110002093810086B396BB8091860082B980913E :100110002093810086B396BB8091860082B980913E
:0A012000870088B9F3CFF894FFCFF1 :0A012000870085B9F3CFF894FFCFF4
:00000001FF :00000001FF

Binary file not shown.

View File

@ -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):

View File

@ -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

View File

@ -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.

View File

@ -13,8 +13,8 @@
:1000C0000C947E000C947E000C947E000C947E00B8 :1000C0000C947E000C947E000C947E000C947E00B8
:1000D0000C947E000C947E000C947E000C947E00A8 :1000D0000C947E000C947E000C947E000C947E00A8
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46 :1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
:1000F00000E00CBF0E9480000C9490000C94000063 :1000F00000E00CBF0E9480000C9492000C94000061
:100100008FEF84B98FE787BD93E894BD82E085BD0A :100100008FEF84B98FE787BD83E884BD83E085BD29
:100110009093B30093EC9093B0008093B100FFCF25 :1001100087E88093B30083EC8093B00084E0809301
:04012000F894FFCF81 :08012000B100FFCFF894FFCFFE
:00000001FF :00000001FF

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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;
*/
}
}

View File

@ -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.

View File

@ -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