Probleem met programmeren PIC16F675 MET hulpcircuit

beste OC'ers,

Ik heb een WISP628 en wil een PIC12F675 programmeren.
nu heb ik het extra circuit dat op het ons allen bekende PICbasic.nl staat gebouwd.

naar dat ik dit circuit net gebouwt heb blijf ik problemen houden met het programmeren van de chip.
de Error die nogsteeds optreed is: ERROR: Error sending command: W.

- ik heb al een aantal verschillende PIC16F675's geprobeerd met allemaal het zelfde resultaat.
- voeding is 100% stabiel +5V, nagekeken met de scoop.
- gesoldeerde schakeling (hieronder het plaatje) na gekeken, kan geen fout vinden...

de software die in mijn WISP628 zit is v1.11.

ik hoop dat er iemand is die mij zou kunnen helpen.
alvast bedankt!

plaatje!:
http://www.picbasic.nl/images/schema_wisp628-pic12f.gif

[edit]:
verkeerde type PIC in titel en in uitleg.
in uitleg verandert in titel niet!

ergens kan je pc niet me je wisp praten dus kijk eens die verbindingen na

kan wel identifienen.... hij herkent de progger wel en progt ook wel, maar net op het laatste moment geeft hij de error :S:S

[edit]
de chip kan ik ook gewoon identifien... communicatie met PC lijkt dus inorde

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

inmiddels aan de gang gegaan met het hulpprogramma voor XWISP2 van picbasic. nu kan ik d ePC wel programmeren, geen errors in ieder geval.
alleen lijkt de code die ik heb geschreven niet te werken, wil enkel een ledje laten branken om even te testen of alles ook echt werkt.

kan iemand even een kijkje nemen en kijken of de INIT goed is?

volgende code heb ik geproduceerd:



	  
       	list		p=12F675
		#include	"P12F675.INC"

		__CONFIG        _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
		errorlevel -302


			ORG     0x00			; START POSITIE VAN PIC12F675 PROGRAMMA.

; *********** INITIALISEER DE POORTEN *************
INIT	BCF 		STATUS,RP0 		;Bank 0
		CLRF 		GPIO 			;Init GPIO
		MOVLW 		0x07 			;Set GP<2:0> to
		MOVWF 		CMCON 			;digital IO
		BSF 		STATUS,RP0 		;Bank 1
		CLRF 		ANSEL 			;Digital I/O
		MOVLW 		0x0C 			;Set GP<3:2> as inputs
		MOVWF 		TRISIO 			;and set GP<5:4,1:0> as outputs
		CALL 		3FFh 			;Get the cal value
		MOVWF 		OSCCAL 			;Calibrate
		BCF 		STATUS, RP0 	;Bank 0

MAIN	movlw		0xff
		movwf		GPIO
		goto		MAIN

		END

BumbleBee heeft vaak problemen met de 12Fxxx PIC's.
Gebruik XWisp2, of (sinds kort) nog beter: XWisp.
Deze is vernieuwd (geen gedoe met Python meer).

Zie www.picbasic.nl/instelling_xwisp.htm

he frits,
zoals je misschien in mijn vorige post gelezen hebt ben ik aan de gang gegaan met het hulpprogramma voor XWISP2, kan het programma wel inladen, maar vervolgens gebeurt er nog helemaal niets...

kun jij dit verklaren?

en hoe run ik xwisp vanuit MPLAB?
geloof dat xwisp alleen werkt met proton toch?

XWisp werkt ook zonder Proton, maar voor meer info moet je even kijken op de site van Voti.

Heb je de 12F675 al eens met PIC Basic LITE geprobeerd of ie het dan wel doet?

uhm... nee geen pic basic gebruikt,
kan ik namelijk niet.. ik schrijf mijn code altijd in ASM...

maar code is goed? kan namelijk de code wel in laden inmiddels (met XWSIP2), maar chip doet dan nogsteeds niets :S

Ik zie geen delay lus in je assemblercode, volgens mij brandt je LED zo heel snel zoals je de code nu hebt, maar ik ben niet zo'n held in ASM.

Waar staat je vertragins-lus?

