PIC12f1822 hakkında

hakanbasar

Üye
Katılım
29 Ara 2018
Mesajlar
8
Puanları
1
Yaş
47
Merhaba arkadaslar , Arduinoda çalışan aşağıdaki programı PIC12F1822 de kullanabilirmiyim ? Internal Osc mevcut diye ve maliyeti daha düşük olduğu için pic kullanmak daha mantıklı sanırım.

void setup() {

pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(4000);
digitalWrite(LED_BUILTIN, HIGH);
delay(3000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
exit(0);
}
 
Evet aynı işi yapabilirsin ama
pic i programlamak için pickit3 (pickit2 belki) programlayıcı alman gerekecek +100TL ,
yani bir tane yapacaksan daha pahalıya gelir.

Elinde arduino varsa atmega çipleri arduino ile programlayabiliyorsun diye biliyorum,
böyle bir çözüm olabilir.

En güzeli bluepill denen STM32F1 mikrodeneleyicili kit (1,5 - 2 Dolar) ve
STLink V2 (2 dolar) alıp arduino ide üzerinden STM32 programlayabilirsin.
İleride cubemx ile tanışıp daha güzel işler yapabilirsin.
 

Elimde pickit3 ve bolca 12f1822 var . bu sebeple kolay olacagını dusundum sadece bu kodları pıc diline cevırmem gerekıyor. bu konuda yardım alabilirsem iyi olacak.
 
Kendin yazmak yapmak istiyorsan yardımcı olayım,
yok bir defa lazım diyorsan ledi hangi bacağa bağlayacaksın vs.
şema çiz hex dosyası göndereyim, basit bir program.

Kendin yapacaksan muhtemelen pic ile uğraşmadın,
arduinoya en yakın kullanabileceğin CcsC ide si var,
link gönderirim indirir kurarsın,
onun üzerinden 5 dakikada yazarsın programını,
hatta yapacaksan youtubedan CcsC dersleri adında birkaç video izleyebilirsin.

---------------------------------------------------------------------------------------
CcsC için kod şu şekilde,
ekte Proteus 8.6 şema ve CcsC proje dosyası var:

Kod:
#include <main_12F1822_Led_Show_20181231_0900.h>
#define LED1 PIN_A0 //veya PIN_A1, PIN_A2, PIN_A4, PIN_A5,
//(PIN_A3 reset pini çıkış olarak kullanılamaz.)

void main()
{

   while(TRUE)
   {
output_low(LED1);
delay_ms(4000);
output_high(LED1);
delay_ms(3000);
output_low(LED1);
delay_ms(1000);
   }

}

Proje dosyaları indirme linki:
http://www.mediafire.com/file/p52or5trfxq53ka/12F1822_Led_Show_20181231_0900.7z
 
Son düzenleme:
Çok teşekkür ederim , evet pic ile hiçbir şey yapmadım . Arduino ile yeni başladım . komutların aynımı farklımı olduğunu bilmiyordum , yazdıklarınız yardımcı oldu. Finalde break ekledim sadece bu hareket her start verildiğinde bir sefer olacak . CCS compiler de denedim hersey ok.
Amaç ; bir sefer solidstate röle açıp kapatacağım bu hareketle , led değil. Çok teşekkür ederim tekrar..
 
Devre enerjilendiğinde sadece bir defa o komutları çalıştırmasını istiyorsanız
şu şekilde yazmalısınız:
(Bir önceki mesajda gönderdiğim kod sürekli aynı hareketi tekrarlar.)
Kod:
#include <main_12F1822_Led_Show_20181231_0900.h>
#define LED1 PIN_A0 //veya PIN_A1, PIN_A2, PIN_A4, PIN_A5,
//(PIN_A3 reset pini çıkış olarak kullanılamaz.)

void main()
{
output_low(LED1);
delay_ms(4000);
output_high(LED1);
delay_ms(3000);
output_low(LED1);
delay_ms(1000);

   while(TRUE)
   {

   }

}
 
CCS compiler 'de düzgün çalıştı . tüm verileri Build ile dışarı aldım . Hex dosyasını pickit3 ile entegreye yükledim ( X IDE 5.10 ) ama entegre , compiler 'deki gibi devrede çalışmadı . Configuration Bits ayarlarından INTCLK kapalı idi , ON yaptım ( 32Mhz) Değişiklik olmadı Sanırım diğer ayarlarda bir hata var. Ekran çıktısını alta ekledim..
 

Ekli dosyalar

  • 12f1822.JPG
    120.7 KB · Görüntüleme: 7
MCLR pinini ON yapmışsın (RA3),
eğer ON yaparsan 4.7k ~10k bir direnç ile bu pini +5V a bağlaman gerekir yoksa
işlemci sürekli reset durumunda kalır.

INTCLK ON olacak.

Verdiğin Ekran görüntüsü MpLabX e benziyor,
program yüklemek için kullanıyorsun sanırım,
gerek yok pickit3 ün stand alone programmer programlayıcı pc programı var, kullanabilirsin.

"there" yazan linkten indirebilirsin:
https://www.microchip.com/forums/FindPost/1009106
If you mean the Windows GUI application - it is there.
 
C:
#include <12f1822.h>
#fuses NOMCLR,NOWDT
#use delay(internal=20000000)
#define LED1 PIN_A0
void main(){
    output_low(LED1);     
    delay(4000);
    output_high(LED1);
    delay(3000);
    output_low(LED1);
    delay(1000);

    while(true){  

    }
}
 
Çok teşekkürler... Evet bu şekilde çalıştı ; ( int osc 32Mhz ve delay'e _ms ekledim)
dediğiniz gibi Mclr açık olduğundan ve programın içinde belirtilmediğinden çalışmamış..
Kısa sürede bayağı bilgi edindim sayenzde ve iyi bir başlangıç oldu

include <12f1822.h>
#fuses NOMCLR,NOWDT
#use delay(internal=32000000)
#define LED1 PIN_A0
void main(){
output_low(LED1);
delay_ms(3000);
output_high(LED1);
delay_ms(1000);
output_low(LED1);
delay_ms(3000);

while(true){

}
}
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…