pic12F683 ile 2 - 250 khz karedalga osilator yapımı

Başlatan exper, 09 Haziran 2013, 17:27:41

exper

Arkadaşlar Selam
hpwm ile 2 khz- 250 khz le arasında ayarlı, karedalga osilator yapmak istedim ,2den 60khz kadar düzdün çalışıyor
fakat  ayar 60khz den direkt 150 khz ye atlıyor bu arayı ayarlamıyor
yardımlar için tşk....

  Device 12F683
     Xtal =4 'MHZ
   @ CONFIG_REQ
  @ __config MCLRE_OFF & CP_OFF & WDT_OFF & XT_OSC  & CPD_OFF & BOD_OFF & PWRTE_ON     
;'****************************************************************   
DelayMS 300
    Declare CCP1_Pin GPIO.2  ' Select Hpwm port and bit for CCP1 module (ch 1)
     
    Declare  All_Digital   = On       
     Declare  PortB_Pullups = On     
        GPIO = %00000011           
'         PORTA = %00000000 : PORTB = %11111111 : PORTC = %00000000   
'****************************************************************
  Dim PWM_1 As Dword
'**************************************************************** 
  PWM_1=  ERead 0

   
While 1=1       
               If GPIO.0 =0 Then             'artır
                     While  GPIO.0 =0
                              PWM_1 = PWM_1 + 100
                             If PWM_1  > 250000 Then PWM_1 =250000
                           HPWM 1, 127 , PWM_1                ' Send a 50% duty cycle Pwm signal at KHz
                           DelayMS 50
                     Wend       
                         EWrite 0 , [PWM_1]     
               EndIf
               
               If GPIO.1 =0 Then    '   azalt
                     While  GPIO.1  =0
                               PWM_1 =  PWM_1 - 100
                               If PWM_1  < 2000 Then PWM_1 = 2000
                                  HPWM 1 ,127 , PWM_1         ' Send a 50% duty cycle Pwm signal at KHz
                                 DelayMS 100
                     Wend         
                         EWrite 0 , [PWM_1]       
               EndIf                         
Wend
  End

Maxim

birinci gördüğüm hata
EWrite komutu döngü içinde kullanılmaz
yani kullanırsın ama kısa süre sonra picin eepromu biter.
eepromun yazma ömrü var.

2-
proton kullanım kitabında derki
frequency tanımı 0 ile 32767 arasında olmalıdır
yani word tipinde.
o da 32khz falan yapıyor.
The highest frequency at any oscillator speed is 32767Hz


bence bu donanımsal ccp ile 10bit olarak yapılmalı.



exper

 EWrite 0 , [PWM_1]     sadece eepromun 0. adresine yazıyor

ferit06

Alıntı yapılan: exper - 12 Haziran 2013, 09:12:22
EWrite 0 , [PWM_1]     sadece eepromun 0. adresine yazıyor

EEPROM un . adresinin ömrü sonsuz yazmaya izin mi veriyor?  O da yaklaşık 1.000.000 nuncu periyodda yani
1.000.000/32000=31.25   sn sonra(frekansı 32 Khz kabul edersek)  yazamayacak. Ayrıca o hızda ( yaklaşık 20 uSn de) EEPROM'a zaten yazma yapamazsınız.

sezgiin

#4
Frequency is a variable, constant (0-32767), or expression that specifies the desired frequency
of the Pwm signal. Not all frequencies are available at all oscillator settings. The highest frequency
at any oscillator speed is 32767Hz.

yukarıdaki açıklamadan anlaşıldığına göre, HPWM komutunun maksimum frekans değeri  32.767khz dir. Nasıl 60khz'e kadar düzgün çalışma almışsın bilemedim ama bu frekans değerini geçmemen gerekir. yardım dosyasını incelersen anlayacaksın.

exper

EWrite 0 , [PWM_1]     sadece eepromun 0. adresine  dword değişkeni ,0-3 adres arasını doldurur,

Maxim

Alıntı yapılan: exper - 12 Haziran 2013, 23:18:13
EWrite 0 , [PWM_1]     sadece eepromun 0. adresine  dword değişkeni ,0-3 adres arasını doldurur,

ne demek istiyorsunuz anlaşılmıyor?

yada şöyle yazayım: bizim yukarıda yazdıklarımız yeterince açık değilmi?
anlamadıysanız, anlamadım diye sorun
neden ikide bir aynı şeyleri yazıp duruyorsunuz?


tekrar yazayım, gene anlamadıysanız cevap yazmanıza gerek yok

piclerin içerisinde bulunan eepromların bir yazma sınırı vardır
bu ilgili mikroişlemci için kendi datasheetinde 1.000.000 KERE denmiş.

istersen 0. adrese, istersen aynı anda 6 yere yazma yap
1.000.000 kereden sonra artık eeprom biter, yazılamaz, bozulur
ayrıca her yazma öncesi 10ms kadar bir bekleme olması istenir.

kısacası sizin yukarıdaki kod tasarım hatalıdır, kullanılamaz

exper

sevgilli maxim kardeşim...
anlaşılmayan bişey yok ben bu picin eepromuna 1000000 kere yazmıycam,sadece ayar yapınca o adrese yazacak ve orada kalacak, zaten
bu kısmı sadece ilerde bu konuya bakanlarda yararlansın diye yazdım
asıl sorun 250khz e kadar HPWM ile ,pwm uretmek ve elktrik gidip geldiğinde kaldığı yerden devam etmesini sağlamak,arkadaşların verdiği bilgiye gore, oda olmuyormuş ,32khz den yukarısını pic üretemiyomuş , ama ben tesadüf galiba 60 khz kadar çıktı sonrasıda zaten sapıtıyor...