16F628A eproma konum kaydetme sorunu

Başlatan bytex, 07 Kasım 2010, 23:11:34

bytex

öncelikle herkese merhaba, pic basic ile yeni uğraşmaya başladım sayılır. Pic in dahili epromuna write komutu ile yazdırıp read ile okuyup epromdaki değere göre istenilen adrese gitmeyi hedefleyen bir programcık yazmak istedim ama bir türlü olmadı derlediğim hex i isiste simüle ettiğimde çalışmadığını gördüm, hatam nerde olabilir acaba ? yapmak istediğim 3 tane konum var bu daha fazlada olabilir, butona her bastığında diğer konuma geçmesi o konumda iken konumu kaydetmesi, elektrik kesilip geldiğinde hengi konumda ise o konumdan başlaması


TRISA=00000111
TRISB=00000000

BUTON VAR PORTB.0
POZ VAR BYTE
READ 20,POZ


IF POZ=1 THEN GOTO KONUM1
IF POZ=2 THEN GOTO KONUM2
IF POZ=3 THEN GOTO KONUM3

KONUM1:
poz=1
WRITE 20,poz
PAUSE 10
HIGH PORTA.0
HIGH PORTA.1
HIGH PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM2
PAUSE 100
IF BUTON=1 THEN GOTO KONUM1
PAUSE 100


KONUM2:
poz=2
WRITE 20,poz
PAUSE 10
LOW PORTA.0
LOW PORTA.1
LOW PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM3
PAUSE 100
IF BUTON=1 THEN GOTO KONUM2
PAUSE 100

KONUM3:
POZ=3
WRITE 20,poz
PAUSE 10
PORTA=00000100
PAUSE 200
PORTA=00000010
PAUSE 200
PORTA=00000001
PAUSE 200
IF BUTON=0 THEN GOTO KONUM1
PAUSE 100
IF BUTON=1 THEN GOTO KONUM3
PAUSE 100

END

OG

#1
Alıntı Yapelektrik kesilip geldiğinde hengi konumda ise o konumdan başlaması

Koda bakmadım ama isis de enerjiyi nasıl kesiyorsun?

KONUM1:
poz=1
WRITE 20,poz
PAUSE 10
HIGH PORTA.0
HIGH PORTA.1
HIGH PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM2
PAUSE 100
IF BUTON=1 THEN GOTO KONUM1
PAUSE 100


Kayıt yapmaktan entegrenin ömrünü yersin. her döngüde kayıt var.

Şöyle olmalı,
IF POZ=1 THEN GOTO KONUM11  '' değiştirildi
IF POZ=2 THEN GOTO KONUM21  '' değiştirildi
IF POZ=3 THEN GOTO KONUM31  '' değiştirildi

KONUM1:
poz=1
WRITE 20,poz
PAUSE 10
KONUM11:  ' eklendi
HIGH PORTA.0
HIGH PORTA.1
HIGH PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM2
PAUSE 100
IF BUTON=1 THEN GOTO KONUM11  '' değiştirildi
PAUSE 100


diğerleri de aynı değişiklik ister
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

bytex

stop tuşuna basarak, daha önce yapılmış bazı devrelerde bu şekilde çalıştığını görmüştüm

justice_for_all

enerjiyi kesmek diilde reset atmak olur sanirim isiste...

eepromun icini gozlemliyosundegilmi simule ederken...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Erol YILMAZ

KOdda sadece EEPROM A yazma ve okuma rutinlerini bırakırsan
EEPROM işlemlerinde hata olup olmadığını test edebilirsin.

EEPROM düzgün çalışıyorsa ondan sonra diğer kısımlara geçebilirsin.

Tabi ISIS ile Gerçek ortamda bazı farklılıklar olacaktır.


bytex

isiste epromun içini nasıl gözlemleyebilirim, yani eproma yazılıp yazılmadığı isiste anlaşılabilirmi

justice_for_all

tabiki isiste debug menusun de pic eeprom memory var ilk once play tusuna basicaksin program calisinca ilerleme tusuna basicaksin yoksa o menu aktif olmaz...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

justice_for_all

bende sen stop butonuna basinca o eepromda bilgi kalmaz sonucta gercek bi pic yok bu yuzden EEPROM da yok bence durdurup calistirmak ise yaramaz pice reset atip denermisiniz bide...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

OG

Buton PORTB.0 giriş yapılmamış. Ve pull up yapmalısın.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

OG

#9
TRISA=00000111
TRISB=00000001

OPTION_REG=%00001111

BUTON VAR PORTB.0
POZ VAR BYTE
x VAR BYTE
READ 20,POZ


IF POZ=1 THEN GOTO KONUM11
IF POZ=2 THEN GOTO KONUM21
IF POZ=3 THEN GOTO KONUM31

KONUM1:
gosub buton_birak
poz=1
WRITE 20,poz
PAUSE 10
KONUM11:
HIGH PORTA.0
HIGH PORTA.1
HIGH PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM2
goto KONUM11


KONUM2:
gosub buton_birak
poz=2
WRITE 20,poz
PAUSE 10
KONUM21:
LOW PORTA.0
LOW PORTA.1
LOW PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM3
goto KONUM21

KONUM3:
gosub buton_birak
POZ=3
WRITE 20,poz
PAUSE 10
KONUM31:
PORTA=00000100
PAUSE 200
PORTA=00000010
PAUSE 200
PORTA=00000001
PAUSE 200
IF BUTON=0 THEN GOTO KONUM1
goto KONUM31

END

''''
buton_birak:
for x = 1 to 100  ''' buton rutini
pause 1
IF BUTON=0 THEN GOTO buton_birak
next

return
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

bytex

TRISA=00000111
TRISB=00000000
OPTION_REG=%00001111
BUTON VAR PORTB.0
POZ VAR BYTE
READ 20,POZ


IF POZ=1 THEN GOTO KONUM11
IF POZ=2 THEN GOTO KONUM21
IF POZ=3 THEN GOTO KONUM31

KONUM1:
poz=1
WRITE 20,poz
PAUSE 10
KONUM11:
HIGH PORTA.0
HIGH PORTA.1
HIGH PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM2
GOTO KONUM11


KONUM2:
poz=2
WRITE 20,poz
PAUSE 10
KONUM21:
LOW PORTA.0
LOW PORTA.1
LOW PORTA.2
PAUSE 100
IF BUTON=0 THEN GOTO KONUM3
GOTO KONUM21

KONUM3:
POZ=3
WRITE 20,poz
PAUSE 10
KONUM31:
PORTA=00000100
PAUSE 200
PORTA=00000010
PAUSE 200
PORTA=00000001
PAUSE 200
IF BUTON=0 THEN GOTO KONUM1
GOTO KONUM31

END



Bu şekilde derledim ama yine olmadı isis dosyasını buraya eklemem gerekirmi ? buton içinde pullup direnci eklemiştim devrede konumu değiştiriyor bir problem yok sadece eproma kaydedip doğru konuma göndermeyi beceremedim

justice_for_all

peki dedigim eeprom memory den data kaydediliyomu die baktin mi arkadasim...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

bytex

ona nasıl bakacağımı bulamadım şu an onu inceliyorum ama anlamış değilim

bytex

ama eproma bişeyler kaydediyor sanırım, stop yaptıktan sonra bir daha play yapınca butona bassamda uzun süre konumlara geçmiyor uzun süre bekledikten sonra geçiyor

justice_for_all

Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay