Ufuk Sevim ufuk.sevim@itu.edu.tr C ile mC 1. Hafta Ufuk Sevim ufuk.sevim@itu.edu.tr
Eğitimin Amacı Mikroişlemci (mP) ve mikrodenetleyicileri (mC) kullanabilmek Gömülü C dilini detaylarıyla öğrenmek Datasheet okuyabilmek Devre şeması okuyabilmek Verimli, okunabilir, genişleyebilir, güvenilir kod yazabilmek Doğabilecek problemleri daha oluşmadan engelleyebilmek Temel mühendislik görüşlerini oturtabilmek …
Eğitimin İşlenişi Katılım Ödevler (7 Adet) Proje (1-2 Adet) Ödev gözden geçirme seansları Yapılan yanlışları düzeltme Daha iyi yapabilme seçenekleri Daha iyi yapılabilmesini sağlayan yeni bilgiler
mP ve mC Nedir? İşlemci Bilgisayar Mikro İşlemci Mikro Denetleyici
Çevre Birimleri (Peripherals) Kalıcı Hafıza (ROM: Flash, EEPROM, vs) Geçici Hafıza (RAM) PIO (Parallel Input Output) Zamanlayıcı (Timer) USART (Universal Synchronous Asynchronous Receiver Transmitter) ADC (Analog Digital Converter) PWM (Pulse Width Modulation) SPI (Serial Peripheral Interface) TWI (Two Wire Interface) USB (Universal Serial Bus) …
Nasıl mC Seçilir? Ne İstiyorum? Nereye Bakmalıyım? Kısa zamanda çok iş yapsın Maksimum işlemci frekansı MIPS (Million Instruction Per Second) Yapacağım özel iş için gerekli olan çevre birimleri (Örnek: ADC) Bu çevre birimleri var mı? Varsa kaç tane var? Olanlar ihtiyacımı karşılıyor mu? Büyük bloklar halinde veri işleyebilsin Kaç bitlik işlemci kullanıyor? (8/16/32) Çok az enerji harcasın Uykuda ve istediğim çalışma frekansında çektiği akım ne kadar? Çok güvenilir olsun Ne kadar zamandır piyasada? Ne kadar farklı projede kullanılmış? Silikon hataları hangi seviyelerde? Gelecekte de kullanılabilsin Üretimden kaldırılmış mı? Yeni ve eski seriler birbirleriyle uyumlu mu? Çok ucuz olsun Toplu alımlarda fiyat nedir?
mC Seçiminde Diğer Hususlar Üreticisinden sunulmuş güzel bir kaynak var mı? Problemsiz çalışan bir derleyicisi var mı? O mC için özelleşmiş bir IDE var mı? IDE içinde bir simülatör var mı? Bu IDE, derleyici ve simülatör pahalı mı? Kolay ve sorunsuz debug edilebiliyor mu? İyi yazılmış bir “errata” dökümanı var mı ve bu hatalar çok mu? Header dosyaları, örnek kodları var mı? Bu mC’yi kullanan bir kitle var mı? Problem destek hatları var mı? …
PIC16F877 Özellikleri Özellik Değer Üretici Microchip İşlemci veri yolu genişliği 8 bit Maksimum işlemci frekansı 20 MHz Çevre Birimleri Zamanlayıcı x3 (8 bit x2 + 16 bit x1) USART x1 ADC x8 (10 bit) PWM x2 SPI/I2C
PIC16F877 Özellikleri (Devam)
Neden PIC16F877? Elimizdeki geliştirme kartlarında kullanılıyor. Çok iyi yazılmış bir datasheeti var, dolayısıyla yeni başlayanlar için ideal Güzel ve ücretsiz bir IDE’si var (MPLAB) IDE’si Proteus ile ortak çalışabiliyor. Simülasyon yapma imkanları çok geniş Piyasada bulunması kolay …
mC’nin İç Yapısı http://abstrusegoose.com/98
mC’nin İç Yapısı (Devam) http://abstrusegoose.com/secret-archives/under-the-hood
mC’nin İç Yapısı (Devam)
mC’nin İç Yapısı (Devam) http://www-mdp.eng.cam.ac.uk/ web/library/enginfo/mdp_micro/lecture1/lecture1-3-1.html
Min C Gereksinimleri - Değişkenler [niteleyici] <tip> <isim> = [değer]; char x = 0; short x = 0; int x = 0; float x = 0; double x = 0; unsigned char x = 0; unsigned int x = 0;
Min C Gereksinimleri – if/else Yapıları if(<koşul>){ <iş> }else if(<koşul>){ }else{ } if(0 == x){ // kulağına su kaçır }else if(0 < x){ // eşeğe ters bin }else{ // zorunda mıyım? }
Min C Gereksinimleri – for Döngüsü for(<ilk işler>; <koşul>; <döngü işi>){ <iş> } for(i = 0; i < 42; i++){ if(i % 10){ continue; } // osman'a bağır if(cevab){ break; } } if(42 == i){ // cevab veremedi
Min C Gereksinimleri – while Döngüsü while(<koşul>){ <iş> } while(++zaman){ // iç // seviş // uyu }
Min C Gereksinimleri – Fonksiyonlar <dönüş tipi> <fonksiyon adı> (<parametre tipi> <parametre adı> [, diğer parametreler]){ <parametrelere bağlı iş> } int seviş(int kişi_id, short pozisyon){ // CENSORED } if(0 < seviş(5, 2)){ // oh yeah
MPLAB ve PROTEUS ISIS
Yemekhane vs. AVM 19:08:46