PIC16F688 weigert dienst

Hallo allen,

Ik heb (hopelijk) eens een eenvoudige vraag. Ik gebruik al heel wat jaren pics, allemaal hobbymatig en ik zie mezelf zeker niet als een beginner, maar expert ben ik ook zéker niet.

De 16f628a heb ik (dankzij de cursus van Frits Kieftenbelt, begonnen met 0,0 programmeer ervaring. En die cursus was super te volgen!!) vrijwel direct aan de praat gekregen. De 18f4520 met wat zoekwerk ook, maar ik wilde en pic met analoge ingangen, uart en het liefst een wat kleinere waarvoor ik op de 16f688 uitkwam.

Deze heb ik aangesloten volgens het schema in de gebruiksaanwijzing van de WISP648 (zie afbeelding) maar hij geeft geen enkel teken van leven. Na wat speuren op dit forum bleek dat dit een van de "moeilijk programmeerbare PIC's" te zijn. Eerst de jumper op de wisp op enable gezet: geen resultaat. Het schema los opgebouwd, zelfde probleem.

Hij programmeert wel, bumblebee zegt dat het allemaal gelukt is, maar een ledje laten knipperen werkt simpelweg niet. En volgens de multimeter komt er op A4 (clkout) maar liefst 1MHz uit.... wat me onwaarschijnlijk lijkt op de interne oscillator.

Ik heb heel wat threads gevonden waar mensen deze pic niet aan de praat kregen, maar dat lijken vooral problemen te zijn met het überhaupt programmeren van het ding. Ik krijg hem wel geprogrammeerd, maar hij doet alleen niks als het programmeren eenmaal klaar is.

De code die ik draai is momenteel alleen maar om even te checken of de pic überhaupt werkt. Er staat een hoop voor bereidend spul tussen voor analoge ingangen en uart. Maar dat is allemaal REM momenteel. Voor het overzicht heb ik dat er even tussenuit gehaald.

Ik hoop dat iemand me kan vertellen wat ik fout doe, want ik ben even door m'n ideeën heen.

Vriendelijke groet,

Daan Steeman

PS: Ja ik weet dat Toggle een hele foute manier is. Maar in het kader van dingen uitsluiten ben ik even helemaal back to basics gegaan ;)

pic basic code:

;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings

Device = 16F688

Config FOSC_INTOSCIO, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, CP_OFF, CPD_OFF, BOREN_OFF, IESO_OFF, FCMEN_OFF

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------
All_Digital true

opnieuw:

Toggle PORTC.3
DelayMS 500
GoTo opnieuw

End
Arco

Special Member

En volgens de multimeter komt er op A4 (clkout) maar liefst 1MHz uit.... wat me onwaarschijnlijk lijkt op de interne oscillator.

Als je de datasheet had gelezen wist je dat dat klopt... ;)
Interne oscillator is 4MHz, de clock-out is Fosc/4
Setting 'XTAL 4' ontbreekt ook...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Hoi Arco,

Dank voor je snelle antwoord. Ik heb de datasheet wel bekeken, maar nee niet alle 202 pagina's gelezen. Dat de clock out Fosc/4 was heb ik blijkbaar over het hoofd gezien.

Wat betreft de xtal. Correct me if I'm wrong, maar als je de interne oscillator gebruikt hoef je xtal niet te gebruiken toch? Dat zie ik tenminste ook niet gebeuren bij het voorbeeld met de 16f628a op picbasic.nl

Ik heb wel geprobeerd dat toe te voegen, maar ook dat heeft geen effect...

Klopt mijn vermoeden dat het feit dat bumbleblee geen foutmelding geeft betekend dat het programeren opzich goed verloopt? (En dat de schakeling op de wisp voor de "moeilijk programeerbare pics" dus gewoon zijn werkt doet)

