Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Rabu, 18 Agustus 2021

Attiny2313 vs Arduino Library, bagaimana solusinya agar tidak habis memorynya ?

 



Seperti yang saya sudah kira sebelumnya kalau platform bernama arduino ini,  memang dirancang untuk IC AVR dengan memory baik flash maupun RAM yang ukurannya berlimpah. Sekelas board arduino UNO menggunakan ATmega328 dengan kapasitas flas 32Mb dan memory SRAM sebanyak 2Kb. Jadi para pembuat library lumayan leluasa untuk berkreasi. Bagaimana dengan Attiny2313 yg hanya flash 2Kb dan memory ram 128 bytes? Ya lihat saja gambar diatas, untuk melakukan pengiriman serial pun sudah menghabiskan memory ram 70% dan ini dijamin akan membuat proses tidak berjalan.

Solusi yang diperlukan untuk mengatasi masalah ini adalah kembali ke model bit banging pada register yg khusus berhubungan dengan komunikasi serial, yang pada attiny2313 berada pada bagian  :

  1. UCSR A/B/C
  2. UBRR L/H
Selengkapnya bisa dilihat pada datasheet dan saya sarankan bisa baca pada project pengenalan USART atau komunikasi serial disini : https://www.aisi555.com/2013/06/tutorial-komunikasi-serial-pada.html .

Jika anda menggunakan  USART atau komunikasi serial pada ATtiny 2313 maka butuh clock yang akan mudah dibagi dengan baudrate umum semisal 9600. Jadi karena dengan adanya DIV8 pada Fusebit ATtiny, maka butuh mengubah setting clock div8 agar attiny menggunakan clok internal 8Mhz. Caranya seperti pada gambar berikut ini :




Mungkin hal ini lebih mudah dilakukan jika kamu menggunakan programmer / dowloader AVR ISP MK2 yg bisa langsung merubah fusebit di atmel studio, seperti yg pernah dibahas disini : https://www.aisi555.com/2013/02/pejelasan-mengenai-fusebit-dari-avr.html . Jadi karena kita menggunakan USBasp maka diingat nilai yg didapat pada kalkulator fusebit tadi yaitu : 

  • LOW = 0xE4
  • HIGH = 0xDF
  • Extended = 0xFF
Lalu bisa dilanjutkan pada Avrdude versi Gui yang lebih gampang dan menghindari kesalahan saat melakukan setting fusebit.





Selanjutnya dengan memasukkan script pada pelajaran komunikasi serial sebelumnya, maka kirim-kiriman serial attiny menggunakan sketch arduino dapat berlangsung dengan lancar.


#define USART_BAUDRATE 9600  // baudrate 9600 bps
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
void init_usart(void)

{

  UCSRB |= (1 << TXEN);   // kirim aja
  UCSRC |= (1 << UCSZ0) | (1 << UCSZ1);
  UBRRL = BAUD_PRESCALE;
  UBRRH = (BAUD_PRESCALE >> 8);

}

void USART_Tx(unsigned char data)

{
  
  while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty
  UDR = data; // Send data to the computer


}


void setup() {
  init_usart();


}

void loop() {
  USART_Tx('h');USART_Tx('a');USART_Tx('l');USART_Tx('0');USART_Tx('\n');
  delay(1000);

}





Lalu apa bedanya dengan programming atau koding pada atmel studio ? Ya begitulah tak ada kemewahan library pada chip microcontroller versi mungil seperti attiny, jadi butuh kembali ke dasar pemahaman mengenai register dan proses geser-geser bit, yang akan kita dalami kembali di bagian berikutnya saat attiny akan dicoba mengirim data serial berupa pembacaan sensor DHT11.

Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (74) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika