عکس پیش‌فرض نوشته

با توجه به اینکه هنوز میکروهای AVR کاربرد زیادی دارند یکی از مشکلات آنان پروگرام کردن آنها است.

در بازار پروگرامرهای مختلف و با قیمت های مختلف وجود دارد که هر کدام به روش های متفاوتی کار می کنند.

 

Programmer AVR with UNO

 

نحوه اتصال پروگرامر به سیستم یکی از نکات مهم در انتخاب یک پروگرامر است.

بهترین روش و نوع اتصال به صورت USB است در این صورت پروگرامر شما با کابل USB به سیستم وصل می شود. امروزه تمام سیستم ها حتی لپ تاپ های معمولی پورت USB را دارند پس این نوع پروگرامر بهترین نوع است.

در بین پروگرامرهای بازار می توان انواع مختلفی را از لحاظ ساختار مشاهده کرد.

ما در این مطلب قصد داریم تا پروگرامری بسازیم که شما احتیاج به مهارت خاصی برای ساخت نخواهید داشت.

و اینکه از یک سری ماژول های آماده بازار استفاده می کنیم.

شاید ماژول Arduino را شنیده باشید. Arduino  همان میکرو AVR است که رو بردی سوار شده است و قابلیت اتصال آن به سیستم و پروگرام کردن آن از طریق پورت USB فراهم شده است.

یکی از ارزان ترین و کارامدترین مدل ها، مدل UNO است.

شما می توانید از آن برای ساخت خیلی از پروژه ها استفاده کنید هم اینکه ما از همین مدل برای پروگرام کردن  آی سی AVR استفاده کرده ایم.

نرم افزار ماژول های Arduino با AVR متفاوت است. اما اصلا نگران نباشید چون قرار نیست شما برنامه نویسی کنید. فقط کافی است برنامه ی زیر را در نرم افزار کپی و بر روی ماژول پروگرام کنید.

 

#include <SPI.h>
const int PRESSURE = 0x1F;     
const int PRESSURE_LSB = 0x20; 
const int TEMPERATURE = 0x21;  
const byte READ = 0b11111100; 
const byte WRITE = 0b00000010;
const int dataReadyPin = 6;
const int chipSelectPin = 7;

void setup() {
  Serial.begin(9600);
  SPI.begin();
  pinMode(dataReadyPin, INPUT);
  pinMode(chipSelectPin, OUTPUT);
  writeRegister(0x02, 0x2D);
  writeRegister(0x01, 0x03);
  writeRegister(0x03, 0x02);
  delay(100);
}
void loop() {
  writeRegister(0x03, 0x0A);
  if (digitalRead(dataReadyPin) == HIGH) {
    int tempData = readRegister(0x21, 2);
    float realTemp = (float)tempData / 20.0;
    Serial.print("Temp[C]=");
    Serial.print(realTemp);
    byte  pressure_data_high = readRegister(0x1F, 1);
    pressure_data_high &= 0b00000111;
    unsigned int pressure_data_low = readRegister(0x20, 2);
    long pressure = ((pressure_data_high << 16) | pressure_data_low) / 4;
    Serial.println("\tPressure [Pa]=" + String(pressure));
  }
}

unsigned int readRegister(byte thisRegister, int bytesToRead ) {
  byte inByte = 0;       
  unsigned int result = 0;
  Serial.print(thisRegister, BIN);
  Serial.print("\t");
  thisRegister = thisRegister << 2;
  byte dataToSend = thisRegister & READ;
  Serial.println(thisRegister, BIN);
  digitalWrite(chipSelectPin, LOW);
  SPI.transfer(dataToSend);
  result = SPI.transfer(0x00);
  bytesToRead--;
  if (bytesToRead > 0) {
    result = result << 8;
    inByte = SPI.transfer(0x00);
    result = result | inByte;
    bytesToRead--;
  }
digitalWrite(chipSelectPin, HIGH);
  return(result);
}

void writeRegister(byte thisRegister, byte thisValue) {
  thisRegister = thisRegister << 2;
  byte dataToSend = thisRegister | WRITE;
  digitalWrite(chipSelectPin, LOW);
  SPI.transfer(dataToSend);
  SPI.transfer(thisValue);
  digitalWrite(chipSelectPin, HIGH);
}

 

ماژول UNO نیاز به نصب درایور دارد.

اگر درایور و نرم افزار Arduino را ندارید در قسمت نظران اعلام نمایید تا برایتان ارسال شود.

حال شما نیاز به یک کریستال 16 مگ و دو خازن 22 ژول هم دارید.

اکنون طبق زیر میکرو را به ماژول وصل کنید:

 

 

ATmega 8 > Arduino
1 > 10
7 > VCC
8 > GND
9 > Crystal > Capacitor1 > GND
10 > Crystal > Capacitor2 > GND
17 > 11
18 > 12
19 > 13
20 > VCC
22 > GND

 

Programmer AVR with UNO

 

حال به ترتیب زیر عمل کنید:

1-نرم افزار Arduino را باز کنید.

2-تمام کدها را وارد نرم افزار کنید

3-کدها را در ماژول UNO آپلود کنید

4-از منوی Tools وارد Programmer شوید و گزینه Arduino as ISP را بزنید.

5-دوباره از منوی Tools وارد Burn bootloader شوید

6-برنامه AVR خود را لود کنید

7-از منوی Sketch روی گزینه Upload using programmer کلیک کنید.

8-برنامه AVR شما با موفقیت روی میکرو پروگرام می شود.