Categories
Mikrokontroler

EEPROM AT24C1024 dan PIC16F877 (Antarmuka I2C)

Jika pada artikel sebelumnya sudah saya bahas bagaimana mengakses EEPROM internal, dalam beberapa kasus jumlah atau kapasitas 256 byte tidaklah cukup. Jangan kawatir, masih ada EEPROM lain, yang tentunya bukan internal, yang kapasitasnya lebih dari 256 byte.

Pembahasan EEPROM eksternal saya awali dengan memperkenalkan sebuah EEPROM AT24C1024 dari Atmel dengan kapasitas 1024 byte atau 1KByte, lumayan bisa menyimpan data 4 kali lipat dari EEPROM internal-nya PIC16F877. Namun yang lebih penting adalah antarmukanya menggunakan I2C, jadi sekalian belajar bagaimana membuat rangkaian dasar I2C dan membuat programnya sekaligus.

I2C (“i-squared cee” or “i-two cee”; Inter-Integrated Circuit; generically referred to as “two-wire interface”) is a multi-master serial single-ended computer bus invented by Philips that is used to attach low-speed peripherals to a motherboard, embedded system, cellphone, or other electronic device. Since the mid 1990s, several competitors (e.g. Siemens AG (later Infineon Technologies AG), NEC, Texas Instruments, STMicroelectronics (formerly SGS-Thomson), Motorola (later Freescale), Intersil, etc.) brought I2C products on the market, which are fully compatible with the NXP (formerly Philips’s semiconductor division) I2C-system. As of October 10, 2006, no licensing fees are required to implement the I2C protocol. However, fees are still required to obtain I2C slave addresses allocated by NXP. (wikipedia)

Pada Gambar 1 ditunjukkan contoh rangkaian antarmuka I2C dengan sebuah master (mikrokontroler), tiga slave (ADC, DAC dan mikrokontroler lainnya) dan (tidak lupa) dua buah resistor pull-up yang masing-masing ditempatkan pada kaki SCL dan SDA. Pada Gambar 2 ditunjukkan contoh IC AT24C1024.

Gambar 1

Gambar 2

Deskripsi AT24C1024

The AT24C1024 provides 1,048,576 bits of serial electrically erasable and programmable read only memory (EEPROM) organized as 131,072 words of 8 bits each. The device’s cascadable feature allows up to two devices to share a common two-wire bus. The device is optimized for use in many industrial and commercial applications where low-power and low-voltage operation are essential. The devices are available in space-saving 8-lead PDIP, 8-lead EIAJ SOIC, 8-lead Leadless Array (LAP) and 8-lead SAP packages. In addition, the entire family is available in 2.7V (2.7V to 5.5V) versions. (datasheet)

Fitur AT24C1024

  • Low-voltage Operation: 2.7 (VCC = 2.7V to 5.5V)
  • Internally Organized 131,072 x 8
  • Two-wire Serial Interface
  • Bidirectional Data Transfer Protocol
  • Write Protect Pin for Hardware and Software Data Protection
  • 256-byte Page Write Mode (Partial Page Writes Allowed)
  • Random and Sequential Read Modes
  • Self-timed Write Cycle (5 ms Typical)
  • High Reliability
  • Endurance: 100,000 Write Cycles/Page
  • Data Retention: 40 Years

Categories
Mikrokontroler

Memanfaatkan EEPROM internal Mikrokontroler PIC16F877

Jika Anda belum tahu apakah EEPROM itu, silahkan klik disini. Artikel kali ini akan mengulas tentang pemanfaatan EEPROM internal pada mikrokontroler PIC16F877 yang memiliki kapasitas 256 Byte. Cukup besar untuk menyimpan data-data kritis, data-data parameter dan lain sebagainya yang tidak boleh terhapus saat catu daya ke Mikrokontroler tidak ada lagi (bersifat non-volatile).

Bahasa C menggunakan kompilator CCS sudah menyediakan beberapa instruksi yang terkait dengan pemanfaatan EEPROM ini, lantas bagaimana rangkaian yang digunakan? Wah mudah banget, lha wong cuman pake EEPROM internal ya pake saja rangkaian minimum atau yang dibutuhkan saja, contohnya liat gambar berikut.

Categories
Mikrokontroler

Aplikasi PIC16F877 untuk LED dan tombol

Setelah mengenal mikrokontroler PIC16F877, kini saatnya kita berkreasi menggunakan mikrokontroler ini. Hal sederhana yang bisa kita lakukan adalah membuat aplikasi menggunakan LED dan pushbutton.

Rangkaian yang digunakan ditunjukkan pada Gambar 1. Menggunakan resonator atau rangkaian kristal 20 MHz. Empat buah LED masing-masing dihubungkan dengan konfigurasi Common Anoda (sehingga perlu logika LOW untuk menghidupkan) ke RA0, RA1, RA2 dan RA3. Masing-masing LED dipasangi resistor 470 ohm untuk membatasi arus. Dua pushbutton kita konfigurasi aktif rendah (berlogika LOW saat ditekan) kita pasang masing-masing ke RA4 dan RA5, perhatikan penggunaan pullup resistor sebesar 10kohm. Sambungan ke downloader/programmer PICKit2 juga disediakan.

Gambar 1

Aplikasi yang akan kita buat adalah membaca tombol sedemikian hingga jika RA4 berlogika LOW maka LED yang terpasang pada RA0 akan berkedip-kedip, jika RA4 bernilai HIGH maka gantian RA1 yang akan berkedip-kedip…

Program selengkapnya sebagai berikut (menggunakan kompilator CCS):

// led_push01.c
// created by Agfianto Eko Putra
// this program is LED on/off
#include <16F877.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
void main()
{
 set_tris_a(0xF0);    // PORTA3,2,1,0 set as output and PORTA7,6,5,4 as input
 output_a(0x0F);      // turn OFF all LEDs at port A3,2,1,0

 while(true)
 {
   switch(input(PIN_A4))      // RA0 or RA1
   {
     case 0: output_toggle(pin_a0);   // toggle LED at RA0
             break;
     case 1: output_toggle(pin_a1);   // toggle LED at RA1
             break;
   }
   delay_ms(500);
 }
}

Categories
Mikrokontroler

PIC16F877 Microcontrollers – Introduction

If you know about Microcontoller keep read it, if don’t please read my Introduction to Microcontroller first (click here or click here, all in Indonesian language, sorry).

Do you know that not only Atmel AVR is the microcontroller. The other is PIC16F877 (or PIC16F87X: PIC16F873, PIC16F874, PIC16F876 and PIC16F877), one of the microcontoller made by Microchip Inc.. There are many families for the PIC microcontroller, the PIC16F877 is the PIC16 family. PIC16F877 is one of the most commonly used microcontroller especially in automotive, industrial, appliances and consumer applications. Take a look at the picture below… (and click it if you want more information at Microchip Inc.)

The PIC16F877 is a RISC (Reduced Instruction Set Computer) Microcontoller, which gives two great advantages:

  • The CPU only recognizes 35 simple instructions. Just to mention that in order to program other microcontrollers in assembly language it is necessary to know more than 200 instructions by heart.
  • The execution time is the same for almost all instructions, and lasts for 4 clock cycles. The oscillator frequency is stabilized by a quartz crystal. The execution time of jump and branch instructions is 2 clock cycles. It means that if the microcontroller’s operating speed is 20MHz, the execution time of each instruction will be 200nS, i.e. the program will execute 5 million instructions per second!