Site icon Elektrologi

Buffer pada Komunikasi Serial Arduino Nano ATmega328

Arduino Nano dapat melakukan komunikasi serial baik transmit (mengirim) maupun receive (menerima). Pada library Arduino, sudah disiapkan buffer FIFO (First In First Out) pada data yang dikirimkan maupun data yang diterima. Pada tulisan ini dilakukan pengecekan berapa ukuran buffer tersebut. Pengujian ini dilakukan pada Arduino Nano dengan prosesor ATmega328. Untuk prosesor lain, ada kemungkinan ukuran buffernya berbeda.

Library Arduino untuk komunikasi serial memiliki buffer FIFO untuk outgoing maupun incoming.

Hardware yang diperlukan:

Buffer Pengiriman

Ukuran buffer pengiriman yang tersisa dapat dicek dengan fungsi Serial.availableForWrite() . Pada kondisi awal seharusnya buffer yang tersisa adalah maksimal, karena belum ada karakter yang dikirim.

Contoh program:

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  int incomingByte ;
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);
  incomingByte = Serial.availableForWrite();
  Serial.print("jumlah available: ");
  Serial.println(incomingByte, DEC);
}

Output seperti sebagai berikut

14:42:26.343 -> jumlah available: 63

Artinya ukuran bufffer outgoing adalah 63 karakter

Buffer Penerimaan

Ukuran buffer data masuk (receive) dapat dicek dengan fungsi Serial.available

Contoh program

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  int incomingByte ;
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);
  incomingByte = Serial.availableForWrite();
  Serial.print("jumlah available: ");
  Serial.println(incomingByte, DEC);
}

Setelah itu kirimkan beberapa karakter dari PC ke Arduino. Angka yang ditampilkan akan naik, namun akan berhenti di suatu batas tertentu. Angka inilah yang menunjukkan ukuran buffer FIFO incoming.

Dari hasil percobaan didapatkan rekaman komunikas serial sebagai berikut

14:37:37.062 -> jumlah available: 0
14:37:39.051 -> jumlah available: 0
14:37:41.043 -> jumlah available: 30
14:37:43.038 -> jumlah available: 43
14:37:45.064 -> jumlah available: 54
14:37:47.057 -> jumlah available: 63
14:37:49.050 -> jumlah available: 63
14:37:51.042 -> jumlah available: 63
14:37:53.067 -> jumlah available: 63
14:37:55.058 -> jumlah available: 63
14:37:57.050 -> jumlah available: 63

Artinya jumlah data yang menunggu untuk dibaca oleh software adalah maksimum 63 karakter.

Referensi

Exit mobile version