16F1827 yeni nesil pic.

Başlatan F®T, 30 Aralık 2014, 19:21:59

BİDİL

4x7 segment display-16F1827  thermometre tamamlandı. Hocam çok teşekkür ederim ilginize.
DEFINE OSC 4
ASM
  __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
  __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _LVP_OFF & _STVREN_OFF
ENDASM

OSCCON = %01101000          '4 mhz internal clock, PLL off


DEFINE ADC_BITS 10 ' 10 bit A/D Conversion
DEFINE ADC_CLOCK 1
DEFINE ADC_SAMPLEUS 5 ' 5 uS A/D sample time

TRISA = %00000010           'RA1 input, all others output
TRISB = %00000000


ANSELA =%00000010      ' AN1 on PortA.1 analog
ANSELB =%00000000      ' Digital inputs
'ADCON0=%00000101
ADCON1=%10010000          'right justified, clock = fosc/8, neg ref = Vss, pos ref = vdd
FVRCON = 0
DACCON0 = 0
DACCON1 = 0
INTCON = 0
CM1CON1 = 0
CCP1CON=0
CCP2CON=0

HAM      VAR     WORD           
ISI      VAR     WORD
ONDA     VAR     BYTE
index    var     BYTE
X        VAR     WORD 
SAYI     VAR     BYTE
TOPLAM   VAR     WORD
I        VAR     BYTE

SYMBOL  DTA=PortB.1
SYMBOL  CLK=PORTB.0


BASLA:
TOPLAM=0
FOR I=1 TO 10
ADCIN 1,HAM
TOPLAM=TOPLAM+HAM
NEXT I
HAM=TOPLAM/10
ISI=Ham*/1243
ONDA=ISI//10
ISI=ISI/10

       X= (ISI DIG 1):GOSUB AL
       SHIFTOUT DTA,CLK,1,[SAYI]
       HIGH PORTB.2:PAUSEUS 5:LOW PORTB.2
       
       X= (ISI DIG 0):GOSUB AL
       SHIFTOUT  DTA,CLK,1,[SAYI]
       HIGH PORTB.3:PAUSEUS 5:LOW PORTB.3
             
       X=10:GOSUB AL
       SHIFTOUT  DTA,CLK,1,[SAYI]
       HIGH PORTB.4:PAUSEUS 5:LOW PORTB.4
             
       X=11:GOSUB AL
       SHIFTOUT  DTA,CLK,1,[SAYI]
       HIGH PORTB.5:PAUSEUS 5:LOW PORTB.5
       PAUSE 200
GOTO BASLA

AL:    LOOKUP X,[63,6,91,79,102,109,125,7,127,111,99,57],SAYI :RETURN

END

Hattuşa

arkadaşlar bu tip (içerisinde DAC barındıran) işlemci ile sinüs formunda sinyal üretebilirmiyiz? aklıma interrupt içinde DAC çıkışını değiştirerek yüksek olmayan sinüs sinyali çıkartabiliriz diye düşünüyorum. olabilirmi?

Mucit23

Elbette olur.

Sabit frekansta DAC ye Sinüs fonksiyonuna ait dataları basman gerekir

Mesela 8 Bit DAC için sinüs sinyal çıkamada aşağıdaki tablo kullanılabilir
sine256[]  = {
127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,
242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,
221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78,
76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,
33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124
};
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Sinüs üretmekle kullanılabilir sinüs üretmek elbette aynı şeyler değiller. Bu işlemcilerde 5 bitlik dac modülü var ve bunu kullanılabilir sinüs elde etmek için yeterli olacağını sanmıyorum.
Mucit , 8 bitlik dac dataları vermiş ki bu entegrelere tatbik edilemez. Edilemez derken kendi dac modüllerine tatbik edilemez ama harici dac entegresi kullanılarak her zaman yapmak mümkün elbette.

Ete

Hattuşa

arkadaşlar işlemci ile kontrol edebileceğim ve ortalama 30-40 khz e kadar sinüs üretebilecek bir devreye ihtiyacım var. daha önceden AD9850 yi kontrol etmiştim ama onun çıkışı 1v dolaylarındaydı, çıkışı bozmadan 5-10v seviyelerine çekmek oldukça zordu, sizin tavsiyeleriniz nedir?

F®T

"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Hattuşa

#81
slm arkadaşlar;
işlemci ile 3-5 belirli seçenekli sinüs üretmem gerekiyor 20 khz ile 200 khz arası aşağıdaki resimdeki gibi sinüsü oluşturmak istersek
direnç+cond.+bobin değerlerini neye göre belirlememiz gerekiyor, örneğin 33 khz için bu elemanların değeri nasıl hesaplanır

umitco

#82
   Konuyu hortlatacağım ama sorunum konuyla alakalı yeni bir konu açmak istemedim.

   16F1827 yi 25 Mhz hairci osilatörle çalıştırmaya çalışıyorum ama MPASM Errror 101 hatası veriyor , bu hatayla ilgili bir döküman bulmakda zor.

    "Error[101] c:\pbp\pbp2.60\pbppi14e.lib 104 : ERROR: (Invalid OSC Define.)"

   Konu içerisinde bir arkadaş 25mhz üzeri çalıştıramadığını söylemiş.Bu işlemciyi 25Mhz ile çalıştırabilirmiyim ? Derleyici PBP 2.60. Osc olarak HS osc tanımlı (osc ayarlarını .inc dosyasından yapıyorum)

