16F628A dahili osilatörü kullanım sorunu

Başlatan timselsit, 20 Mayıs 2014, 01:19:26

Maxim

boyle olmaz

gosub atla olmali
atlanin sonunda return yazmali

timselsit

@Maxim hocam kodları pic basic pro da yazdım yanlışlık olmaması lazım clock frekansını 4Mhz seçtiğimde ISIS te doğru şekilde simüle edebiliyorum.

Maxim

yanlis anladin
olmaz derken calismaz demek istemedim

her seferde goto dongusu hos degil
basitce gosub-return ile isi bitirebilirsin

timselsit

#18
@Maxim hocam her seferinde portları sıfırlamak istemiyorum o etiketi yazdığım yere gitmem lazım o yuzden return kullanamam. Ama goto lar yerine gosub kullanabilirim bunu değiştirmemin bana ne faydası olur ?

hocam bu kodu hemen derlemem lazım gerekirse üstünde değişiklikler de yapıcam. Eğer dahili osilatör işini halledemezsem devremi modifiye edip harici kristal kullanıcam. win7 32-bitte microcode studio 2.6 kullanıyorum

@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_off
@ DEVICE pic16F628A, PWRT_On
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_off
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT


kodumun başına bu satırları ekliyorum mpasm özelliğini de kapattığım halde hex derlendi gözüküyo ama devreye takınca çalışmıyo artık delirme noktasına geldim.  :'(

Maxim

demek istediğim bunun gibi birşey
bir bakarmısın

TRISA=%00001111
TRISB=%00000000
PORTA=0
PORTB=0

CMCON=7
T2CON =%00000100
PR2=49

DUTY_HAM VAR Byte
AIN_BIR VAR PORTB.5
AIN_IKI VAR PORTB.4
BIN_BIR VAR PORTB.6
BIN_IKI VAR PORTB.7



TEKRAR:
If PORTA=%00000000 Or PORTA=%00000011 Or PORTA=%00001100 Then    ' yon yok
DUTY_HAM=0
AIN_BIR=0
AIN_IKI=0
BIN_BIR=0
BIN_IKI=0
GoSub ATLA
EndIf

If PORTA=%00000101 Then    ' ileri ve saga git
DUTY_HAM=120
AIN_BIR=1
AIN_IKI=0
BIN_BIR=1
BIN_IKI=0
GoSub ATLA
EndIf

If PORTA=%00001001 Then    ' ileri ve sola git
DUTY_HAM=80
AIN_BIR=1
AIN_IKI=0
BIN_BIR=1
BIN_IKI=0
GoSub ATLA
EndIf

If PORTA=%00000110 Then    ' geri ve saga git
DUTY_HAM=120
AIN_BIR=0
AIN_IKI=1
BIN_BIR=0
BIN_IKI=1
GoSub ATLA
EndIf

If PORTA=%00001010 Then    ' geri ve sola git
DUTY_HAM=80
AIN_BIR=0
AIN_IKI=1
BIN_BIR=0
BIN_IKI=1
GoSub ATLA
EndIf

If PORTA=%00000001 Then    ' ileri git
DUTY_HAM=120
AIN_BIR=1
AIN_IKI=0
BIN_BIR=1
BIN_IKI=0
GoSub ATLA
EndIf

If PORTA=%00000010 Then    ' geri git
DUTY_HAM=120
AIN_BIR=0
AIN_IKI=1
BIN_BIR=0
BIN_IKI=1
GoSub ATLA
EndIf

If PORTA=%00000100 Then    ' saga git
DUTY_HAM=60
AIN_BIR=1
AIN_IKI=0
BIN_BIR=1
BIN_IKI=0
GoSub ATLA
EndIf

If PORTA=%00001000 Then    ' sola git
DUTY_HAM=60
AIN_BIR=0
AIN_IKI=1
BIN_BIR=0
BIN_IKI=1
GoSub ATLA
EndIf

GoTo TEKRAR


ATLA:
CCP1CON.4=DUTY_Ham.0
CCP1CON.5=DUTY_Ham.1
CCPR1L=DUTY_Ham>>2

CCP1CON.2=1
CCP1CON.3=1
Return

timselsit

#20
@Maxim hocam return komutunu yazdığımda portları da sıfırlıycak ben her seferinde bunu yapmak istemiyorum. Hocam önceki mesajımı düzenlemiştim bir daha bakar mısınız

