Adding files
This commit is contained in:
parent
5002c16c1d
commit
759597d8f9
11
ADC/main.c
11
ADC/main.c
|
@ -7,13 +7,16 @@ int main(void)
|
|||
{
|
||||
DDRL = 0xff;//port L direction: output //pins- 49:42
|
||||
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
|
||||
ADMUX = 0xC0;// input at ADC0// data is right-justified
|
||||
ADMUX = 0x61;// Ref= Vcc// data is left-justified //ADC0 is source pin
|
||||
while(1)
|
||||
{
|
||||
ADCSRA |= (1<<ADSC); //to start conversion
|
||||
while(ADCSRA && (1<<ADIF)==0);// waiting for conversion to finish
|
||||
//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);
|
||||
PORTL = ADCL;
|
||||
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
|
||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||
:1000F00000E00CBF0E9480000C949A000C94000059
|
||||
:100100008FEF80930A0187B911B887E880937A004E
|
||||
:1001100080EC80937C0080917A00806480937A00E8
|
||||
:1001200080917A008091780080930B018091790012
|
||||
:0801300088B9F1CFF894FFCF6C
|
||||
:1000F00000E00CBF0E9480000C9497000C9400005C
|
||||
:100100008FEF80930A0187B987E880937A0081E6B0
|
||||
:1001100080937C0080917A00806480937A00809143
|
||||
:10012000780080930B018091790088B9F3CFF8941F
|
||||
:02013000FFCFFF
|
||||
: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
|
||||
|
||||
ADMUX: ADC Multiplexer = 0xC0
|
||||
Bit [7:6] = 11 = Vref= 2.56V
|
||||
Bit 5 = 0 = Result(10-bits-wide) is right-justified
|
||||
Bit [7:6] = 01 = Vref= AVcc = 5V
|
||||
Bit 5 = 1 = Result(10-bits-wide) is left-justified
|
||||
Bit [4:0] = 00000 = Input at ADC0
|
||||
|
||||
ADCL: ADC Data Register Lower= stores the lower 8 bits of result of conversion
|
||||
|
|
Binary file not shown.
|
@ -10,7 +10,7 @@ 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
|
||||
DDRB = 0x00;//pin 10-13: Port B4 to B7 //direction: input; pin 53-50: Port B0 to B3
|
||||
//PINB = 0x00;//clearing PINB register
|
||||
//PORTA = PINB;
|
||||
//while(1);
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
//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.
|
@ -0,0 +1,14 @@
|
|||
#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.
|
@ -13,11 +13,8 @@
|
|||
:1000C0000C947E000C947E000C947E000C947E00B8
|
||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||
:1000F00000E00CBF0E9480000C94AA000C94000049
|
||||
:100100008FEF87B981B914B885B981E093B192B9FD
|
||||
:1001100093B19F3F69F488B9EFE1FEE43197F1F7BD
|
||||
:1001200000C0000018B8EFE1FEE43197F1F70FC00E
|
||||
:1001300093B19111EBCF88B9EFE3FCE93197F1F777
|
||||
:1001400000C0000018B8EFE3FCE93197F1F700C0F8
|
||||
:080150000000DCCFF894FFCFA2
|
||||
:1000F00000E00CBF0E9480000C9492000C94000061
|
||||
:1001000080910A018E7F80930A0180910B018160AA
|
||||
:1001100080930B01389A80910901817080930901C5
|
||||
:0801200088B9F9CFF894FFCF74
|
||||
:00000001FF
|
Binary file not shown.
|
@ -4,18 +4,19 @@
|
|||
int main(void)
|
||||
{
|
||||
DDRA=0xFF;//Port A Output
|
||||
DDRB=0xFF;//Port B Output
|
||||
PORTD=0xFF;//activate pull-up
|
||||
DDRC=0xFF;//Port C Output
|
||||
PORTD=0xFF;//activate pull-up//ICP1 in pin PD4= grey 47
|
||||
while(1)
|
||||
{
|
||||
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);//
|
||||
//TIFR1=(1<<ICF1);//clear ICF1
|
||||
while(TIFR1 && 0x20 == 0x00);//waiting for ICF1 Flag to be set
|
||||
//ICF1=0;//why not this command?
|
||||
TIFR1=(1<<ICF1);
|
||||
PORTA=ICR1L;//
|
||||
PORTB=ICR1H;//
|
||||
PORTA=ICR1L;//check output in pins 22-29(A7=29)
|
||||
PORTC=ICR1H;//check output in pins 37-30(C0=30)
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -14,7 +14,7 @@
|
|||
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||
:1000F00000E00CBF0E9480000C9493000C94000060
|
||||
:100100008FEF81B984B98BB921E490E2109280001D
|
||||
:100100008FEF81B987B98BB925E490E21092800016
|
||||
:100110002093810086B396BB8091860082B980913E
|
||||
:0A012000870085B9F3CFF894FFCFF4
|
||||
:0A012000870088B9F3CFF894FFCFF1
|
||||
:00000001FF
|
||||
|
|
Binary file not shown.
|
@ -2,7 +2,7 @@ Registers involved:
|
|||
|
||||
GPIO:
|
||||
DDRA: Data Direction Register for Port A= 0xFF for output
|
||||
DDRB: Data Direction Register for Port B= 0xFF for output
|
||||
DDRC: Data Direction Register for Port C= 0xFF for output
|
||||
PORTD: Port D Data Register= set as 0xFF to activate pull up registers
|
||||
|
||||
Input Capture Unit(ICU):
|
||||
|
|
|
@ -13,4 +13,3 @@ max current LED can tolerate:
|
|||
Resistance offered within the board(if any):
|
||||
|
||||
|
||||
Hi- change made
|
||||
|
|
Binary file not shown.
|
@ -6,14 +6,17 @@ int main(void)
|
|||
{
|
||||
DDRB = 0xFF;//Port B set as output
|
||||
|
||||
OCR0A= 0x7F;//50 percent of 255=duty cycle
|
||||
OCR0A= 0x7F;//50 percent of 255=duty cycle//decimal=127
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
while(1);
|
||||
|
|
Binary file not shown.
|
@ -13,8 +13,8 @@
|
|||
:1000C0000C947E000C947E000C947E000C947E00B8
|
||||
:1000D0000C947E000C947E000C947E000C947E00A8
|
||||
:1000E0000C947E0011241FBECFEFD1E2DEBFCDBF46
|
||||
:1000F00000E00CBF0E9480000C9492000C94000061
|
||||
:100100008FEF84B98FE787BD83E884BD83E085BD29
|
||||
:1001100087E88093B30083EC8093B00084E0809301
|
||||
:08012000B100FFCFF894FFCFFE
|
||||
:1000F00000E00CBF0E9480000C9490000C94000063
|
||||
:100100008FEF84B98FE787BD93E894BD82E085BD0A
|
||||
:100110009093B30093EC9093B0008093B100FFCF25
|
||||
:04012000F894FFCF81
|
||||
:00000001FF
|
||||
|
|
Binary file not shown.
|
@ -31,4 +31,6 @@ The most important nonlinearity is caused by the necessary
|
|||
blanking time between top and bottom switch to avoid inverter
|
||||
leg shoot-through of the DC bus circuit. The type of the switch
|
||||
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
|
|
@ -0,0 +1,106 @@
|
|||
# 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
|
|
@ -0,0 +1,387 @@
|
|||
#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.
|
@ -0,0 +1,70 @@
|
|||
: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.
|
@ -0,0 +1,106 @@
|
|||
# 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,4 +1,4 @@
|
|||
//sinusoidal PWM
|
||||
//triangular PWM
|
||||
|
||||
|
||||
|
||||
|
@ -23,4 +23,6 @@ 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
|
||||
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 sinusoidal 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 linear 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
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue