PIC BASIC PRO Öğreniyoruz soru cevapları

Başlatan aster, 19 Mayıs 2005, 17:33:33

reccom

Merhaba arkadaşlar ben 16f628i 3.3v ile çalıştırmak istiyorum ama başarılı olamadım, bunu daha önce yapan varsa yardımcı olabilirmi, yaptığım araştırmalarda  brown out detection ı kapat diyolar ama onuda denememe ramen olmadı.

deneme yaptığım program

TRISA=1
TRISB=0
'@DEVICEpic16F628
'@DEVICEpic16F628_WDT_ON
'@DEVICEpic16F628_BOD_OFF
'@DEVICEpic16F628_LVP_OFF
'@DEVICEpic16F628_PWRT_ON
'@DEVICEpic16F628_PROTECT_OFF
'@DEVICEpic16F628_MCLR_OFF
'@DEVICEpic16F628_INTRC_OSC_xt
CMCON=7
PORTB=0
PORTA=0

MAIN:
IF PORTA.1=1 THEN
GOTO BASLA
ENDIF
GOTO MAIN

BASLA:
PAUSE 300
PORTB.0=1
PAUSE 100
PORTB.0=0
PAUSE 1000

GOTO MAIN
END

Şimdiden teşekkürler
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

dursuncemal

#421
yanilmiyor isem burada bir buton kontrolu yapiyorsun . IF PORTA.1=1 bu sorgunun cevabini dogru alabilmen icin port anin trisa.1 ini giris secmen lazim.  mainin ustune TRISA.1 = 1;

ayrrica a portunun 1. pininne - den 4.7 k gibi bir direnc atmalisin. var ise semanı yayinlarsan daha iyi yardimci olalim.

not:eger herhangi bir portun herhangi bir pininden veri okuyacaksan o pini giris olarak ayarlamalisin. cikis alacaksan cikis olarak ayarlamalisin.
:=

ete

Programın başında TrisA=1 diyerek PortA.0 pinini giriş yapmış oluyorsun ama sen PortA.1 pinini kullanıyorsun.
Baş tarafa ya TrisA=2 veya TrisA.1=1 veya INPUT PORTA.1 şeklinde komut eklemen gerekiyor.
Yada bu hali ile main kısmındaki kodu ,
If portA.1=1 yerine,
If portA.0=1 then şeklinde değiştirmen gerekiyor.

Başarısızlığının sebebi 3,3v değil kodun yanlış olması.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

reccom

#423
Arakadaşlar program entegreye yüklendiğinde 5 v verince istediğim gibi çalışıyor 3.3v a düşürünce çalışmıyor, programda sıkıntı yok.Daha önce 3.3v ile program yazıp çalıştıran yokmudur, ekstradan programa bişeylermi dahil etmemiz gerekiyor ?

Porta=1 dersek bütün a portları giriş oluyor diye biliyorum, bugünekadarki bütün denemelerimde hep böyle olmuştu, yanılıyormuyum acab ? çünki program 5v da sıkıntısız çalışıyor.
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

reccom

#424
Tekrardan merhaba herkese
sorunu kısmen çözdüm, daha öncede bahsettiğim gibi Borrow out off yapıldığında 3.3v da çalışıyor on iken çalışmıyor, kısmı sorunum şudur:

Picbasic de borrow nasıl off ediliyor bilmiyorum ama ASM de   __CONFIG _...&_BODEN_OFF&_....  yazınca  3.3v da çalışıyor boden on iken çalışmıyor, bunu bizzat deneyerek test ettim,

Pic basic de ise BOD_OFF, BODEN_OFF, BODE_OFF,BOR_OFF hatta hepsinin ON varyasyonlarını gibi varyasyonlar denedim ama hiçbirinde sonuç alamadım, bir fikri olan varmıdır.

(Bu arada boden ın anlamı daha doğrusu brown out voltaj düşüklüğü ve eğer 4v yada 3.7 gibi değerler altına düşerse pic gerilimi otomatik resetleme yapıyor tabi BOD (brown out detect) kapalı değil ise )
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

Maxim

@reccom
öncelikle 16F628A 3.3 volt ile çalışmak istiyorsan 16LF628A versiyonunu satın almalısın
doğrusu bu, çünkü minicik bir parazit yada beslemede en ufak bir dalgalanmada işlemci reset atar.

L versiyonu 10mhz ve altında 3 volta kadar çalışır diye yazıyor datasheette ama
bu 3.3 volta çok yakın ve ara sıra sıkıntı çıkarabilir dediğim gibi.

LF versiyonu ise 4mhz ve altında 2 volta kadar çalışabilir demişler.

her iki vesiyonda 10mhz üzerinde 3.3 volt ile asla çalışmaz!!
sizin osc hızınız nedir bilmiyorum.

