Ynt: Pc ile Pic Verilerini Güncelleme

Başlatan BİLİRSHOP, 24 Kasım 2014, 19:57:12

BİLİRSHOP

Arkadaşlar öncelikle hepinize iyi çalışmalar dilerim.
Ben rs232 kullanarak picdeki yazılımımda kullanılan değişkenlerini kalıcı(yani pic enerji kesilip tekrar başladığında değiştirdiğim veriler çalışacak) olarak değiştirmek istiyorum.
Bu işi bootloader gibi hex dosyasıyla çalışan programlarla değilde visual studio da yazacağım daha görsel ve herkes tarafından kullanıla bilecek bir uygulama ile pic içerisindeki verileri güncellemek istiyorum.
Örneğin 16f877 ile bir ledi 500 ms aralıklarla toogle ediyorum.Ben bu devrenin üzerine koyduğum rs232 ile devreyi bilgisayara bağlayıp visual studioda yazdığım program ile picin tooglede kullandığı 500 msyi 300ms yapıp sonra devreyi tekrar yeniden başlattığımda 300 ms ile ledin toogle olmasını istiyorum.
Yani kısaca bilgisayarda basit bir ara yüzle verileri güncellenebilen bir devre yapmak istiyorum.Arkadaşlar bu benim için çok önemli basit bir bilgide olsa lütfen paşlaşın.

Arkadaşlar pc ile devre kontrol konusunu bence günümüzde çoğu ileri düzey çalışmalarda kullanılan ve daha fazla kullanılacak bir sistem.
Örneğin artık pic ile çontrol sisteminden çok taplet,bilgisayar gibi daha görsel ve kullanışlı sistemler üretiliyor.Ve bence bu sistemle çok daha güzel ve ileri düzey çalışmalar yapabiliriz.

mesaj birleştirme:: 25 Kasım 2014, 10:02:58

Şuanda vs ile yazdığım bir uydulama ile rs232 üzerinde pic i canlı olarak kontrol edebiliyorum.
Ama burada mantık uydulama bir veri gönderiyor pic bu veriyi okuyor ve eğer veri şu ise şu işi yap şeklinde çalışıyor.
Yani bilgisayar ile bağlantısı kesildiğinde picin hex dosyasında ne varsa pic onları yaplaya devam ediyor.Bilgisayardan kalıcı bir veri pice işlenmiyor

t2

#1
Önce bilgisayarlardan pice veri göndererek,
Led yakma söndürme işi yapalım.
Bu kısım tamamsa Daha sonra gelen veriyi pic, kendi hafızasına yazabilir.

Eepromu olan  piclerde bu kolay olur.
Kullandığınız picin programı hangi derleyicide yazildı? Orada eeproma nasıl kayıt yapılır? Komutunu bulmalisiniz.
Yazdığınızı geri okuyup ona göre program içinden kullanılır. 500 yerine 300ms gecikme olur.


Program hafızasına yazılacak ise iş zor. Bootloader benzeri mekanizma gerekir.

t2

16f877 içinde  eeprom vardı galiba

önce bilgisaayarı karıştırmadan eeproma veri nasıl yazılır onun komutuna bakın. zor bişey değildir. EEwrite(adres, data) gibi ufak bir komuttur ccs bilmediğim için tam olarak komutu kestiremedim.

diyelim pic 1 dakika çalıştı ledi  Sure degiskeni kadar yakıp söndürdü. bu işlemi 1 dakika boyunca yaptı. Sonra Sure degiskenini  azaltalım mesela 1000ms yerine 200ms olsun. ve bu değeri eproma yazsın. ilk adrese  yazabilir. sonrada pic dursun.

şimdi elektriği kesip pici yeniden açalım. pic ilk açılışta Sure değişkeni epromun ilk adresinde kayıtlı mı diye baksın.  kayıtlıysa orada ne yazıyorsa onu okusun sure değişkenine atasın. mesela Sure = eeread(adres) gibi bir komutla okunabilir o adreste ne varsa okuyup sure değişkenine atanmış olur

şimdi çalışam pic artık 1000 yerine 200 ms bekleyerek ledi söndürebilir. 1dk sonra  yine eproma kaydedebilir.


bu kısım tamamsa bu işleri bilgisayardan gelcek komuta göre yaptırmak daha kolay olacaktır. bilgisayardan geleni al Sure değişkenine ata ve eproma yaz denecek. pic enerjilendiğinde epromu okuyacak.

bu işlerin bootloader ile alakası yok. bootloader program hafızasına yazar yukarıda bahsettiğim ise eeprom hafızası


t2

#4
' Compiler    : PICBASIC PRO Compiler 2.6
' Assembler   : PM or MPASM
' Target PIC  : 16F, 18F with hardware USART
' Hardware    : PC hardware serial port connection
' Oscillator  : 4MHz external crystal or resonator
' Keywords    : HARDWARE USART
' Description : PICBASIC PRO program to demonstrate reading & writing
' the hardware serial port without HSERIN/HSEROUT. Defaults to 2400 bps.
'

B1 Var byte

' Initialize hardware USART
   TRISC = %10111111       ' Set TX (PortC.6) to out, rest in
   SPBRG = 25              ' Set baud rate to 2400
   RCSTA = %10010000       ' Enable serial port and continuous receive
   TXSTA = %00100000       ' Enable transmit and asynchronous mode

' Echo received characters in infinite loop
mainloop: 
   Gosub charin            ' Get a character from serial input, if any
   If B1 = 0 Then mainloop ' No character yet

   Gosub charout           ' Send character to serial output
   Goto mainloop           ' Do it forever

' Subroutine to get a character from USART receiver
charin:
   B1 = 0                  ' Preset to no character received

   If PIR1.5 = 1 Then      ' If receive flag then...
       B1 = RCREG          ' Get received character to B1
   Endif
   Return                  ' Go back to caller

' Subroutine to send a character to USART transmitter
charout:
   If PIR1.4 = 0 Then charout ' Wait for transmit register empty
   TXREG = B1              ' Send character to transmit register
   Return                  ' Go back to caller

   End


http://melabs.com/samples/PBP-mixed/usart.htm


t2

#6
hazırda kurulu picbasic yok bu yüzden deneyip gönderemiyorum.
ETE arkadaş picbasic konusunda uzmandır. kendi forumunda sorabilirseniz belki hemen cevap verebilir. hazırda denenmiş örneği de olabilir.