PICkit™2 Firmware'ini PIC18F25K50'ye taşıdım. Bir kontrol edilmesi gerek.

Başlatan istinaf duvarı, 22 Ekim 2023, 14:58:47

istinaf duvarı

Merhaba. PICkit2 firware'ini PIC18f2550'den PIC18F25K50'ye taşıma operasyonu yaptım. Çalışıp çalışmadığının kontrol edilmesi lazım.
UART fonksiyonunda Orjinalde RA2 (TGT_ICSP_DAT) karşılaştırıcının -'sine girilip içerden gelen voltaj referansı ile karşılaştırılıyor. 25K50'nin karşılaştırıcılarını RA2'ye bağlamanın yolunu bulamadığım için VDD_TGT_FB girişini karşılaştırıcıya girip içerden gelen 2.048V ile karşılaştırdım. (Aşağıda 32. satırdan itibaren) Özellikle buranın bir test edilmesi gerekiyor. Gerekirse buraya başka çözüm bulmaya çalışacağız.

void EnterUARTMode(unsigned char *usbindex)
{
    INTCONbits.GIE = 0;    // interrupts off

    // stop ADC interrupts
    VppVddADCTMR1_Stop();
    ADCON0 = ADC_VDD_Tgt_Ch;    // but re-enable ADC module.
    ADCON0bits.GO = 1;          // & start a conversion.

    // init UARTStatus values
    UARTStatus.TimerBaudLoadL = inbuffer[(*usbindex)++];// overhead about 3us per bit.
    UARTStatus.TimerBaudLoadH = inbuffer[(*usbindex)++];
    UARTStatus.RXbits = 0;
    UARTStatus.RXbyte = 0;
    UARTStatus.TXbits = 0;
    UARTStatus.TXByte = 0;
    UARTStatus.LastRXByte = 0;
    UARTStatus.NewRX = 0;

    // Set UART mode bit
    Pk2Status.UARTMode = 1;

    // Setup IO.  ICSPCLK = TX, ICSPDAT = RX
    tris_ICSPCLK = 0;  // output
    ICSPCLK_out = 1;    // idle
    tris_ICSPDAT = 1;  // input

    tris_AUX = 1;      // tri-state
    Vpp_ON = 0;        // VPP off
    MCLR_TGT = 0;      // release

    // Setup Comparator & Voltage Reference
 // CMCON = 0x2E;  // C2 inverted, C2 Vin- = RA2 (C1 Vin- = RA3) Mode = 110  //Aşağıdakileri denemek için 
 // CVRCON = 0xA5;      // CVref = 2.0V @ Vdd 5.0V                            //devre dışı bıraktım.
    [b]
    VREFCON0 = 0xE0;    // Bunları      //FVR aktif edip 2.048V'a ayarladık.
    CM2CON0 = 0x95;        // bir          //C2+ C12IN1-(RA1-VDD_TGT_FB) bağladık.
    CM2CON1 = 0x30;        // deneyelim.      //C2'nin -'sini FVR'e bağladık.[/b]
                        

    Delay10TCYx(12);    // delay 10us for comparator mode change / CVref settling time 

    // Setup Timers
    PIE1bits.TMR1IE = 0;    // RX timer
    PIE2bits.TMR3IE = 0;    // TX timer
    T1CON = 0x91;          // 1:2 prescale, running
    T3CON = 0x91;          // 1:2 prescale, running

    // enable interrupts
  // PIR2bits.CMIF = 0;  // clear flag            //Aşağıdakileri bir
  // PIE2bits.CMIE = 1;  // enable comparator ints.    //deneyelim.

    PIR2bits.C2IF = 0;        // Bir deneyelim
    PIE2bits.C2IE = 0;        //bakalım.
    
    

    INTCONbits.GIE = 1;    // interrupts on
}


 

ete

Aşağıdaki yazılımı kullanın bakın bakalım 25k50 yi programlayabiliyormu. Bu yazılımı geliştiren arkadaş sürekli yeni işlemcileri ekliyor. Tek arayüz hem pickit2 hemde pickit3 ile çalışıyor.
http://kair.us/projects/pickitminus/index.html

Ete

istinaf duvarı

Alıntı yapılan: ete - 22 Ekim 2023, 15:38:25Aşağıdaki yazılımı kullanın bakın bakalım 25k50 yi programlayabiliyormu. Bu yazılımı geliştiren arkadaş sürekli yeni işlemcileri ekliyor. Tek arayüz hem pickit2 hemde pickit3 ile çalışıyor.
http://kair.us/projects/pickitminus/index.html

Ete

Merhaba Ete bey.
O yazılımı biliyorum. SPI flash desteği konusunda birlikte çalıştık kendisi ile. About bölümünde yazıyor. :)

Yanlış anladınız galiba. Sorun Pickit2 ile 25k50 programlama değil. Pickit2'in ana işlemcisini PIC18F25K50 yapmak. Bunun için 2550'ye göre yazılmış olan V2.32 Firmware'i 25K50'ye uyarlamaya çalıştım.

Sorun şu, elimde hex dosyasını test edebilecek 25K50 yok şu anda.

ete

Sorunu yanlış anlamışım. Şimdi doğru anladım. 25k50 bende de yok maalesef.
Umarım elinde olan biri vardır da dener.

Ete

istinaf duvarı

25K50'de analog portları ANSELx registerlarından aktif etmek gerekiyormuş. Gözümden kaçmış. Düzelttim.

istinaf duvarı

Ete hocam, uart tool kısmında karşılaştırıcının amacı RX girişinin düşük olduğu kısımları tespit ederek kesme üretmek imiş.

ICSP_DAT pini 2V'un altına düştüğünde karşılaştırıcı çıkış üretiyor. Bu çıkış da kesmeyi tetikliyor. Bunun için 2550'de iç voltaj referansı giriliyor.

// Setup Comparator & Voltage Reference
    CMCON = 0x2E;       // C2 inverted, C2 Vin- = RA2 (C1 Vin- = RA3) Mode = 110
    CVRCON = 0xA5;      // CVref = 2.0V @ Vdd = 5.0V
    Delay10TCYx(12);    // delay 10us for comparator mode change / CVref settling time
110 modu bu şekilde
Bu eki görüntüleyemezsiniz.

25k50'de Vref yerine RA0'daki Vpp geri besleme voltajını girsek, ICSP_DAT olan RA2 pinini de artı olarak girsek aynı şeyi yapabilir miyiz?

Pickit2'deki vpp geri beslemesi 0.39'luk bir gerilim bölücüden alınıyor. VDD 5V olduğunda RA0 pini 1.8V seviyesinde oluyor. Referansımızın 2 yerine 1.8V olması problem teşkil eder mi? İlla 2V mu olması gerekir?

ete

Sen, yanlıtmak istemem ama bu şekilde düzenlenmiş bir sistemde komparatörün 2V yerine 1,8V ref voltajına göre çalışması bence yanlış olur. Bildiğim kadarı ile RX girişindeki HIGH yada LOW tespitinde 2V luk ref gerilimi esas alınıyor. Çünki Pic işlemcilerde HIGH 2V ve üzeridir LOW ise 0-1,8V aralığıdır. Sen ref gerilimini 1,8 alırsan LOW sinyal HIGH gibi algılanabilir.
İstersen sende bir araştır. Pic işlemcilerde HIGH ve LOW un voltaj seviye aralıklarına bak ona göre kendin karar ver sorduğuna.

Ete

istinaf duvarı

Hocam,
5V lojik seviyesinde 0.8 ile 2V arası nötr bölge sayılıyor. Normalde bu aradaki seviyeler high ya da low değildir. Low sinyalin high algılanması sorunu çıkacağını düşünmüyorum.


Referansı 2V'a çekmek için VPP'yi 5.5v yapmamız lazım. VPP'yi sürekli 5.5V'ta tutacak şekilde sabit bir pwm ile bu iş halledilebilir mi?

RA0'den hem vpp geri beslemesi alıp hem de karşılaştırıcıya giriş yapmak problem olabilir.

ete

0,8 üzeri nötr bölge ise işlemci bu bölgede kararsız kalmazmı sence. Karasız kaldığında ne yapılıyor onu bilmiyorum. Bunu ancak dediğin şeyi deneyerek anlamak mümkün.
Sorun çıkmaz orası doğru ama doğru çalışırmı orası belli değil.

18F25K50 içinde VFD var ve comparatör oradan referans alabiliiyor. Ayarlanabilecek dahili FVR voltajı ise 2,048V ta ayarlanabiliyor. Neden bu şekiilde direk ref vermiyorsun.Bununla ilgili olarak Data sheet de Comparatör modülde verilen açıklama aşağıdaki gibi. Bence olur bu şekilde.
Hemde orjinaline benzer şekilde halletmiş olursun.
CMXCON0 registerini FVR modülünü incelersen görebilirsin.

Setting the CxR bit of the CMxCON0 register directs an
internal voltage reference or an analog input pin to the
non-inverting input of the comparator. See
Section 22.0 "Fixed Voltage Reference (FVR)" for
more information on the Internal Voltage Reference
module.

Ete

istinaf duvarı

İşlemci nötr bölgedeki sinyalleri, yokmuş gibi kabul eder öyle davranır.  Görmedim, duymadım, bilmiyorum gibi. En azından kitaplarda öyle yazıyor. Nötr bölgedeki seviyeler direkt giriş filtrelerinde kırpılarak içeriye ulaşması engelleniyor. Bir standart oluşturmak amacıyla sanırım, nötr bölge üst seviyesi 2V'ta tutulmuş.

Onu denedim hocam.
25K50'de Vref sadece artı girişten verilebiliyor.
Artı girişe sadece RA2, RA3, ve Vref girilebiliyor.
Karşılaştırıcıların eksi girişine ise sadece RA0, RA1, RB1 ve RB3 girilebiliyor.

ICSP_DAT çıkışı ise RA2'de. RA2'yi karşılaştırıcıya girersek bu sefer Vref'i giremeyiz. Bu durumda harici referans vermemiz lazım. Orda da RA0 girişindeki Vpp geri beslemesi direkt göze çarpıyor. İlk aklıma gelen onu kullanmak oldu.

ete

Olaya benden daha fazla hakimsin. Tek çare harici giriş ise iki seçenek var. Ya sabit bir kaynak bulup oraya 2V verilecek yada kartın üzerinden bir yerden oraya 2V sevk edilecek. 1,8V ref voltajının orada çalışacağından emin değilim maalesef. Programa müdahale edilebiliyor ise ve boş bacak var ise PWM çıkışından 2V luk bir voltaj da yaratılabilir.
Ete

istinaf duvarı

Tekrar merhaba E.T.E. hocam.

Orjinal devrede MCP6001U opamp var. Bacak sırası şu şekilde. Bu bacak sırasındaki opamplar piyasada çok yaygın değil. İkinci tiptekine göre daha zor bulunuyor. Ama bulunuyor yine de. 



Genelde satılanlar bu bacak sırasındaki opamplar:
 


İkinci tipteki opamptan kullanmak sorun yaratabilir mi?
İkinci tiptekinin bacak sırası ters geldiği için IN- ve OUT hattı çipin altından geçmek durumunda. Yollar birbirine yakın oluyor gibi. Bu sorun çıkarır mı acaba?



ete

Bacak sırası sorun yaratmaz PCB yi ona göre yaparsın. Kanallara bacak yakınlığıda sorun çıkarmaz diye düşünüyorum. SMD yerleşim sisteminin ortak özelliği yada sorunu diyelim. Asıl dikkat etmen gereken şey OPAMP lar arasındaki teknik farklılık. Biri Rail to Rail ve diğeri değil ise sorun olabilir. Bunlara dikkat edip gerisini göz ardı edebilirsin.

Ete

istinaf duvarı

İkisinin de içi aynı hocam. Sadece bacak sırası farklı.
Sadece kılıfın içindeki die denilen çekirdek bölümü 90 derece döndürülmüş.

ete


Powered by EzPortal