Maxim

anlamadım tam demek istediğini ama kodları derledim

bu senin kod1:
:1000000012280310A10CA00CFF3E031801282008A1
:100010000D280404031DFF300D28831303138312DE
:100020006400080083160F30850086018312850165
:10003000860107309F000430920083163130920011
:1000400083120508003C031DFF30FF3AB800050885
:10005000033C031DFF30FF3ABA00380884003A0819
:100060000920BA00BB0005080C3C031DFF30FF3A15
:10007000BC003A083B0484003C080920BC00BD00D9
:1000800064003C083D0403194B28BE018612061289
:1000900006138613AB2864000508053C031D57288A
:1000A0007830BE008616061206178613AB28640049
:1000B0000508093C031D63285030BE008616061251
:1000C00006178613AB2864000508063C031D6F283D
:1000D0007830BE008612061606138617AB28640019
:1000E00005080A3C031D7B285030BE008612061608
:1000F00006138617AB2864000508013C031D8728FA
:100100007830BE008616061206178613AB286400E8
:100110000508023C031D93287830BE00861206169F
:1001200006138617AB2864000508043C031D9F28AE
:100130003C30BE008616061206178613AB286400F4
:100140000508083C031DAB283C30BE00861206168D
:1001500006138617AB283E1817163E1C1712BE183A
:100160009716BE1C97123E08A000A1010230042081
:0C01700095001715971521286300BC2886
:02400E00503F21
:00000001FF



bu senin 2. kod
:1000000012280310A10CA00CFF3E031801282008A1
:100010000D280404031DFF300D28831303138312DE
:100020006400080083160F30850086018312850165
:10003000860107309F000430920083163130920011
:1000400083120508003C031DFF30FF3AB800050885
:10005000033C031DFF30FF3ABA00380884003A0819
:100060000920BA00BB0005080C3C031DFF30FF3A15
:10007000BC003A083B0484003C080920BC00BD00D9
:1000800064003C083D0403194B28BE018612061289
:1000900006138613AB2864000508053C031D57288A
:1000A0005030BE008616061206178613AB28640071
:1000B0000508093C031D63287830BE008616061229
:1000C00006178613AB2864000508063C031D6F283D
:1000D0005030BE008612061606138617AB28640041
:1000E00005080A3C031D7B287830BE0086120616E0
:1000F00006138617AB2864000508013C031D8728FA
:100100007830BE008616061206178613AB286400E8
:100110000508023C031D93287830BE00861206169F
:1001200006138617AB2864000508043C031D9F28AE
:100130003C30BE008612061606138617AB286400F4
:100140000508083C031DAB283C30BE00861606128D
:1001500006178613AB283E1817163E1C1712BE183A
:100160009716BE1C97123E08A000A1010230042081
:0C01700095001715971521286300BC2886
:02400E00503F21
:00000001FF



onlar olmaz ise bunu denermisin?
:10000000012883010F308316850086018312850144
:10001000860107309F009F00043092003130831624
:100020009200831201308508031D0030A0000330C8
:1000300005020130031D0030A0040C300502013020
:10004000031D0030A00403192B28A10186120612FB
:1000500006138613842005300502031D36287830E8
:10006000A1008616061206178613842009300502A1
:10007000031D41285030A10086160612061786136C
:10008000842006300502031D4C287830A10086121A
:1000900006160613861784200A300502031D57280A
:1000A0005030A100861206160613861784200130F0
:1000B0000502031D62287830A10086160612061775
:1000C0008613842002300502031D6D287830A100BC
:1000D0008612061606138617842004300502031DB7
:1000E00078283C30A1008616061206178613842055
:1000F00008300502031D83283C30A1008612061635
:100100000613861784201128210C03181716031CC8
:1001100017128310A118831483189716831C971243
:100120000310210C95000310950C17159715080066
:04013000982899284A
:02400E00503F21
:00000001FF

timselsit

@Maxim sagolun hocam bu kodları deneyip sonucunu yazıcam

timselsit

