Proton IDE Lite ikm Pic 10F200

Hallo allemaal,

Ik ben een beginnende programmer op het gebied van PICs en liep tegen hetvolgende probleem aan.

Ik heb de Pickit 2 aangeschaft en de programmer daarvan succesvol geinstalleerd. De meegeleverde compiler krijg ik echter niet geinstalleerd.

Nu heb ik meerdere compilers geprobeert en eigenlijk is de Proton IDE lite de enige die ik werkend krijg. Voor een 16F628A althans. Voor de 16F690 en de 10F200 krijg ik echter een error: Unrecognised PICmicro type.

Kan iemand (in noob taal) uitleggen wat ik fout doe en hoe ik dit fix?

Bij voorbaat dank

Martin

De gewone versie aanschaffen? (de 10f200 wordt in de demo versie niet ondersteund)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Dat is natuurlijk een optie, maar is er geen gratis versie van een andere compiler die ook de 10F200 aan kan? Ik vind het aanschaffen van de full version een behoorlijke investering voor mij als beginnende hobyist.

Neem de Mikrobasic Pro compiler. Tot 2k zonder licentie te gebruiken.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Je kan ook MPLAB X installeren en de bijbehorende XC8 compiler. Deze kan je van de website van microchip.com downloaden.
Deze ondersteunt alle 8-bit PIC's en de officiele ICD en PICKIT tools.

Het is wel in C programmeren, dus niet met Basic of andere exotische taal.

Dank allen voor de response. Ik heb inmiddels de MPLAB X geinstalleerd met de bijbehorende XC8 compiler. Maar dan? Ik zit al dagen te pielen, maar krijg niks voor elkaar, erg frustrerend.

Doe ik bijvoorbeeld:

code:


#include <pic.h>
main()
{
}

Dan lijkt alles normaal te werken, maar zodra ik ook maar iets probeer te programmeren, dan loopt het spaak. Ik heb wel eerder geprogrammeerd en ook als ik stukjes rechtstreeks van het internet copieer krijg ik ook allerlei foutmeldingen.

Heeft er iemand misschien een simpel stukje code wat ik kan knippen en plakken, dan heb ik misschien een basis om vanuit te beginnen.

En waarom moet ik eigenlijk die pic.h includen? En moet ik ook 10F200.h includen op dezelfde manier.

Nou dat waren weer een hoop vragen. Ik hoop dat iemand me kan helpen zodat ik eindelijk eens kan beginnen met wat leuks te maken.

Alvast bedankt

ritmeester

Golden Member

Laat een LED knipperen op een PIC18F4620 op poort RD0. Met deze code check ik altijd of de hardware op een bread board goed is aangesloten. Let wel: zonder extern crystal.

c code:


#include <stdio.h>
#include <stdlib.h>


#include <p18f4620.h>
#include <delays.h>

// Use internal oscillator. Disable reset pin,
// watchdog timer and low voltage programming.

#pragma config OSC = INTIO67
//#pragma config OSC = HS
#pragma config MCLRE = OFF
#pragma config WDT = OFF
#pragma config LVP = OFF

void main(void)
{
    // Set RD0-3 as digital outputs, RD4-7 digital inputs
    TRISD = 0b11110000;

    // Keep flashing an LED on pin RD0 indefinitely
    while(1)
    {
        LATDbits.LATD0 = 1; // Set RD0 high
        Delay10KTCYx(10);   // delay for 10x40ms
        LATDbits.LATD0 = 0; // Set RD0 low
        Delay10KTCYx(10);   // delay for 10x40ms
    }
}
I love it when a plan comes together !

Bedankt, maar helaas toch nog 1 warning en 1 error.

Ik heb #include <p18f4620.h> vervangen door #include <pic10f200.h>

Daarover zegt hij, Header file pic10f200.h included directly. Use #include <htc.h> instead.

Dan de error.

Over delays.h zeg hij: no such file or directory.

Die warning, is dat erg? En hoe solve ik die error?

Gisteren met Pickit 3 begonnen na jarenlange afwezigheid in deze materie. Liep tegen dezelfde problemen aan:
delay.h kun je vinden in de directory xc8, includen in je project.
ik moest niet htc.h maar xc.h includen. Volgens mij ook in je project.
Daarnaast file namen gebruiken zonder spatie's, met vond de compiler (of linker) ook niet leuk.

Maar na een uur of 4 had ik mijn eerste ledje knipperen :-)

Ik heb delays.h ge-add aan de header folder, maar toch krijg ik dezelfde error.

Daarnaast begrijp ik ook niet helemaal wat dit programmaatje doet, welke poort wordt er nu aangestuurd?

Dat staat er toch: LATD0 (ofwel RD0)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ik ben nieuw hierin, als ik op de datasheet van de pic kijk zie ik poort 1 tm 8, welke is dan RD0?

En weet u hoe dat zit met die delays.h die niet herkend wordt?

Op 21 december 2013 17:48:44 schreef Martin83: En waarom moet ik eigenlijk die pic.h includen? En moet ik ook 10F200.h includen op dezelfde manier.

Bij een functieoproep zoals bv Delay10KTCYx(10);doe je eigenlijk niets anders dan code oproepen welke iemand ooit voor jou geprogrammeerd heeft. Alhoewel je die code niet in detail hoeft te kennen, moet deze wel mee in de PIC. De include file bevat deze code en/of de referenties naar deze code.