Als je met Bumblebee een 'Erase' hebt uitgevoerd, worden ook de OSCCAL bits die aan het eind van het programma geheugen staan (3FFh) gewist. Ik zie dat je gebruik maakt van deze bits en daarom haakt het programma af.
Je doet een CALL naar 3FFh en daar hoort een RETLW te staan die er niet meer is. Probeer even zonder calibratie en kijk of het dan werkt. Met XWISP kun je deze bits weer terugzetten.

@Carel M. in de datasheet van de 12F675 staat het volgende:


EXAMPLE 9-1: CALIBRATING THE INTERNAL OSCILLATOR

bsf STATUS, RP0 ;Bank 1
call 3FFh ;Get the cal value
movwf OSCCAL ;Calibrate
bcf STATUS, RP0 ;Bank 0

klopt dit dan niet?
heb nogsteeds problemen met het programmeren van de PIC :(
ga XWISP maar eens proberen.

waarom leverd deze PIC zoveel problemen op icm een (Galva-)WISP(628)??

@Frits: hoe krijg ik XWISP aan de praat zonder python? lukt voor geen meter :(

Gebruik je xwisp2w.exe?
Dit is in elk geval een versie waar je Python niet voor nodig hebt.

Op welke pen zit je LEDje?

En om te testen 'of alles het doet' is de 'blink-a-led' van voti ook wel een handig vertrekpunt.

[Bericht gewijzigd door picsels op (39%)]

heb het voor elkaar om een led op de chip te laten branden (pin 4).
volgende probleem: schakeling staat op een breadbord.
als ik de ijzeren onderplaat aanraak met mn vinger gaat de led branden.
zodra ik mn vinger weer van die plaat haal gaat hij uit!
beetje vreemd of niet??

bij het 'blink-a-led' programma van voti heb ik dit probleem niet :S

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

Jawel, dat voorbeeld is goed.

Maar je wil iets ophalen op locatie 3FFh (de fabrieksmatig aangebrachte calibratie bits) die door de "Erase" instructie van Bumblebee weggepoetst zijn. Jou programma doet dus een call naar 3FFh waar hoort te staan RETLW [cal.waarde] en die is verdwenen, dus gaat het vanaf daar fout. Bumblebee doet dat dus niet goed, het poetst alles schoon, ook die bits.

Ik lees altijd eerst even de inhoud van een nieuwe 12F629 en schrijf die bits met potlood onderop de chip voor het geval er onverhoopt iets misgaat. Mocht je een tweede exemplaar hebben (liefst uit dezelfde productielijn) dan kun je daarvan de bits bekijken en die handmatig terugzetten in de andere chip. In mijn laatste PIC stond: 34 54

@Carel M.
zou je misschien een voorbeeld kunnen mailen of eventueel hier iets plaatsen waar alles al goed in staat?
zou me eennorm helpen! :)

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

Ik heb zo'n lege chip even ingelezen Erwin. Hier zie je een schermafbeelding van Bumblebee waarin de bewuste bits rood omcirkeld zijn.

http://www.uploadarchief.net/files/download/osccalbits_12f629.png

heb het zelfde gedaan en op die plaats staat bij mij FF 3F, dit is de huidige chip.
bij een 100% nieuwe chip staat er op die plaats het volgende: 34 34

wat moet ik hier nu mee doen??
als ik zeg RETLW krijg ik een waarschuwing van MPLab en krijg een error sending command:w in bumblebee.

heb jij niet een voorbeeld hoe jij het gedaan hebt Carel?

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

Ik weet even niet wat je aan het doen bent Erwin. Je hoeft niets te doen met RETLW instructies. Ik denk dat je nog niet begrijpt wat er mis is. Klopt dat?

ja, dat klopt... ik snap niet helemaal wat ik met die waarde moet die in bumblebee opduikt.

tevens begrijp ik niet waarom het niet werkt als ik zeg CALL 3FFh...
hoe krijg ik de juiste calibratie waarde weer in op die plaats en hoe krijg ik mijn programma aan de praat?

en waarom doet 'blink-a-led'van voti het wel en mijn programma helemaal niets?
(behalve iets raars als ik mn vinger op mn breadbord leg)

ik snap niet wat ik nu moet veranderen en wat ik fout doen...

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

Je maakt gebruik van de interne RC oscillator in de PIC. Die kan je ijken (maar dat hoeft niet als het niet nodig is) door in het OSCCAL register het ijkgetal dat bij die chip hoort weg te schrijven.

Dat doe je met MOVWF OSCCAL, maar je moet eerst dat ijkgetal ergens ophalen. Dat getal staat aan het eind van het programma geheugen en is tijdens het productieproces bepaald. Door nu een CALL 3FFh te geven wordt vanaf 3FFh het ijkgetal geretourneerd naar het W-register d.m.v. de RETLW die op 3FFh staat. Dat is alles.

In jouw programma wordt wel een CALL instructie gegeven, maar er komt niets meer terug en waarschijnlijk staat er nog steeds de waarde 0x0C in het W-registor van een paar regels hoger. Daar snapt de oscillator niets van denk ik en vermoedelijk loopt hij niet eens meer. Daarom doet jouw schakeling vreemd. Haal die twee regels eens uit de code en probeer het opnieuw.

Je kunt die twee bits handmatig terugzetten maar niet met Bumblebee dacht ik. Toen ik onlangs hetzelfde meemaakte heb ik dat gedaan met Xwisp, die heeft daarvoor een apart commando: "xwisp erase patch 03ff:xxxx put" waarbij de xxxx de benodigde bits zijn. In mijn geval stond daar 03FF:3454

thx carel, via XWISP mn calibratie waarde terug kunnen zetten :)
programma werkt nog niet maar dat komt hoop ik nog ;)
LED gaat wel branden (eigen programma, dus niet blink-a-led!)maar geen knipper-effect.

code is inmiddels als volgt:


      	list		p=12f675
		#include	"p12F675.inc"

		__CONFIG        _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF  & _INTRC_OSC_NOCLKOUT
		errorlevel -302
				
; ***** DEFINES *****

; ***** EQUATES *****
TELLER		EQU		0x20
TELLER2		EQU		0x21

; *********** INITIALISEER DE POORTEN *************
INIT		BSF 	STATUS, RP0 	;Bank 1
		;CALL	3FFh 			;Get the cal value
		;MOVWF	OSCCAL 			;Calibrate
		CLRF 	ANSEL 			;Digital I/O
		MOVLW 	0x0C 			;Set GP<3:2> as inputs
		MOVWF 	TRISIO 			;and set GP<5:4,1:0> as outputs
		BCF 	STATUS,RP0 		;Bank 0

		CLRF 	GPIO 			;Init GPIO		
		MOVLW 	0x07 			;Set GP<2:0> to
		MOVWF 	CMCON 			;digital IO

		MOVLW	0xFF
		MOVWF	TELLER
		MOVWF	TELLER2

; ********** MAIN *************
MAIN		BSF	GPIO,4
		CALL	DELAY
		call	DELAY
		BCF	GPIO,4
		CALL	DELAY
		call	DELAY
		GOTO	MAIN

DELAY		DECFSZ	TELLER,1
		GOTO	DELAY
LB1		DECFSZ	TELLER2,1
		GOTO	LB1
		MOVLW	0xFF
		MOVWF	TELLER
		MOVWF	TELLER2
		RETURN

		END

ik weet niet waarom het programma niet werkt :(
is het configword wel goed? maak gebruik van interne MCLR.
nog iemand tips of weet iemand wat ik verder fout doe??

de term interne mclr ken ik niet maar ik weet wel dat er ergens een berichtje van MC is dat je beter niet de mclr_off moet gebruiken als je de interne oscilater gebruikt

mijn beste heren,
alle problemen zijn eindelijk opgelost! :D:D

voortaan als ik een delay maak maar een iets langer delay maken ;) was nu wel erg kort!

maar iedereen heel erg bedankt! vooral Carel M.!

Op 20 december 2007 22:19:39 schreef Frits Kieftenbelt:
Ik zie geen delay lus in je assemblercode, volgens mij brandt je LED zo heel snel zoals je de code nu hebt, maar ik ben niet zo'n held in ASM.

Waar staat je vertragins-lus?

Had ik je daar al niet op gewezen????