@Maxim hocam hiçbiri çalışmadı. Hocam bende win7 32bit bilgisayar var içinde microcode studio 2.6 yüklü. Burada @ DEVICE komutunu yazınca hata veriyodu sonra biraz araştırdım ve "compile and program options" kısmından mpasm özelliğini kapattım bu şekilde derleye biliyorum ama hexlerim çalışmıyo. Hocam sizin sistem bilgileriniz nedir?

Maxim

devren hatalı olmasın?

bende xp 32bit var, picbasic ve proton+ var
ama bunlarla ilgili değil senin problem

timselsit

hocam devreyi kontrol ettim sorun yok beslemeler falan herşey doğru MCLR pinine de 5V veriyorum. Çalışmaması için bir engel yok. Siz de 16F628A'da dahili osilatörü kullanırken sorun yaşadınız mı?

Maxim

hayır hiç sorun yaşamadım
basit bir led yakıp söndürme devresi yapsan? en azından işlemci faalmi onu anlardın

MC_Skywalker

KOD1 --> HEX

:020000040000FA
:1000000012280310A10CA00CFF3E031801282008A1
:100010000D280404031DFF300D28831303138312DE
:100020006400080083160F30850086018312850165
:10003000860107309F000430920083163130920011
:1000400083120508003C031DFF30FF3AB800050885
:10005000033C031DFF30FF3ABA00380884003A0819
:100060000920BA00BB0005080C3C031DFF30FF3A15
:10007000BC003A083B0484003C080920BC00BD00D9
:1000800064003C083D0403194B28BE018612061289
:1000900006138613AB2864000508053C031D57288A
:1000A0007830BE008616061206178613AB28640049
:1000B0000508093C031D63285030BE008616061251
:1000C00006178613AB2864000508063C031D6F283D
:1000D0007830BE008612061606138617AB28640019
:1000E00005080A3C031D7B285030BE008612061608
:1000F00006138617AB2864000508013C031D8728FA
:100100007830BE008616061206178613AB286400E8
:100110000508023C031D93287830BE00861206169F
:1001200006138617AB2864000508043C031D9F28AE
:100130003C30BE008616061206178613AB286400F4
:100140000508083C031DAB283C30BE00861206168D
:1001500006138617AB283E1817163E1C1712BE183A
:100160009716BE1C97123E08A000A1010230042081
:0C01700095001715971521286300BC2886
:02400E00453F2C
:00000001FF

KOD2 --> HEX

:020000040000FA
:1000000012280310A10CA00CFF3E031801282008A1
:100010000D280404031DFF300D28831303138312DE
:100020006400080083160F30850086018312850165
:10003000860107309F000430920083163130920011
:1000400083120508003C031DFF30FF3AB800050885
:10005000033C031DFF30FF3ABA00380884003A0819
:100060000920BA00BB0005080C3C031DFF30FF3A15
:10007000BC003A083B0484003C080920BC00BD00D9
:1000800064003C083D0403194B28BE018612061289
:1000900006138613AB2864000508053C031D57288A
:1000A0005030BE008616061206178613AB28640071
:1000B0000508093C031D63287830BE008616061229
:1000C00006178613AB2864000508063C031D6F283D
:1000D0005030BE008612061606138617AB28640041
:1000E00005080A3C031D7B287830BE0086120616E0
:1000F00006138617AB2864000508013C031D8728FA
:100100007830BE008616061206178613AB286400E8
:100110000508023C031D93287830BE00861206169F
:1001200006138617AB2864000508043C031D9F28AE
:100130003C30BE008612061606138617AB286400F4
:100140000508083C031DAB283C30BE00861606128D
:1001500006178613AB283E1817163E1C1712BE183A
:100160009716BE1C97123E08A000A1010230042081
:0C01700095001715971521286300BC2886
:02400E00453F2C
:00000001FF


timselsit

@Maxim led yakma sönderme devresi yaptım yerel osilatör çalışıyor ama benim kodu atınca bir türlü çalıştıramıyorum. Hocam yazdığım kodlarda bir hata var mı size zahmet bir bakar mısınız? (Kodlarda yerel osilatörü kullanarak PWM üretiyorum ve duruma göre duty değerini değiştiriyorum)

@MC_Skywalker hocam teşekkür ederim ama sizin çevirdiğiniz kodlarda çalışmadı. Hocam sizde bir zahmet kodlarda bir hata var mı bakar mısınız?

Maxim

ne yaptigini ve semani detayli anlatmadigin surece bu is cozulmez