12F675 PWM YARDIM led parlaklığı yapmak istiyorum

Başlatan ledanimasyon, 22 Şubat 2017, 22:39:41

ledanimasyon

MERHABA;
12F675 İLE PWM KONTROLÜ YAPMAK İSTİYORUM AMA SORUNLARIM ÇIKTI BİR TÜRLÜ OLMUYOR NE AYARLARI YAPMAM LAZIM LEDİN PARLAKLIĞINI AYARLAMAKMİÇİN 12F628 DEKİ GİBİ YAZDIM OLMUYOR YARDIM EDEBİLİRMİSİNİZ.

Edit: Büyük harf ile mesaj yazmayın. Bu forum dilinde bağırarak kızarak konuşma ile eşdeğer anlam taşımaktadır.
Şimdi sen bizlere bağırmış kızmış oluyorsun yani!!!!!!!!!!!!!!!!!!!!!!!!!!!

mehmet

Yazdıklarınızı paylaşsaydınız hatalarınızı çıkarsaydık olmaz mıydı?
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

kgguler

Konu 12f675 olunca yeni başlıkta açmadım,sorum şu belirlediğim değere ulaştığımda picin çıkış vermesini istiyorum.analoG giriş kullanmak istedim.Çalıştıramadım.Yanlışım veya eksikliğim nerede olabilir.

DEFINE OSCCAL_1K 1 
DEFINE OSC 4
DEFINE ADC_BITS    10               
DEFINE ADC_CLOC   3                   
DEFINE ADC_SAMPLEUS  100 
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00000001
ham var byte
BASLA:
   ADCIN 0,HAM
   if HAM>512  then GOSUB AKTIF
   IF ham >512  then GOSUB PASIF                 
   PAUSE 50                   
   GOTO BASLA 
AKTIF: 
GPIO.1=1               
return 
PASIF:
GPIO.1=0
  return                       
goto BASLA   

ete

Sence bu iki satır da aynı işi yapmaya çalışmıyormu? birisi aktif ederken diğeri aynı değere göre pasif ediyor ve sende bir ey göremiyorsun.

   if HAM>512  then GOSUB AKTIF
   IF ham >512  then GOSUB PASIF   

Ete

kgguler

Klavyenin azizliği olmuş , (küçük/büyük) birde goto fazladan kullanmışım onu da şimdi gördüm.deneyeceğim

ete

AKTIF ve PASIF etiketlerine GOSUB ile gidip oradan GOTO ile dönüyorsun. Bu işlem sende anında Stack taşması yaratacaktır.
GOSUB ile gidilen yerden RETURN ile dönülür. Ya hepsini GOTO yap yada o etiketlerin altın goto yerine RETURN yaz.

Programına bir açılış gecikmesi ekle. Program hemen çalışmaya başlayamaz. Bir açılış süresi tanıman gerek. Bu süre içinde sistem geri planda register ayarlarını yapar her şeyi yerli yerine yerleştirip işlem yapmaya haır hale gelir. Gecikme koymadan çalışmaya başlarsan registerler tam olarak düzenlenmeden sistem çalışmaya başlar ve buda yanlış işlere yol açabilir.
En azından PASUE 200 olmalı BASLA satırından evvel.

Ete

kgguler

Düzenlemeyi yaptım ancak led her halukarda yanıyor.Simülasyonda pot var.Giriş seviyesine bağlı olarak çıkış etkilenmedi

DEFINE OSCCAL_1K 1 
DEFINE OSC 4
DEFINE ADC_BITS    10               
DEFINE ADC_CLOC   3                   
DEFINE ADC_SAMPLEUS  100 
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00000001
ham var byte
PAUSE 200

BASLA:
   ADCIN 0,HAM
   IF HAM>512 THEN gosub AKTIF
   IF HAM<512 then gosub PASIF                               
   PAUSE 50                   
AKTIF:
   GPIO.1=1
   return
PASIF:   
    GPIO.1=0
   return
   goto BASLA 

ete

Baktıkça kusur buluyor insan bprogramda.
DEFINE ADC_BITS    10          bu komut neyi ifade ediyor sence? 10 bitlik ADC okumasını ifade ediyor. Peki sen kaç bitlik ADC okuma değişkeni kullanmışsın? Byte cinsinden olduğuna göre 8 bit bu yanlış o WORD olmalı.
Program satır takip eder. Bu yazdığın kodda ADC değerinin tam 522 olma ihtimalide mevcut.
Bu durumda ne AKTIF nede PASIF'e gidebilir program aşağı devam eder. Bu nedenşe PAUSE 50 den sonr GOTO BASLA demen gerekir.

ADC tanımlamalarını şunlarla değiştir.
DEFINE ADC_BITS 10    ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 5    ' ADC clock source
DEFINE ADC_SAMPLEUS 20

Ansel registerinde bir başka pini de Analog giriş olarak tanımlamışsın ama aynı pin TRis registerinde yer almıyor. Ansel registerini düzeltmen gerek.

En sondaki GOTO BASLA komutunun bir anlamı yok. Onu oradan sil.

Programa sigorta ayarı ekle.

Ete


kgguler

Hocam bu hali ile simulasyonda çalıştı.Board üzerinde çalıştıramadım
@ device pic12F675 & WDT_OFF & PWRT_ON & PROTECT_OFF & MCLR_OFF & INTRC_OSC_NOCLKOUT

DEFINE OSCCAL_1K 1 
DEFINE OSC 4
DEFINE ADC_BITS 10             
DEFINE ADC_CLOCK 5                   
DEFINE ADC_SAMPLEUS 20 
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00000001
ham var WORD
PAUSE 200
BASLA:
   ADCIN 0,HAM
   IF HAM>512 THEN GOSUB AKTIF
   IF HAM<512 then GOSUB PASIF                               
   PAUSE 50
   GOTO BASLA                   
AKTIF:
   GPIO.1=1
   GOSUB BASLA
PASIF:   
    GPIO.1=0
   GOSUB BASLA

ete

şaka gibisin ,
   GPIO.1=1
   GOSUB BASLA
PASIF:   
    GPIO.1=0
   GOSUB BASLA
nedir bunlar?
Bu şekilde yapmanı mı söyledim ben. Öncekinde düzelttin yeniden bozdun bunları. Sebep ?
Bu program bu komutlarla kilitlenir kalır. Simuasyonda da çalışmaması gerekir.
Oralarda Return olması gerektiğini söyledim. Şevket hocanın parodisine çevirdin burayı.
Ete

Powered by EzPortal