12f509 433 MHz RF uygulaması

Başlatan kabuskerim, 28 Ocak 2010, 12:03:39

kabuskerim

Merhaba Arkadaşlar,

12F serisi ile uzaktan kumanda yapma çalışmalarım var. Daha önce kumanda PCB ve dizgisini kendim yaptığım için 12F675 kullanmış idim. F675 ile serout ve serin komutları işimi görmüştü ancak piyasadan aldıgım hazır bir kumandanın icinde F509 kullanılmakta.

proton F509 işlemcisi için serout ve serin komutlarını kabul etmemekte, Bu komutların yerine kullanabileceğim bir komut veya mantık var mıdır? elinizde örnek kod var ise mantığını anlayabilmem için paylaşabilir misiniz?

mustafa_cmbz

509 u sök yerine 675 tak...sök tak yani :)

Maxim

12F509 da neden serout - serin çalışmasınki ??

kabuskerim

proton compiler versiyonu
3.2.5.5

Bu sebeple bu komutları kabul etmiyor olabilir mi? uyarı 12 bit core işlemcilerde bu komutlar kullanılamaz şeklinde.

Maxim

oooo konu derinmiş meğerse ..


Limited 12-bit Device Compatibility
The 12-bit core PICmicro microcontrollers have been available for a long time, and are at the heart of many excellent, and complex projects. However, with their limited architecture, they were never intended to be used for high level languages such as BASIC. Some of these limits include only a two-level hardware stack and small amounts of general purpose RAM memory. The code page size is also small at 512 bytes. There is also a limitation that calls and computed jumps can only be made to the first half (256 words) of any code page. Therefore, these limitations have made it necessary to eliminate some compiler commands and modify the operation of others.



While many useful programs can be written for the 12-bit core PICmicros using the PROTON+ Compiler, there will be some applications that are not suited to these devices. Choosing a 14-bit core device with more resources will, in most instances, be the best solution.

Some of the commands that are not supported for the 12-bit core PICmicros are listed below: -



Command and Reason for Omission

DWORDs Memory limitations
FLOATS Memory limitations
ADIN No internal ADCs
CDATA No write modify feature
CLS Limited stack size
CREAD No write modify feature
CURSOR Limited stack size
CWRITE No write modify feature
DATA Page size limitations
DTMFOUT Limited stack size
EDATA No on-board EEPROM
EREAD No on-board EEPROM
EWRITE No on-board EEPROM
FREQOUT Limited stack size
LCDREAD No graphic LCD support
LCDWRITE No graphic LCD support
LDATA Page size limitations
HPWM No 12-bit MSSP modules
HRSIN No hardware serial port
HRSOUT No hardware serial port
HSERIN No hardware serial port
HSEROUT No hardware serial port
INTERRUPTS No Interrupts
PIXEL No graphic LCD support
PLOT No graphic LCD support
READ Page size limitations
RESTORE Limited memory
SEROUT Limited memory
SERIN Limited memory

UNPLOT No graphic LCD support
USBIN No 12-bit USB devices
USBOUT No 12-bit USB devices
XIN Limited stack size
XOUT Limited stack size


Trying to use any of the above commands with 12-bit core devices will result in the compiler producing numerous SYNTAX errors. If any of these commands are a necessity, then choose a comparable 14-bit core device.

The available commands that have had their operation modified are: -

PRINT, RSOUT, BUSIN, BUSOUT

Most of the modifiers are not supported for these commands because of memory and stack size limitations, this includes the AT , and the STR modifier. However, the @, DEC and DEC3 modifiers are still available.




Programming Considerations for 12-bit Devices

Because of the limited architecture of the 12-bit core PICmicro microcontrollers, programs compiled for them by PROTON+ will be larger and slower than programs compiled for the 14-bit core devices.

The two main programming limitations that will most likely occur are running out of RAM memory for variables, and running past the first 256 word limit for the library routines.

Even though the compiler arranges its internal SYSTEM variables more intuitively than previous versions, it still needs to create temporary variables for complex expressions etc. It also needs to allocate extra RAM for use as a SOFTWARE-STACK so that the BASIC program is still able to nest GOSUBs up to 4 levels deep.

Some PICmicro devices only have 25 bytes of RAM so there is very little space for user variables on those devices. Therefore, use variables sparingly, and always use the appropriately sized variable for a specific task. i.e. BYTE variable if 0-255 is required, WORD variable if 0-65535 required, BIT  variables if a true or false situation is required. Try to alias any commonly used variables, such as loops or temporary stores etc.

As was mentioned earlier, 12-bit core PICmicro microcontrollers can call only into the first half (256 words) of a code page. Since the compiler's library routines are all accessed by calls, they must reside entirely in the first 256 words of the PICmicro code space. Many library routines, such as BUSIN, are quite large. It may only take a few routines to outgrow the first 256 words of code space. There is no work around for this, and if it is necessary to use more library routines that will fit into the first half of the first code page, it will be necessary to move to a 14-bit core PICmicro instead of the 12-bit core device.



No 32-bit variable support for 12-bit devices

Because of the profound lack of RAM space available on most 12-bit core devices, the compiler does not allow 32-bit DWORD type variables to be used. For 32-bit support, use on of the many 14, or 16-bit core equivalent devices.

Floating point variables are also not supported with 12-bit core devices.

Compatible 12-bit Devices.

10F200
10F202
10F204
10F206
12C508
12C509
12F508
12F509
12CE508
12CE509
RF509AF
RF509AG
16C54
16F54
16C55
16C57
16F57
16C58

Some of the above devices have derivatives such as the 16C54B etc. These are also catered for by the compiler.

Maxim

size yatmadan önce tok karnına rsin ve rsout tavsiye ediyorum .
çünkü onlar listede yok, çalışır heralde ?

kabuskerim

teşekkürler @maxiboost,

Benzer bir dokumanı incelemiştim. Bugun sabahtan bu yana RSin ve Rsout üzerine çalışıyorum. skopta kontrol ettiğim zaman kumandadan sinyal gittini ana kart üzerinde ölçebiliyorum ancak gönderdiğim değerleri alıcı taraftaki pic kabul etmiyor ve devre çalışmıyor.

VERİCİ KISIM

Device 12F509

  GPIO=0
TRISIO=%00000111


BILGI var Byte

Declare RSOUT_PIN GPIO.4
Declare RSOUT_MODE 0
Declare SERIAL_BAUD 300
ana:

BILGI=0

If GPIO.0=0 Then GoTo sec1
If GPIO.1=0 Then GoTo SEC2
If GPIO.2=0 Then GoTo SEC2



GoTo ana

sec1:
BILGI=25
GPIO.5=1
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut $aa,$00,$ff
RSOut "a","a","a", bilgi

GPIO.5=0
DelayMS 250
GoTo ana



SEC2:
BILGI=55
GPIO.5=1
RSOut $aa,$aa,$aa,$aa,$aa

RSOut $00,$00,$00,$00,$00

RSOut $ff,$ff,$ff,$ff,$ff

 RSOut "a","a","a", bilgi


GPIO.5=0
DelayMS 250
GoTo ana


ALICI KISIM

K VAR Byte
TRISIO=%00100000
ANSEL=0
CMCON=7
kod2 var Byte
i var Byte
bilgi1 var Byte
bilgi2 var Byte
bilgi3 var Byte
bilgi4 var Byte
ALICI var Word
Declare RSIN_PIN GPIO.5
Declare SERIAL_BAUD 300
Declare RSIN_MODE 0
GPIO.1=0


main:

RSIn Wait ("aaa"), alici

     
If ALICI=25 Then GoTo anahtar1
If ALICI=55 Then GoTo anahtar2


GoTo main

anahtar1:


GPIO.0=1

For i=0 To 1
GPIO.1=1
DelayMS 250
GPIO.1=0
DelayMS 250
Next

GoTo main

anahtar2:

GPIO.0=0

For i=0 To 1
GPIO.1=1
DelayMS 500
GPIO.1=0
DelayMS 250
Next

GoTo main


Sürekli kodlar ve baudratelerde değişiklik yaptım ancak beceremedim.


Göz atabilir misiniz gözden kaçırdığım bir kısım var mı?

Maxim

proteus ile beraber verebilirmisin

kabuskerim

@mustafa_cmbz'ın önerisini dinleyerek olayı çözüldü ama tatmin edici bir durum olmadı açıkcası.

Programcılığımı geliştirmek için çabalıyorum. Piyasa daki devreleri toplayarak inceliyorum kim neyi nasıl yapmış diyerek devreleri çalıştırmaya çalışıyorum. Öğrenmenin yolu pratikten geçiyor pratik yapmadan bir ilerleme de sağlanamıyor.

RF konusunda çok fazla devre ve bilgi kirliliği var. Büyük marketlerde RF zillerle karşılaşmışssınızdır. 9,90 a satılıyor bu da neredeyse alıcı verici yapısından daha ucuza geliyor. Açıp baktığım zaman vericide olayı sadece bir bobin, bir mcu, zener ve bfr93 ile bitirmişler saw vs eklenmemiş.

Başka bir konu ise PIC ile 2262 serisini iç içe kullananlar ve/veya sadece kumanda da kullananlar. SAdece kumanda da kullanarak alıcı tarafı picle çözenleri alkışlıyorum :) çok denedim ama bunu da başaramadım.

PIC te sinyal üretip göndermenin 2262 lere kıyasla çok fazla güç harcayacağı yaygın olarak söyleniyor. iki durumu test edecek zamanım da olmadı acıkcası.

Ağır bir sağlık problemi nedeniyle uzun süre geri dönemedim.


Yardımlar için teşekkür ederim.