Sida 1 av 1

Fråga rörande stimulus

Postat: 21 december 2011, 21:02:04
av MrIzoard
Hej!

Jag tänkte att det var dags att prova på att använda stimulus för att prova att simulera ingångar så jag slängde ihop en liten snurra, dock får jag det inte att fungera som tänkt....

Jag är under första fliken i Stimulus dialogen (Asynch) och har där två rader, en för PIN/SFR RA3 med Action Toggle och en för PIN/SFR RA4 med Action Toggle.
När jag väljer att köra "fire" på RA3 så ser jag att PORTA ändrar värde till 0x08 vilket är förväntat, en "fire" till och den går till 0x00 vilket också är förväntat.
Däremot när jag kör "fire" på RA4 så händer det ingenting med PORTA.
Jag har provat att ändra Action till Set High för RA4 men ingen skillnad på PORTA och jag har även provat att ta bort RA3 så att den raden inte stör på något sätt men ej heller då någon förändring.

Jag stegar alltså programmet framåt steg för steg för att få min "fire" att slå så det är inte det :)

Min inställning av TRISA är följande:

Kod: Markera allt

        banksel    TRISA           ; Gör det möjligt att ställa in TRISA
        movlw      b'00011000'     ; RA3 och RA4 = ingång, övriga RA = utgångar
        movwf      TRISA
Sedan kommer det lite annat i programmet men jag tror inte det spelar någon roll för min tankevurpa är nog i något annat fundamentalt.

M.v.h.
Ulf L.

Re: Fråga rörande stimulus

Postat: 21 december 2011, 21:07:52
av Icecap
Ett snabbt tips: ange vilket program du använder, det är inte många tankeläsare här...

Re: Fråga rörande stimulus

Postat: 21 december 2011, 21:11:31
av MrIzoard
MPLAB IDE v8.80 och MPLAB SIM

Re: Fråga rörande stimulus

Postat: 21 december 2011, 23:07:11
av Swech
Du kommer troligtvis att få fler svar som inte leder någon vart eftersom
du inte har skickat med tillräckligt med info.
Om du läst samma inlägg från någon annan skulle du nog undra bl.a.
vilken processor det rör sig om.
Hur ser hela programmet ut, inte bara 3 rader du misstänker är fel.

Så. nya friska tag. Skriv mer info om vad och hur du testat så lossnar det säkert
Swech

Re: Fråga rörande stimulus

Postat: 21 december 2011, 23:23:58
av MrIzoard
Ja det var kanske lite snålt med information.

Då fyller vi på med att det är en PIC 16F690.

Koden ser ut så här för tillfället:

Kod: Markera allt

  list      p=16f690
#include <p16F690.inc>
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

my_code     code h'0000'

Start:
        banksel    TRISA           ; Gör det möjligt att ställa in TRISA
        movlw      b'00011000'     ; RA3 och RA4 = ingång, övriga RA = utgångar
        movwf      TRISA
        banksel    TRISB           ; Gör det möjligt att ställa in TRISB
        clrf	    TRISB           ; RB är bara utgångar
        banksel    PORTA

        movlw		0x00
        movwf		PORTA
        movwf		PORTB
Loop:
        bcf			PORTB,3
        btfss       PORTA,3
        bsf			PORTB,3

        bcf			PORTB,4
        btfss       PORTA,4
        bsf			PORTB,4
        goto        Loop

     end
Koden är lite misshandlad efter många försök nu....

Sedan har jag slängt ut Watch-fönstret och kollar i det på värdet för PORTA och även PORTB.
I PORTA så kan jag som sagt se när jag får RA3 att fungera som tänkt (dock får jag inte PORTB att anta rätt värde), men RA4 klarar jag inte förändra med vare sig Toggle eller Set High.

Re: Fråga rörande stimulus

Postat: 21 december 2011, 23:46:13
av JustNeed
RA4 är förmodligen analog på default. Du måste stänga av analogfunktionen för att kunna använda den som (Edit för ordmärkare) binär ingång.

Re: Fråga rörande stimulus

Postat: 22 december 2011, 00:01:18
av sodjan
JustNeed har med största sannolikhet helt rätt. Notera att MPSIM så långt
det går försöker efterlika hur den *riktiga* kretsen skulle ha reagerat på
samma kod och samma insignaler. Och då stämmer ju allt. Även
"watch" fönstret följer hur en riktigt krets skulle fungera.

Om du bara läeger till "clrf ansel" och "clrf anselh" så får du se...

Och, gör det gärna till en vana att läsa på ordentligt kring just de
delar som du tänker använda. Allt det som behövs för att undvika det
du ser finns tydligt angivet i kapitel "4.0 I/O PORTS" i databladet. Både
i själva texten, i den lilla grå rutan med "Note:" samt i exempelkoden.
Samt i stycket "4.2.1 ANSEL AND ANSELH REGISTERS" på sidan efter.

En sak är jag lite konfunderad över. Säger du att du såg ändringar på RA3
samtidigt som du körde med "_MCLRE_ON" ? RA3 borde vara bortkopplad
då du kör med extern MCLR...

Re: Fråga rörande stimulus

Postat: 22 december 2011, 07:12:53
av MrIzoard
Ja det är ju andra gången man gör bort sig med att missa att nolla ANSEL och ANSELH, nåväl repitition är väl inlärningens moder så förhoppningsvis var det min sista miss med det.

Skall även kolla upp MCLR'en när jag kommer hem.

Tack för tipsen!

Re: Fråga rörande stimulus

Postat: 22 december 2011, 10:32:36
av sodjan
Ja, efter ett par program så är det ju mer och mer ovanligt
att man skriver ett nytt program helt från ingenting. Vanligtsvis
tar man ett tidigare program och då är ju allt detta redan "på plats".