[Bericht gewijzigd door DaanSteeman op dinsdag 5 december 2017 21:58:42 (19%)

Henry S.

Moderator

XTAL 4 moet je gebruiken.

Niet om de PIC te vertellen dat die op 4MHz moet draaien, maar je compiler moet het wel weten.

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.

Wauw dat is nog eens een snelle reactie. En ja nu je het zegt, klinkt logisch.
De nieuwe code is dan dus maar de led doet nog altijd niks. Zo'n soort stukje code is eigenlijk altijd mijn goto om te kijken of de pic niet geroosterd is of dergelijke problemen. Maar als dat al nieteens werkt zou ik niet weten waar ik moet beginnen moet zoeken

pic basic code:

;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings

Device = 16F688

Config FOSC_INTOSCIO, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, CP_OFF, CPD_OFF, BOREN_OFF, IESO_OFF, FCMEN_OFF

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------
All_Digital true
Xtal 4

opnieuw:

Toggle PORTA.3
DelayMS 500
GoTo opnieuw
Arco

Special Member

Wat langer de datasheet lezen kan toch helpen. Port A3 is alleen input; daar valt weinig te togglen... :)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ow whahaha goeie morgen. Ja ik heb me verlezen... A4 (daarboven) is AN3. In het "dit eens proberen" heb ik daar A3 van gemaakt. Maar tot nu toe teste ik met C3 En die doet ook niks. Ik heb net eens andere chips geprobeerd. Stel die ene is gewoon kapot (ookal zou ik dan niet verwachten dat ik hem dan nog kan programeren). 5 chips gekocht, 5 chips geprogrameerd en 5 keer geen knipperend ledje...

Hi,

Probeer het tris statement is...

Gr.
Roel.

Arco

Special Member

Serieweerstand led niet te laag? (Meer als 3mA source of 8mA sink geeft onbetrouwbare resultaten)

Probeer het tris statement is...

Inderdaad, anders werkt het zeker nooit... :)
(ik weet niet of Toggle de pinnen ook output maakt of niet)

