wat doe ik verkeerd

hoi
ik heb een probleem met poort a.5
deze ligt met een 1 K aan de + 5 volt en met een druk schakelaar maak ik deze laag maar dan stopt de processor
al de andere poorten werken normaal behalve porta.5
daar al de code dezelfde is voor de 5 schakelaars zou er geen verschil mogen zijn
filmpke zoals het werkt op porta.2
https://www.youtube.com/watch?v=grSezgLJYCk

hopelijk weet iemand een oplossing voor het probleem
ik kan nog altijd naar bortb.1 gaan maar dan heb ik geen controle led
de rest van de pinnen zijn allemaal bezet
gr raf

pic basic code:

Device 16F628


  Config INTRC_OSC_NOCLKOUT,_  ; Interne oscilator aan
       WDT_OFF,_             ; WatchDog Timer uit
       PWRTE_ON,_            ; Power-up Timer Enable aan
       MCLRE_ON,_            ; Externe Master Reset Enable aan
       BODEN_OFF,_           ; Brown Out Detectie Enable uit
       CP_Off                 ; Code Protection aan
All_Digital TRUE              ;Alle ingangen digitaal

 Declare Xtal = 4
  

PORTA = %00000000             ;Eerst alle PORTB uitgang registers uit (laag maken)
TRISA = %00111100 

PORTB = %00000000             ;Eerst alle PORTB uitgang registers uit (laag maken)
TRISB = %00000001 
;Variabele declareren
Declare PortB_Pullups On              ;Alle ingangen digitaal


Dim a1 As Byte
Dim a2 As Byte
Dim a3 As Byte
Dim a4 As Byte
Dim a5 As Byte

Dim positie1 As Word
Dim positie2 As Word
Dim positie3 As Word
Dim positie4 As Word
Dim positie5 As Word
Symbol knop1   = PORTA.2
Symbol knop2   = PORTA.3
Symbol knop3   = PORTA.4
Symbol knop4   = PORTA.5
Symbol knop5   = PORTB.0
Symbol relais1 = PORTB.2
Symbol relais2 = PORTB.3
Symbol relais3 = PORTB.4
Symbol relais4 = PORTB.5
Symbol relais5 = PORTB.6
;Variabelen declareren
 a1  =0
 a2  =0
 a3  =0
 a4  =0
 a5  =0
DelayMS 200

main:

While 1 = 1 
PORTB.1 = 1
If knop1 = 0 Then GoTo wissel1
If knop2 = 0 Then GoTo wissel2
If knop3 = 0 Then GoTo wissel3
'If knop4 = 0 Then GoTo wissel4
If knop5 = 0 Then GoTo wissel5

Wend

wissel1:

PORTB.1 = 0 
If a1 = 1 Then GoTo wissel1a
For positie1 = 1300 To 2200 Step 10  ;Omhoog tellen met stapjes van 20uSec
    Servo PORTA.0, positie1    ;Stuur 'Positie' pulsjes naar PORTA
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
  Next
  relais1 = 0
  While knop1 = 0 :Wend
  a1 = 1
  GoTo main
wissel1a:


  For positie1 = 2200 To 1300 Step -30 ;dit is poten vooruit
    Servo PORTA.0, positie1    ;Stuur 'Positie' pulsjes naar PORTA.0
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
    Next                      ;Terug naar WHILE  
    relais1 = 1
  While knop1 = 0 :Wend
  a1 = 0   
  GoTo main
  
 wissel2:

 PORTB.1 = 0 
If a2 = 1 Then GoTo wissel2a
For positie2 = 1300 To 2200 Step 10  ;Omhoog tellen met stapjes van 20uSec
    Servo PORTA.1, positie2    ;Stuur 'Positie' pulsjes naar PORTA
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
  Next
  relais2 = 0
  While knop2 = 0 :Wend
  a2 = 1
  GoTo main
wissel2a:


  For positie2 = 2200 To 1300 Step -30 ;dit is poten vooruit
    Servo PORTA.1, positie2    ;Stuur 'Positie' pulsjes naar PORTA.0
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
    Next                      ;Terug naar WHILE  
    relais2 = 1
  While knop2 = 0 :Wend
  a2 = 0   
  GoTo main
     
 wissel3:

 PORTB.1 = 0 
If a3 = 1 Then GoTo wissel3a
For positie3 = 1300 To 2200 Step 10  ;Omhoog tellen met stapjes van 20uSec
    Servo PORTA.6, positie3    ;Stuur 'Positie' pulsjes naar PORTA
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
  Next
  relais3 = 0
  While knop3 = 0 :Wend
  a3 = 1
  GoTo main