Yardımcı olacak arkadaşlara şimdiden teşekkür ederim

ete

16F1827 data sheet'ine bakılırsa 32Mhz lik harici kristal'e kadar çalışabilir. Ancak tanımlamaları dikkatli yapmak gerek.
Harici osilatör ayrı bir şey harici kristal ayrı bir şey. HS tanımlaması yalnızca harici kristaller için kullanılabilecek bir sigorta tanımlamasıdır. Harici osilatör için _FOSC_ECH kullanılması gerekir.
Ete

mehmet

#84
http://ww1.microchip.com/downloads/en/DeviceDoc/41391D.pdf


 


Bu tabloya göre kristal ile en fazla 20MHz kadar
çalışabilmekte. Ancak; harici sinyal ile, iç osilatör
ile ve uygun harici kristal + PLL ile 32MHz 'e ulaşılabilir.

Harici 8MHz kristal ve PLL ile 32MHz direk çalışır.
Ama iç osilatör ile 32MHz çıkmak için "C" de bir kaç
satır ilave yapmak gerekiyor.
Bildiğim kadarıyla Proton 'da bu sorun yok...


Ek:
@pro-TR Hocam, bu biraz fikir verebilir. Hesaplama
kısmını bilmiyorum. Bir kaç oynayarak bir şeyler
elde edilebilir. Tabii simülasyon yüksek frekanslara
çıkamıyor.
http://tinyurl.com/y8acer53
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

ete

iki ayrı data sheet olsa gerek. Benim elimdeki data sheette böyle şeyler yazmıyor. Aynı konu için bendeki ne demiş bir bakalım;
The oscillator module can be configured in one of six
clock modes.
1. EC – External clock.
2. LP – 32 kHz Low-Power Crystal mode.
3. XT – Medium Gain Crystal or Ceramic Resonator
Oscillator mode.
4. HS – High Gain Crystal or Ceramic Resonator
mode.
5. RC – External Resistor-Capacitor (RC).
6. INTOSC – Internal oscillator
Gerçekten enteresan. Daha öncede başıma gelmişti. Hangi işlemci hatırlamadım ama iki datat sheet den birisi 1,8-5V arasında çalışır diyor idi diğerinde ise yalnızca LF modeli 1,8V-5V aralığında çalışır diyor idi. Test ettiğimde birinci alternatifin doğru olduğunu anlamış idim.
Ete

umitco

#86
   Mpasm .inc dosyasını incelerken bahsettiğiniz osc seçeneğini görmüş ve denemiştim ama yine aynı hatayı vermişti ete hocam.
   Osilatör yanlış tabir oldu kristal benim kullandığım. Kodları vereyim diyeceğim ama yalnızca define OSC 25 ile bile hata veriyor.Yani kodlardan kaynaklı değil.

inc dosyasındaki ayarlarımda böyle
__config _CONFIG1, _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _CLKOUTEN_OFF
__config _CONFIG2, _PLLEN_OFF & _LVP_OFF & _LVP_OFF

_FOSC_HS ayarını sizinde tavsiye etiğiniz gibi _FOSC_ECH ilede denemiştim.

Yardım isteğinden sonra datasheete tekrar baktım.Yabancı dilim yok ama birkaç yerdeki tablodan Mehmet hocamında dediği gibi en fazla 20mhz ile çalışabileceğini düşündüm ve yeni ayarları 20mhz göre ayarlamaya çalışıyorum.
   32Mhz ile çalıştırıyordum şu ana kadar fakat 4 kanal pwmyi full kullanıyorum ve ortam sıcak oluyor. Picprojedeki bir yazıda işlemcinin ısıdan dolayı 32 Mhz de sorun çıkarabileceğini okudum.Zaten anlamsızca birçok kere programda takılmalar ve sapıtmalar oluyordu.Bu yüzden harici kristale dönmek istedim.


EK: Hocam verdiğiniz osc ayarı (_FOSC_ECH) harici clock çıkışı girişi için olabilir mi ?  Mpasm inc doyasındaki alıntı

_FOSC_ECH        EQU  H'FFFF'    ; ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin

mehmet

#87
Hem F1827 hem de LF1827 1.8 - 2.5V aralığında
çalışmakta. Ancak 16MHz kadar osilatör frekansı
seçebiliyoruz. 16MHz den daha hızlı çalışmak istersek
Vdd gerilimi en az 2.5V olmalı.

@umitco;
Harici clock çıkışı değil de, harici clock girişi olacak.
Zira "Figure 5-1" incelendiğinde OSC2 ucu direkt
olarak MUX 'a gidiyor.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

umitco

  Düzeltme yaptım Mehmet hocam , 20Mhz de problemsiz çalışıyor şu  an , cevaplar için ikinizede teşekkürler.

Powered by EzPortal