mikroC ve PIC18F4550 kitabımız hakkında

Başlatan kemalserkan, 26 Nisan 2012, 09:10:04


robomaster

Kemal Bey
Windows altında ayrı bir driver mı  kullanmak veya kurmak mı gerekiyor!

robomaster

proteus ta kullanılan usb soketin pin sıralamsı yanlış olduğu için devreyi yapanları yanlış yönlendiriyor.
bunun haricinde oradaki bağlantıları dikkate almadan doğru pin bağlantıları ile devreleriniz çalışıyor.
Saygılar

emre salman

herkese iyi günler biraz geçte kalmış olsam mikroc 18f4550 kitabını bende aldım
ve bir sorunum var çözemedim bir türlü glcd uygulamasını yapıyorum

isiste çalışıyor ama devrede çalışmıyor ccs c ile yazdım devredeki glcd ve devrede hiç bir sorun yok calısıyor ama
mikroc de 4550 ye yazınca calısmıyor sorun nerde anlamadım bu arada lcd baglantılarını degistirdim acaba ondanmı kaynaklanıyor çözebilmiş degilim

kodlar burda
#include "emre.c"
char     GLCD_DataPort  at      PORTD;

sbit     GLCD_CS1    at    LATB0_bit;
sbit     GLCD_CS2    at    LATB1_bit;
sbit     GLCD_RS   at    LATB2_bit;
sbit     GLCD_RW    at    LATB4_bit;
sbit     GLCD_EN    at    LATB5_bit;
sbit     GLCD_RST    at    LATC0_bit;

sbit     GLCD_CS1_Direction at TRISB0_bit;
sbit     GLCD_CS2_Direction at TRISB1_bit;
sbit     GLCD_RS_Direction at TRISB2_bit;
sbit     GLCD_RW_Direction at TRISB4_bit;
sbit     GLCD_EN_Direction at TRISB5_bit;
sbit     GLCD_RST_Direction at TRISC0_bit;

void main() {
ADCON1 |=   0x0F;
CMCON  |=   7;

Glcd_Init();

Glcd_fill(0x00);

while(1)
{
 glcd_write_text("ILK GLCD UYGULAMAM",0,0,1);
 glcd_write_Text("EMRE SALMAN",0,3,1);
 glcd_write_text("CANTEK AŞ",0,7,1);
 delay_ms(1000);
 
 glcd_image(glcd);
 delay_ms(1000);
 glcd_box(0,0,127,63,0);
 delay_ms(1000);
 glcd_line(0,0,127,63,1);
 glcd_line(127,0,0,63,1);
 delay_ms(1000);
 glcd_box(0,0,127,63,0);
 
}


}

erpay

LCD bağlantılarını nasıl değiştirdin ? GLCD'yi kodunda gördüğümüz bacaklara bağladıysan bir sorun olmaz.
Kullandığın mikroC lisanslı mı ?

MCansız

kodlarınızı şu şekilde değiştirin

// Glcd module connections
char GLCD_DataPort at PORTD;

sbit GLCD_CS1 at RB0_bit;
sbit GLCD_CS2 at RB1_bit;
sbit GLCD_RS  at RB2_bit;
sbit GLCD_RW  at RB3_bit;
sbit GLCD_EN  at RB4_bit;
sbit GLCD_RST at RB5_bit;

sbit GLCD_CS1_Direction at TRISB0_bit;
sbit GLCD_CS2_Direction at TRISB1_bit;
sbit GLCD_RS_Direction  at TRISB2_bit;
sbit GLCD_RW_Direction  at TRISB3_bit;
sbit GLCD_EN_Direction  at TRISB4_bit;
sbit GLCD_RST_Direction at TRISB5_bit;
// End Glcd module connections


LAT komutu yazmacı yazabilir ama okuyamaz (bu teside olabilir) bu sıkıntı çıkarabilir bundan dolayı PORT komutunu kullanın

LukeSkywalker

Lat ile alakasi yok. Cunku kontrol pinleri lat ile tqnimlanmis ama data pinleri port ile tanimlanmis. Proje dosyanizi gonderin inceleyeyim.

emre salman

sorun o değilmiş hem cs pinleri tersmiş hemde denediğim şema yanlışmış bir kaç düzenleme ile olayı çözdüm kusura bakmayın yazılımla ilgili bir sorun yokmus

muratyamak10

pic18f4550 micro ile programlama kitabı var comparator uygulaması çalışmıyor proteusta sorun proteustamı yoksa programdamı kodları yazıyorum
             void interrupt()
{
   if (cmif_bit)
   {
      if (!cis_bit)      // RA0 ve RA1 girişleri seçili ise
      {
         if (c1out_bit) portb.rb0 = 0; else portb.rb0 = 1;
         if (c2out_bit) portb.rb1 = 0; else portb.rb1 = 1;
      }
      if (cis_bit)       // RA2 ve RA3 girişleri seçili ise
      {
         if (c1out_bit) portb.rb3 = 0; else portb.rb3 = 1;
         if (c2out_bit) portb.rb2 = 0; else portb.rb2 = 1;
      }
   }
   cmif_bit = 0;         // Karşılaştırıcı kesme bayrağı sıfırlandı
}

void main() {

   trisa = 0x0f;         // RA3:RA0 giriş, diğerleri çıkış
   porta = 0;            // PORTA sıfırlandı

   trisb = 0;            // PORTB çıkış olarak yönlendirildi
   portb = 0;            // PORTB sıfırlandı

   cmie_bit = 1;         // Karşılaştırıcı kesmesi aktif edildi
   cmcon = 0x06;         // İki bağımsız karşılaştırıcı modu (CM2:CM0 = 110)
   cvrcon = 0xaf;        // Dahili voltaj referans modülü aktif edildi
                         // 3.125 volt olarak ayarlandı
   intcon = 0xc0;        // Çevresel kesmeler aktif edildi

   while(1)              // sonsuz döngü
   {
      cis_bit = 0;       // RA0 ve RA1 girişleri seçildi
      delay_us(1);       // 1 us bekle
      cis_bit = 1;       // RA2 ve RA3 girişleri seçildi
   }

}

fbkaya

Merhabalar,
kitapta İ2C anlatılıyormu ?

muratyamak10

evet anlatılıyor hocam ama i2c ile ilgili daha geniş bilgi için pic16f877 ile programlama kitabında anlatılıyor

yusuf3101

Merhabalar..

18f4550 nin 18. VUSB pini ne işe yarıyor ve o bacağa kapasitör bağlanmaz ise ne olur bilgisi olan var mı arkadaşlar.

muratyamak10

#162
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace led_kontrol
{
    public partial class Form1 : Form
    {
        byte sayi = 0;
        protected override void OnHandleCreated(EventArgs e)
        {

            base.OnHandleCreated(e);
            usbHidPort1.RegisterHandle(Handle);
        }
        protected override void WndProc(ref Message m)
        {
            usbHidPort1.ParseMessages(ref m);
            base.WndProc(ref m);
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void usb_gonder(byte veri)
        {
            byte[] dizi = new byte[usbHidPort1.SpecifiedDevice.OutputReportLength + 1];
            dizi[0] = 0;
            dizi[1] = veri;
            for (int i = 2; i < textBox1.Text.Length; i++) { dizi = 0xFF; }
            if (usbHidPort1.SpecifiedDevice != null)
            {
                usbHidPort1.SpecifiedDevice.SendData(dizi);
            }
            else
            {
                MessageBox.Show("USB cihaz hazır değil,cihazı takınız!.. ");
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlı değil!..";
            checkBox1.Checked = true;
            checkBox2.Checked = false;
        }
        private void usbHidPort1_OnSpecifiedDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı bağlandı!";
        }
        private void usbHidPort1_OnDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlandı!";
        }
        private void usbHidPort1_OnDeviceRemoved(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı çıkarıldı!";
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                usbHidPort1.VendorId = Convert.ToInt32(textBox1.Text);
                usbHidPort1.ProductId = Convert.ToInt32(textBox2.Text);
                if ((usbHidPort1.VendorId == 4660) & (usbHidPort1.ProductId == 4660))
                {
                    usbHidPort1.CheckDevicePresent();
                }
                else
                {
                    MessageBox.Show("Yanlış Vendor ID veya Product ID girdiniz!..");
                }
            }
            catch
            {
                MessageBox.Show("Vendor ID ile Product ID girmelisiniz!..");
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (textBox3.Text != "")
                {
                    if (checkBox1.Checked)
                        sayi = Byte.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber);
                    if (checkBox2.Checked)
                        sayi = Convert.ToByte(textBox3.Text);
                }
                usb_gonder(10);
            }
            catch
            {
                MessageBox.Show("Hikko USB HID (PIC18F4550) Cihazı bağlı değil!");
                textBox3.Text = "0";
            }
        }
        private void checkBox1_CheckedChanged(object sender,EventArgs e)
        {
            if(checkBox1.Checked)  checkBox2.Checked = false;
            if(checkBox2.Checked)  checkBox1.Checked = false;
            textBox3.MaxLength = 2;
            textBox3.Text = "0";
        }
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked) checkBox1.Checked = false;
            if (checkBox1.Checked) checkBox2.Checked = false;
            textBox3.MaxLength = 3;
        }
    }
}




mesaj birleştirme:: 31 Ekim 2014, 20:37:45

hocam c# arayüzünü yazdım ama herhangi bir usb cihazı bağlanmadı yazıyor sorun ne olabilirc# 2008 ve 2010 da derledim

jungemed

Alıntı yapılan: muratyamak10 - 31 Ekim 2014, 20:36:08
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace led_kontrol
{
    public partial class Form1 : Form
    {
        byte sayi = 0;
        protected override void OnHandleCreated(EventArgs e)
        {

            base.OnHandleCreated(e);
            usbHidPort1.RegisterHandle(Handle);
        }
        protected override void WndProc(ref Message m)
        {
            usbHidPort1.ParseMessages(ref m);
            base.WndProc(ref m);
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void usb_gonder(byte veri)
        {
            byte[] dizi = new byte[usbHidPort1.SpecifiedDevice.OutputReportLength + 1];
            dizi[0] = 0;
            dizi[1] = veri;
            for (int i = 2; i < textBox1.Text.Length; i++) { dizi = 0xFF; }
            if (usbHidPort1.SpecifiedDevice != null)
            {
                usbHidPort1.SpecifiedDevice.SendData(dizi);
            }
            else
            {
                MessageBox.Show("USB cihaz hazır değil,cihazı takınız!.. ");
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlı değil!..";
            checkBox1.Checked = true;
            checkBox2.Checked = false;
        }
        private void usbHidPort1_OnSpecifiedDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı bağlandı!";
        }
        private void usbHidPort1_OnDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Herhangi bir USB Cihaz bağlandı!";
        }
        private void usbHidPort1_OnDeviceRemoved(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " Hikko USB HID (PIC18F4550) Cihazı çıkarıldı!";
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                usbHidPort1.VendorId = Convert.ToInt32(textBox1.Text);
                usbHidPort1.ProductId = Convert.ToInt32(textBox2.Text);
                if ((usbHidPort1.VendorId == 4660) & (usbHidPort1.ProductId == 4660))
                {
                    usbHidPort1.CheckDevicePresent();
                }
                else
                {
                    MessageBox.Show("Yanlış Vendor ID veya Product ID girdiniz!..");
                }
            }
            catch
            {
                MessageBox.Show("Vendor ID ile Product ID girmelisiniz!..");
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (textBox3.Text != "")
                {
                    if (checkBox1.Checked)
                        sayi = Byte.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber);
                    if (checkBox2.Checked)
                        sayi = Convert.ToByte(textBox3.Text);
                }
                usb_gonder(10);
            }
            catch
            {
                MessageBox.Show("Hikko USB HID (PIC18F4550) Cihazı bağlı değil!");
                textBox3.Text = "0";
            }
        }
        private void checkBox1_CheckedChanged(object sender,EventArgs e)
        {
            if(checkBox1.Checked)  checkBox2.Checked = false;
            if(checkBox2.Checked)  checkBox1.Checked = false;
            textBox3.MaxLength = 2;
            textBox3.Text = "0";
        }
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked) checkBox1.Checked = false;
            if (checkBox1.Checked) checkBox2.Checked = false;
            textBox3.MaxLength = 3;
        }
    }
}




mesaj birleştirme:: 01 Kasım 2014, 10:37:45

hocam c# arayüzünü yazdım ama herhangi bir usb cihazı bağlanmadı yazıyor sorun ne olabilirc# 2008 ve 2010 da derledim

Bende aynı problemi yaşadım iki gün uğraştıktan sonra edit proje ayarlarına bakmak geldi aklıma :P orda Build > Platform target > x86 yap :) çıldırdım ikigündür yav saçma bi ayar yüzünden

cehennem

iyi akşamlar arkadaşlar mikroc ve 18f4550 kitabının bölüm 14 deki usb uygulamalarında veri girişi yazan uygulamaya birazdaha port ekleyip 20 mhz kristal bağlayıp çalıştırmak istiyorum ancak yazılımı 20mhz olarak ayarlayıp proteusda simüle edemedim normal arşivden çıkan hex i gösterince çalışıyor ancak benim hazırladığım kodun hexi ile çalışmıyor. bi kaç arkadas  daha aynı sorunu yaşamış sanırım config ayarları ile ilgili büyük ihtimal bu konfig ayarlarını nasıl yapmam gerekli yardımcı olabilirmisiniz.