gelelim Brown-out reset devresini kontrol eden BOREN (BOR) registerına
yeni nesil işlemcilerde BOR reset voltajını seçebiliyorsun ama 16F628A da belli aralık içerisindeymiş bu
yazdığına göre normalde besleme 4 volt ve altına düşerse reset atar
ama bu değer 3.65 v ile 4.4 volt aralığında.. yani 4.2 volt altına düşersende reset olabilir yada 3.7 volt ve altında da.

görüldüğü üzere bor yazmacının düşük voltaj kullanımında mutlaka kapatılması lazım
bu config ayarlarında proton+ da BOREN_ON yada BOREN_OFF olarak geçiyor 16F628A için
picbasic aynı olabilir ama kesin emin değilim.

reccom

Maxim cevap için teşekkürler öncelikle
Kullandığım kristal 4mhz , ve basit butonla led yakma ve söndürme işlemlerini asm ile 3.3v da gerçekleştirdim ama picbasic de aynı işlemleri yapamıyorum. LF serisi ile ilgili araştırma yapmıştım ama 3.3v da F serisini asm kodları ile çalıştırınca LF alma ihtiyacı duymadım, bakalım basic ilede çalıştırabilecekmiyim.

Basic de sadece borrow out u kapatmak yeteli oluyormu ve nasıl kapanıyor hala arayış içindeyim
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

Maxim

şöyle olmalı

@ DEVICE pic16F628A                
@ DEVICE pic16F628A, BOD_OFF                               
@ DEVICE pic16F628A, WDT_OFF              	'Watch Dog timer kapalı
@ DEVICE pic16F628A, PWRT_ON             	'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF          'Kod Koruma kapalı
@ DEVICE pic16F628A, MCLR_off           	 'MCLR pini kullanılmıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
CMCON=7 
Define OSC 4


reccom

microcode studio da yazdığımdan sizin yazdıklarınızı kabul etmedi program ,bende şu şekilde düzelttim ama sonuç hala b0 portundan çıkış alamıyorum

TRISA=%11111111
TRISB=%00000000

@ DEVICEpic16F628A               
@ DEVICEpic16F628A_BOD_OFF                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON                
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_MCLR_OFF              
@ DEVICEpic16F628A_INTRC_OSC_NOCLKOUT   
CMCON=7
Define OSC 4
PORTB=0
PORTA=0

MAIN:
IF PORTA.1=1 THEN
GOTO BASLA
ENDIF
GOTO MAIN

BASLA:
PAUSE 100
PORTB.0=1
GOTO BASLA
END
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

Maxim

şunu hex olarak işlemcine yüklermisin
çalışmaz ise başka sorun vardır, belki işlemci bozuktur vs vs

:100000000000000000002A28A301A200FF30A20780
:10001000031CA307031C26280330A100DF30122095
:100020000628A101E83EA000A109FC30031C1B2802
:10003000A00703181828A0070000A10F18282018EF
:100040002128A01C252800002528080083138312DE
:10005000031308008301FF30831685008312850196
:10006000831686018312860107309F009F00851C3E
:100070003A283B2837286430042006143B283F28C0
:02400E00103F61
:00000001FF

reccom

evet bu program çalışıyor, bu bana gönderdiğiniz config ayarları ilemi yazıldı ? buraya yazılımıda mesaj atabilirmisiniz
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

Maxim

tabi, o hex bu (proton da yazıldı)

Device = 16F628A
Config FOSC_INTOSCIO, WDTE_OFF, PWRTE_ON, MCLRE_OFF, BOREN_OFF, LVP_OFF, CPD_OFF, CP_OFF
Declare Xtal=4

TRISA=%11111111:PORTA=0
TRISB=%00000000:PORTB=0 
All_Digital = TRUE
CMCON=7

MAIN:
If PORTA.1=1 Then
GoTo BASLA
EndIf
GoTo MAIN
 
BASLA:
DelayMS 100
PORTB.0=1
GoTo BASLA

reccom

Maxim uraşların için teşekkürler ama hala bi sonuca varamadım ben zten asm ile bu işi yapmıştım basic ile neden olmuyor onu anlamaya çalışıyorum
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]

Maxim

benim kodlar çalıştığına göre demekki picbasic tarafında bir yanlışlık var
ete abiye sorarsan 1 dakikada sorunu çözer :)
http://www.etepic.com/

reccom

#434
ete abi dediğin bir iki mesaj önce yazan ete isimli kullanıcımı ? Eğer oysa mesajından anladığım kadarı ile pek çözememiş gibi
mail [email]gungor.h@hotmail.com[/email] daha fazla devre ve uygulama için resme tıkla [/url]