Proteus Arduino kütüphanelerinde sorun.

Proteusta Arduino simüle etmek için Atmega 328 entegre seçilip simüle edilebilir. Fakat bağlantıları yaparken aşağıdaki gibi bir model olduğunda bizim için kolaylık olacaktır.

Bu kolaylığın yanı sıra bu tip modellerde çıkabilecek sorunlar ise programlama yaparken size vakit kaybettirebilecektir. Nitekim bende de öyle oldu.
Problem yazılımsal seri kullanıldığında ortaya çıkıyordu. Program olarak Arduino ide de bulunan örnek program kullanıldı.

Programın yaptığı iş donanımsal seri porta bir bilgi gönderdiğinizde bunu yazılımsal seri olarak bildiriyor. Yazılımsal seri olarak bir bilgi geldiğinde ise bunu donanımsal seri kısmında gösterebiliyor. Basit bir program.
Fakat arduino uno kütüphanesinde yazılımsal seri olarak Rx=10. pin Tx=11. pin olarak kullandım. Bu şekilde kullanımda yazılımsal seri bilgi gönderiyor fakat bilgi alamıyordu.
İşin bir başka boyutu ise bilgi gelmesini beklemek için WHILE döngüsü kurduğunuzda sanki bilgi gelmiş gibi bu satırları atlıyordu.
Tabii ki bu da programımı tekrar tekrar gözden geçirmeme sebep oldu. Sonrasında, önceden DS1307 RTC kütüphanesinde de aynı şey başıma geldiğinden proteusun ATMEGA 328 entegresiyle kontrol etmek istedim. Sorunun UNO kütüphanesinde olduğunu gördüm.
( DS1307 de SQW ucu çalışmıyordu. )

Sizlerde bu tip kütüphanelere şüpheyle yaklaşın demiyorum. Çünkü bir çok programda kullandım sorun yaratmamıştı. Yine de aklınızda bulunsun istedim programınızdan eminseniz, proteusun sonradan oluşturulmuş kütüphanelerini kullanıyorsanız, gerçek proteus modellerini deneyin derim. 

Benim kullandığım proteus kütüphanelerini bu linklerden almıştım.
1. link : Proteus Kütüphanesi

2. link : Proteus Kütüphanesi

Kullandığım Arduino programı budur.

/*
  Software serial multple serial test

 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.

 The circuit:
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)

 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts,
 so only the following can be used for RX:
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

 Not all pins on the Leonardo and Micro support change interrupts,
 so only the following can be used for RX:
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example

 This example code is in the public domain.

 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
    //mySerial.println("Hello, world?");
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

 

1 Comment

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir