مشکل تنظیم اشتباه فیوزبیت ها در AVR
حل مشکل تنظیم اشتباه فیوزبیت ها در avr و آموزش قدم به قدم به همراه 2 روش تست شده برای حل این مشکل و زنده کردن میکرو کنترلر مرده شما
دسته بندی : میکروکنترلر avr
ماژول بلوتوث HC-05 با کدویژن و avr با توضیحات کاملا تصویری و سورس کد کامل به همراه معرفی اپلیکیشن های مربوطه
مطالبی که قرار است بیاموزید
در این آموزش همیار الکترونیک میخوایم ماژول بلوتوث HC-05 رو با کدویژن و avr راه اندازی کنیم. ما در این پروژه میخوایم با ماژول بلوتوث با تلفن همراه خودمون ارتباط برقرار کنیم که این ارتباط با رابط UART انجام میگیرد. در این پروژه ما میخوایم با HC-05 یک LED رو کنترل کنیم
مطالبی که قرار است بیاموزید
ما برای پروگرام کردن کد های خود از نرم افزار کدویژن استفاده میکنیم. که از لینک زیر میتوانید این نرم افزار را دانلود کنید
بعد از نصب این نرم افزار شروع کنید قدم به قدم با ما همراه باشید تا این پروژه ماژول بلوتوث HC-05 با کدویژن و avr رو به کامل کنیم
مرحله ۱ : وارد قسمت File -> New -> Project و در پنجره ای که باز میشود گزینه yes را کلیک کنید
مرحله ۲ : در این مرحله کدویزارد باز میشود ، در پنجره باز شده گزینه اول رو انتخاب کنید
مرحله ۳ : در این قسمت باید میکروکنترلر خودتون رو انتخاب کنید که میکروکنترلر من ATmega8 هست رو انتخاب میکنم
مرحله ۴ : روی قسمت port کلیک کنید و به تب port C بروید و بیت ها ۴ و ۵ را برای ال ای دی ها خروجی تعیین کنید
مرحله ۵ : چون ما از TX و RX استفاده میکنیم ، پس وارد USART میشیم و تیک گزینه Receiver رو میزنیم
مرحله ۶ : برای ذخیره Program -> Generate, Save and Exit رو انتخاب میکنیم
مرحله ۷ : در این مرحله باید فایل های خودتون رو دخیره کنید ، من برای این کار یک پوشه توی دسکتاپ ساختم و فایل هایم را با اسم blue101 ذخیره کردم . ۳ باکس پشت سر هم باز میشوند که هر سه تا را به همین ترتیب ذخیره میکنیم
شما باید اتصالات مدار خود را مانند تصویر زیر ببندید
در void main یک متغییری تعریف میکنیم
char var; // Declare your local variables here
مابقی کد آسان و قابل درک است . به آخرین خط های کد بروید تا حلقه while رو ببینید ، در کد زیر ما منتظر ورودی از ماژول بلوتوث میمانیم و به پس از خواندن آن ، تغییرات را روی ال ای دی اعمال میکنیم
while (1) { scanf("%c",&var); //this function is to used to check any character coming from our android app . if (var == 'a') // We will send ‘a’ from Bluetooth Terminal to ON the LED and ‘b’ to OFF the LED { PORTC.5 = 1; PORTC.4 = 0; } if (var == 'b') { PORTC.5 = 0; PORTC.4 = 0; } }
و بعد از کد را روی برد خود پروگرام میکنیم
شما از اپلیکیشن زیر میتوانید برای راه اندازی ماژول بلوتوث HC-05 با کدویژن و avr استفاده کنید
https://play.google.com/store/apps/details?id=Qwerty.BluetoothTerminal&hl=en_IN
#include <io.h>
#include <stdio.h>
void main(void)
{
char var;
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In
DDRC=(0<<DDC7) | (0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=T Bit6=T Bit5=0 Bit4=0 Bit3=T Bit2=T Bit1=T Bit0=T
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator’s positive input is
// connected to the AIN0 pin
// The Analog Comparator’s negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);
// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
while (1)
{
scanf(“%c”,&var);
if (var == ‘a’)
{
PORTC.5 = 1;
PORTC.4 = 0;
}
if (var == ‘b’)
{
PORTC.5 = 0;
PORTC.4 = 0;
}
}
}
حل مشکل تنظیم اشتباه فیوزبیت ها در avr و آموزش قدم به قدم به همراه 2 روش تست شده برای حل این مشکل و زنده کردن میکرو کنترلر مرده شما
آموزش نصب درایور پروگرامر isp در ویندوز 10 و 7 به همراه لینک دانلود نرم افزار درایور پروگرامر zadig و حل مشکل بالا نیامدن پروگرامر download isp driver
ساخت ربات مسیریاب یا همان تعقیب خط با استفاده از میکرو کنترلر AVR با استفاده از برنامه نویسی ATmega16 با استفاده از 2 سنسور مادون قرمز
اینو میتونیم تا ۱۶ رله بریم