[Bericht gewijzigd door Arco op dinsdag 5 december 2017 22:42:46 (14%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Normaal gebruik ik altijd netjes TRIS. Maar vanuit uitsluiten ben ik even helemaal back to basics gegaan. Toggle maakt de pinnen een output, maar doet dat bij elke instructie naar die pin waardoor het programma traag word. Daarom is toggle eigenlijk niet bepaald netjes.

Hieronder de code die ik origineel probeerde (voor het volledig back to basics). Ik heb het nu ook even geprobeerd met de toevoeging van xtal. Maar helaas, nog steeds niks

De serieweerstand is 1K zoals ik eigenlijk altijd gebruik. Het is wat hoger dan echt nodig is, maar op de 16f628a en 18f4520 werkt dat altijd probleemloos. Ik wist niet dat die pinnen zo kritisch waren daarin. In de datasheet staat dat elke pin tot 25mA mag sourcen of sinken met 90mA totaal per poort en 95mA totaal de VDD in of de VSS uit.
Iets wat volgens mij voor heel veel zo niet alle pics geld (in elk geval voor het handje vol wat ik gebruik)

pic basic code:


;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings

Device = 16F688

Config FOSC_INTOSCIO, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, CP_OFF, CPD_OFF, BOREN_OFF, IESO_OFF, FCMEN_OFF

;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------
All_Digital true
Xtal 4

Declare Hserial_Baud = 38400                                          ; Set baud rate to 38400
Declare Hserial_RCSTA = %10010000                                     ; Enable serial port and continuous receive
Declare Hserial_TXSTA = %00100000                                     ; Enable transmit and asynchronous mode 
Declare Hserial_Clear = On                                            ; Optionally clear the buffer before receiving
Declare Adin_Res 10                                                   ; an/dig converter resolutie van 8 bits
Declare Adin_Stime 50                                                 ; sampletime van 50us

         ;76543210
ADCON0 = %10000000
ADCON1 = %00000101                                                   ; ADconverter instellen
TRISA =  %00000000              
TRISC =  %00100000                                                      ;portC.4 = Tx portC.5 = RX

Symbol LED = PORTC.3
While 1 = 1

LED = 1
DelayMS 100
LED = 0
DelayMS 100

Wend

End
Arco

Special Member

De waardes die je noemt zijn de Absolute Maximum Ratings; dat zijn de waardes waarbij de pic kapot kan gaan en die je normaal niet gebruikt...
Als je meer als 3mA sourced of 8mA sinked dan kun je last van het R-M-W effect krijgen doordat toggle de actuele staat van de outputpin gebruikt...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ah juist dat geintje heb ik eerder mee lopen stoeien. Nouja 1K betekend minder dan 5mA en momenteel sourced de pin de stroom. (heb even niet de spanning voor de led paraat).Dus dat zou hooguit iets aan de riskante kant zijn (al heb ik daar met een led en 1K nooit problemen mee gehad). De toggle heb ik er al uit gehaald, ik gebruik nu gewoon netjes tris. En ik heb even geprobeerd als ik de poort laat sinken. Dan zit ik onder de 8mA. Maar ook dat geeft geen effect. De led doet echt helemaal niks

Wel goed om te weten trouwens... Toggle, high en low gebruik ik eigenlijk nooit. Ik zet de pin als in of out via tris en schrijf dan naar de poort. Maar als ik nog eens r-m-w problemen heb is dat wel iets om even naar te kijken...

Op 5 december 2017 21:54:48 schreef DaanSteeman:
...Klopt mijn vermoeden dat het feit dat bumbleblee geen foutmelding geeft betekend dat het programeren opzich goed verloopt? (En dat de schakeling op de wisp voor de "moeilijk programeerbare pics" dus gewoon zijn werkt doet)

Ja, Bumblebee kan bv geen 16F88 programmeren al staat hij wel in de lijst, xwisp kan dat wel, een 16F688 weet ik niet maar ga ervan uit dat dit ook niet kan als je al zoveel keren hebt geprobeerd.
Koop u een pickit 2 of 3 als reserve, dat heb ik ook gedaan na de problemen met die 16F88.
NB. standaard gebruik ik nog altijd de wisp628 + Bumblebee.

LDmicro user.

Hoi MGP,

Dat is vreemd, buiten het feit dat ik de 16f688 heb (niet de 16f88, of was dat de oude versie?). Bumblebee geeft aan dat het programmeren gelukt is. De wisp648 bevalt mij op zich prima en ik koop dus ook liever niet nog extra programmers. Al kan ik eens proberen of xwisp hem wel pakt.

Al blijf ik me afvragen of het programmeren de fout is. Normaal geeft de programmer een foutmelding als de pic niet bereikt kan worden, niet in programmingmodus gaat of het programma niet goed is overgekomen.
En ik heb op dit forum posts gevonden van mensen die het met de wisp648 wel konden programeren (of de 628 met de extra schakeling).

Aan de andere kant is de software zo lachwekkend eenvoudig dat ik me niet voor kan stellen dat daar de fout in zit...

Ik ben vanmiddag pas weer thuis, ik zal dan meteen xwisp even proberen. Heeft iemand toevallig nog andere ideeën?

Lambiek

Special Member

Als je haar maar goed zit, GROETEN LAMBIEK.

Hoi Lambiek,

Ik weet wat RMW is, ik heb daar al eens eerder ruzie mee gehad.
Maar ik laat momenteel een ledje knipperen met 5Hz. Toen ik RMW problemen had schakelde ik in korte tijd de poort hoog en laag, en dat ging inderdaad rare dingen doen.Maar als ik tris gebruik ipv toggle zou dat geen probleem mogen vormen toch?
Is al enige tijd geleden dat ik daar mee bezig was.

Lambiek

Special Member

Als het nu werkt is het prima toch, zelf gebruik ik ook altijd 1K voorschakelweerstanden voor de leds, nooit problemen mee gehad. Maar ik gebruik vrijwel nooit de TOGGLE functie, en als ik die gebruik zet ik ook altijd TRISA, B, C, D, E neer. Doe dat trouwens standaard, wordt door veel mensen vergeten.

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

Als je wilt weten of het programmeren goed is gegaan kun je toch een verify doen, of 'm uitlezen en de hexfiles vergelijken?

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Ja, inderdaad. Is ook iets om standaard te doen. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Toggle gebruik ik nooit in de echte software. Dat heb ik hier puur even als experiment gebruikt. Tris doe ik ALTIJD helemaal bovenin het programma voor alle poorten, ook als ik niet alle poorten gebruik.

Dat soort dingen, samen met registers voor uart, A/D converter en in sommige gevallen SPI zitten standaard in een lap code die ik altijd bovenin een nieuw pakket plak.

Verify staat (dacht ik) standaard aan in bumblebee. Al moet ik dat even controleren om het zeker te weten. Voor grote programma's schakel ik het wel eens tijdelijk uit als ik redelijk snel achter elkaar de boel herprogrammeer omdat ik iets aan het proberen ben. Normaal heb ik het altijd aanstaan. Zeker als ik de "definitieve" software in de chip schiet.

Zodra ik thuis ben zal ik die verify even controleren en xwisp eens proberen.

EDIT: Met het eten nog op het fornuis de verify gecontroleerd. Die bleek uit te staan. En tijdens het verifiëren bleek meteen het eerste adres al mis te zijn. Nog eens geprobeerd te programeren, en hij begon bij het verifiëren weer direct te mekkeren. Xwisp geprobeerd: in een flits de software er in en de led knippert meteen. Blijkbaar vind bumblebee deze chip niet leuk.

Is de 16f688 toevallig de opvolger van de 16f88? Staat me vaag iets van bij dat ik dat eens iets van gelezen heb toen ik die chip uitzocht...

Linksom of rechtsom het werkt!! Bedankt allemaal voor het meedenken!

[Bericht gewijzigd door DaanSteeman op woensdag 6 december 2017 17:36:35 (27%)