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 :
- UCSR A/B/C
- UBRR L/H
- LOW = 0xE4
- HIGH = 0xDF
- Extended = 0xFF
#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);
}
0 komentar:
Posting Komentar