wissel3a:

  For positie3 = 2200 To 1300 Step -30 ;dit is poten vooruit
    Servo PORTA.6, positie3    ;Stuur 'Positie' pulsjes naar PORTA.0
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
    Next                      ;Terug naar WHILE  
    relais3 = 1
  While knop3 = 0 :Wend
  a3 = 0   
  GoTo main  
  
  
   wissel4:

   PORTB.1 = 0 
If a4 = 1 Then GoTo wissel4a
For positie4 = 1300 To 2200 Step 10  ;Omhoog tellen met stapjes van 20uSec
    Servo PORTA.7, positie4    ;Stuur 'Positie' pulsjes naar PORTA
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
  Next
  relais4 = 0
  While knop4 = 0 :Wend
  a4 = 1
  GoTo main
wissel4a:

  For positie4 = 2200 To 1300 Step -30 ;dit is poten vooruit
    Servo PORTA.7, positie4    ;Stuur 'Positie' pulsjes naar PORTA.0
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
    Next                      ;Terug naar WHILE 
    relais4 = 1 
  While knop4 = 0 :Wend
  a4 = 0   
  GoTo main 
    
    
     wissel5:

     PORTB.1 = 0 
If a5 = 1 Then GoTo wissel5a
For positie5 = 1300 To 2200 Step 10  ;Omhoog tellen met stapjes van 20uSec
    Servo PORTB.7, positie5    ;Stuur 'Positie' pulsjes naar PORTA
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
  Next
  relais5 = 0
  While knop5 = 0 :Wend
  a5 = 1
  GoTo main
wissel5a:

  For positie5 = 2200 To 1300 Step -30 ;dit is poten vooruit
    Servo PORTB.7, positie5    ;Stuur 'Positie' pulsjes naar PORTA.0
    DelayMS 20                ;20mSec = 50Hz, eventueel wijzigen bij ander type motor 
    Next                      ;Terug naar WHILE  
    relais5 = 1
  While knop5 = 0 :Wend
  a5 = 0   
  GoTo main 
Gr Raf

a.5 is nu de resetingang (MCLRE_ON), met MCLRE_OFF wordt a.5 beschikbaar gemaakt.

Als een rommelig bureau staat voor een rommelige geest waar staat dan een leeg bureau voor? - Albert Einstein.
Sine

Moderator

Ik ben niet geheel bekend met PIC, maar kun je dan ISP nog gebruiken?

klein is fijn

Moderator

Volgens mij zetten PIC programmers standaard 12V op de reset om het ding in programming mode te krijgen. De reset reageert hier altijd op, ongeacht de functie van de pin. Nadeel is wel dat de achterliggende elektronica die spanning ook voor z'n kiezen krijgt.

@ sine

ik programmeer niet als de pic op de print zit maar ik heb een K150 programmer en programmeer via deze .als dit programma werkt dan worden er een stuk of 10 van geprogrammeerd

de achterliggende elektronica is een schakelaar die aan de massa licht
ik zal die MCLRE_OFF eens proberen en laat dan wel zien of het lukt

@ electron24

bedankt want dit was de oorzaak
de de MCLR_OFF te hebben gezet is dit dus opgelost
nu de rest want nu gooit hij de poorten door elkaar

nu doet het programma helemaal niets meer
mclr_on terug gezet en reeds 2 andere processoren gebruikt maar nu loopt het niet meer
begrijpen wie kan maar ik versta er niets meer van
copy van het forum eens terug zetten misschien dat dit helpt

ok begrijpen wie kan maar alles werkt weer zoals het moet

mclr_off en de rest zoals ik het gepost had
een weerstand vervangen en dat kan ook de oorzaak geweest zijn maar ik geloof daar niet erg in dat 1 weerstand op 1 ingang voor problemen zorgt op alle ingangen

maar het werkt dus ik kan gerust gaan slapen

gr raf

Gr Raf

mag weg

[Bericht gewijzigd door raf janssens op 28 februari 2017 07:42:36 (94%)]

Gr Raf

mag ook weg

[Bericht gewijzigd door raf janssens op 28 februari 2017 07:42:46 (92%)]

Gr Raf

en deze ook

[Bericht gewijzigd door raf janssens op 28 februari 2017 07:42:55 (93%)]

Gr Raf
Sine

Moderator

Met de https://www.circuitsonline.net/images/icons/edit_message.png knop kun je je bericht wijzigen, dat voorkomt een heel gesprek met jezelf ;)