Beste mensen,

als eerste: ik werk met een PIC16F628, meest standaard pic die er zoon beetje is dus ;)

ik ben al enkele dagen bezig met het prutsen aan mijn PIC microcontroller. nu heb ik alle code klaar en het doet (volgens mij) precies wat ik wil.

het enige punt is nu dat ik geheel PORTB niet geinit krijg op input en van PORTA RA4 krijg ik niet op output.RA5 is MCLR dus die hangt met een weerstand van 10K aan de +5V en word verder niet gebruikt.

de volgende kode gebruik ik voor de INTI van mijn porten




list		p=16f628
		#include	"p16F628.inc"

		__CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT		
		errorlevel -302
				
; ***** DEFINES *****
hier staan wat defines die ik nu weggelaaten heb.

; ***** EQUATES *****
hier staan wat equates die ik nu weggelaaten heb.

			ORG     0x00				; START POSITIE VAN PIC16F628 PROGRAMMA.

; *********** INITIALISEER DE POORTEN *************
INIT		CLRF 	PORTA 			; Initialize PORTA by
						; Setting output data latches
			MOVLW   0x07		; LAAD DE JUISTE WAARDE VOOR DE COMPARATOR
	                MOVWF   CMCON		; ZET HET COMPARATOR REGISTER OP NORMALE 

			BSF	STATUS,RP0	; SELECTEER DE JUISTE GEHEUGENBANK
			BCF	STATUS,RP1	; ZET BANK 1 ACTIEF
			MOVLW   0x00		; ZET DE IO VAN POORT A OP OUTPUT
			MOVWF	TRISA		; VOER HET UIT

			MOVLW	0x00		; POORT B INPUT
			MOVWF	TRISB		; VOER HET UIT
			BCF	STATUS,RP0	; ZET BANK 0 ACTIEF			

is er iemand die mij kan zeggen wat ik fout doe? zie ik misschien iets over het hoofd?? speciale functies di in het configword uitgezet moeten worden??

alsvast bedankt!

Om geheel poortB als input te configureren moet je FF naar TRISB schrijven.
RA4 is waarschijnlijk input-only of uitgang met open-collector, kan je in de datasheet terugvinden.

hou er rekening mee dat ra4 sink only is

inmiddels schrijf ik 0xFF naar TRISB maar werkt nogsteeds niet. de bank blijft op OUTPUT staan (0x00).

@allen: RA4/TOCKI/CMP2 (staat in het datasheat)

dus RA4 is onderdeel van de comparator, maar die staat goed als het goed is...

[Bericht gewijzigd door Red-E op (39%)]

Controleer eens in MPSIM of de bits RP0 en RP1 van het STATUS-register ook daadwerkelijk goed staan, op het moment dat er naar TRISB geschreven wordt.

oke... kun je me daar even mee helpen?? heb dat nog niet zo vaak gebruikt en weet niet precies hoe het werkt... neem aan dat je de register inhoud van TRISB wilt weten op het moment dat er naar geschreven word en de inhoud van het statusregister?

Omdat je schreef "de bank blijft op output staan" nam ik aan dat je dat in MPSIM bekeek :)
Even in de datasheet kijken waar RP0 en RP1 precies zitten in het STATUS-register. In MPSIM kun je doen: View- specialfunctionregisters, en dan het STATUS-register in de gaten houden terwijl je de simulator stap voor stap door de init van je progje laat lopen.

Op 10 juli 2007 18:27:03 schreef Red-E:
inmiddels schrijf ik 0xFF naar TRISB maar werkt nogsteeds niet. de bank blijft op OUTPUT staan (0x00).

Hoe constateer je dat?

ow dat bedoel je ;) dat gebruik ik wel vaker ;) daar had ik ook la naar gekeken en het lijk allemaal goed te gaan :( krijg ook gewoon FF in mijn TRISB... kan alleen geen input simuleren :S dat wil nu ook nog niet lukken...

@picsels: zie in mijn watch 0086 TRISB 0xFF staan.. dus is op input gezet ;) nu nog simuleren of het werkt :S maar hoe meot dat?

Wat is watch0086???
Als je 'ziet' dat er FF in TRISB staat dan zijn het op zeker ingangen hoor.

je kan in MPLAB een watch openen waar je al je belangrijke registers in zet en dat ding heet een watch... en daar staat dus dat trisb 0xFF is...

nu wil ik alleen nog weten hoe ik een ingang kan simuleren:S

Kies Debugger, stimulus, en dan 'asynch'.
Dan kun je de gewenste pin en actie invoeren.