yazılım sorunu

Başlatan petersburg, 08 Haziran 2007, 11:32:38

petersburg

Bir robot projesi üzerinde çalışıyorum.Donanımda sorun yok ancak.Sistem kararsız çalışıyor.Altta pbp'da yazılmış kodu derledim.Ben bir hata bulamadım,derlerken de Mcs herhangi bir hata vermedi.Ancak pic'e yüklediğimde sonuç alamıyorum.PBP bilen arkadaşlar kodu inceleyebilirse iyi olur.Teşekkürler.




Sinyal_sol var bit
Sinyal_sag var bit
L var byte
C var byte

TRISB=$50        'RB6,RB4=giris,digerleri=cikis

tekrar:
    PULSOUT PORTB.0 ,170      'İleri git
    PULSOUT PORTB.0 ,130  
    PAUSE 18

    GOSUB SOLA_GONDER    'RB7 ye sinyal gönder
    Sinyal_sol=PORTB.6   'soldan gelen sinyal
    GOSUB SAGA_GONDER    'RB5 e sinyal gonder
    Sinyal_sag=PORTB.4   'sagdan gelen sinyal

IF (Sinyal_sol=0) AND (Sinyal_sag=0) THEN
     L=20
     GOSUB GERI_UZAKLIK
     GOSUB SAGA_DON
  ENDIF

  IF Sinyal_sol=0 THEN
     L=10
     GOSUB GERI_UZAKLIK
     GOSUB SAGA_DON
  ENDIF


IF Sinyal_sag=0 THEN
     L=10
     GOSUB GERI_UZAKLIK
     GOSUB SOLA_DON
  ENDIF

  GOTO tekrar            'tekrarla



SOLA_GONDER:
     C=40
geri1:
        ASM
           bsf PORTB.7
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           bcf PORTB.7
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
        ENDASM

        C=C-1
        IF C>0 THEN geri1
      RETURN

SAGA_GONDER:
   C=40
geri2:
        ASM
           bsf PORTB.5
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           bcf PORTB.5
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
        ENDASM

       C=C-1
       IF C>0 THEN geri2
    RETURN

        n var word
        t var word
        m var word
       
       
      GOTO ana_program
'
' ALT-PROGRAMLAR
'
GERI_UZAKLIK:
     m=207*L
     m=m/100
     FOR n=1 TO m
           PULSOUT PORTB.0, 130
           PULSOUT PORTB.1, 170
           PAUSE 20
     NEXT n
     RETURN

SAGA_DON:
     FOR m=1 TO 13
          PULSOUT PORTB.0, 170
          PULSOUT PORTB.1, 170
          PAUSE 20
     NEXT m
     RETURN

SOLA_DON:
     FOR m=1 TO 13
          PULSOUT PORTB.0,130
          PULSOUT PORTB.1,170
          PAUSE 20
     NEXT m
     return

ana_program:

     END

vale9

Tam olarak nasıl bir hataya neden olduğunu belirtirsen dahah iyi olur. Mesela ileri gitmesi gerekirken sürekli sağa mı dönüyor? Simulasyonda denedinmi, orda napıyor? Simulasyonda düzgün çalışıyorsa gürültü olabilir.

Ayrıca "C=C-1" kullanıyosun. sıfıra düştükten sonra tekrar 1 çıkarırsan 255'e düşer diye biliyorum, belki o sorun olabilir.
Hayat 1'ler ve 0'lardan ibarettir.

yas

Alıntı YapIF (Sinyal_sol=0) AND (Sinyal_sag=0) THEN
     L=20
     GOSUB GERI_UZAKLIK
     GOSUB SAGA_DON
  ENDIF

IF Sinyal_sol=0 THEN
     L=10
     GOSUB GERI_UZAKLIK
     GOSUB SAGA_DON
  ENDIF


IF Sinyal_sag=0 THEN
     L=10
     GOSUB GERI_UZAKLIK
     GOSUB SOLA_DON
  ENDIF

  GOTO tekrar            'tekrarla

sorundan tam olarak bahsetmemişsin ama zannedersem sorun kırmızı
ile işaretli kodlardan kaynaklanıyor. Çünkü ilk koşul sağlanınca diğerleride
otomatik olarak sağlanmış oluyor.


IF (Sinyal_sol=0) AND (Sinyal_sag=0) THEN
     L=20
     GOSUB GERI_UZAKLIK
     GOSUB SAGA_DON
  ENDIF

IF Sinyal_sol=0 AND Sinyal_sag<>0THEN
     L=10
     GOSUB GERI_UZAKLIK
     GOSUB SAGA_DON
  ENDIF


IF Sinyal_sag=0 AND Sinyal_sol<>0 THEN
     L=10
     GOSUB GERI_UZAKLIK
     GOSUB SOLA_DON
  ENDIF
  GOTO tekrar            'tekrarla