Op 21 december 2013 18:45:18 schreef Martin83:
Over delays.h zeg hij: no such file or directory

Een compiler verwacht dat de include files in een bepaalde folder zitten en heeft hiervoor dan ook een instelling (include directories) waar meerdere folders kunnen worden ingegeven, zoals Rene al zei.

Dus;
- Ofwel is die file gewoon niet aanwezig op je PC.
- Ofwel zit deze in een folder welke niet in je instelling aanwezig is.

Een filesearch in Windows geeft uitsluitsel waar en of Setup deze file heeft geinstalleerd.

Op 21 december 2013 19:50:12 schreef Martin83:
Daarnaast begrijp ik ook niet helemaal wat dit programmaatje doet.

Zonder een boek of andere bron over C programmering en eentje over het Arduino platform grondig door te nemen vrees ik dat je nog heel wat frustraties voor de boeg hebt.

Groetjes

Ik zou de MPLAB® XC8 Getting Started Guide lezen, staat in de program files folder XC8/docs, staat precies uitgelegd welke stappen waarvoor nodig zijn. Als je deze doorloopt, snap je ook waar het mis gaat.

In het voorbeeld is het poort RD0. Als je de 10F200 bedoelt, die heeft maar 1 poort: GPIO. Dit moet dus in de code aangepast worden.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Pff, het valt allemaal niet mee. Ik heb die delays.h naar een andere folder verplaatst waardoor hij hem weel vind, maar wederom errors:

undefined identifier "TRISD"
undefined identifier "LATDbits"
en twee keer een error struct/union required

YokoTsuno: heb je een aanrader voor een goed boek?

Op zich begrijp ik de code wel, maar alleen de pinconfiguratie begrijp ik niet, dat bedoel ik. Dus welke pin toggle ik nou met deze code? Ik heb wat moeite met de stap tussen de soft en de hardware.

Maar ik ben blij dat ik hulp van jullie krijg.

Zoals gezegd heeft een 10F200 geen latd, die heeft maar een poort. Je moet LATD door GPIO vervangen. Voor juiste benamingen zie de P10F200.h file.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 21 december 2013 23:19:14 schreef Martin83:
Pff, het valt allemaal niet mee. Ik heb die delays.h naar een andere folder verplaatst waardoor hij hem weel vind, maar wederom errors:

Een slechte gewoonte mijns inziens. delay.h is een systeemheader.
- Bij upgrades of herinstallatie heb je mogelijk al meteen 2 verschillende headers in je systeem.
- Als je dit vaker doet bij meerdere projecten zit je zo met meerdere kopieën van die file.
- Bij een *.h hoort een passende *.asm file (of *.lib/dll voor systemen met een OS).

Hiermee gaan "knoeien" geeft vaak aanleiding tot bugs.

heb je een aanrader voor een goed boek

Dit hangt van je leesstijl af maar klik eens hier

Groetjes

Op 22 december 2013 01:07:06 schreef YokoTsuno:
[...] Een slechte gewoonte mijns inziens. delay.h is een systeemheader.

Ik weet niet wat ik gisteren verkeerd deed, maar nu werkt dit wel zoals ik het zou verwachten. Delays staat gewoon in plib en het includen werkt nu wel.

Over die boeken is dus al genoeg geschreven, ik ga er eens een uitzoeken en lezen, bedankt.

Op 22 december 2013 00:12:02 schreef Arco:
Zoals gezegd heeft een 10F200 geen latd, die heeft maar een poort. Je moet LATD door GPIO vervangen. Voor juiste benamingen zie de P10F200.h file.

Ik heb nu LATD vervangen door GPIO. Dat lijkt goed te gaan. Ik heb dan iets staan in de trend van GPIO.GP0. Maar wat doet GP0? En wat doet GP1, GP2 en GP3?

Maar die TRISD blijft een error geven. Ik kan uiteraard de 10F200.h file inkijken, maar waar ben ik dan naar op zoek?

TRISD moet je ook vervangen door TRSIO; er is geen D poort.
GP0 is pin GP0, GP1 is pin GP1, dat lijkt me toch wel duidelijk?
Lees de datasheet ook eens, dan had je dat allemaal al geweten, zonder datasheet kom je niet ver...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ja, dat leek mij al, maar u schreef eerder dat de 10F200 maar 1 poort had, vandaar de verwarring.

Ik heb inmiddels mijn programmaatje zo staan dat hij succesvol compiled. Vanavond maar eens kijken of ik mijn ledje kan laten knipperen.

Dank jullie wel!

Alle i/o pinnen die intern in 1 register zitten noemt men een poort. Bij de 10F200 zijn dat 4 i/o pinnen, maar dat kan varieren per controller.
Bij een 16Fxxx en 18Fxxx meestal 8 bits per poort, bij een 24Fxxx zijn dat er 16. Maar dat staat allemaal uitgebreid in de datasheet(s)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Okay, dus een poort en een pin zijn twee verschillende zaken. Dan is dat ook weer duidelijk.

Ook het programmeren gaat niet zonder slag of stoot. Bij het openen van de pickit2 programma krijg ik de foutmelding: pickit2 vpp voltage error. Check target & retry operation.

Geen idee wat ik daarmee moet?

[Bericht gewijzigd door Henry S. op 23 december 2013 21:50:17 (54%)]

Krijg je die melding met verder niets op de Pickit2 aangesloten? (Of wat hangt er anders aan?)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ik krijg de foutmelding alleen als de pic10f200 erin zit.