Sida 1 av 1

Oklarhet vad gäller programmering av mikrokontroller

Postat: 12 maj 2005, 17:11:28
av Dani
Håller på att kikar på programmering av mikrokontroller med Hitechs kompilatorer. Jag har försökt att kompilera några exempel utan att förstå riktigt vad som händer. Jag bör nämna att jag inte har införskaffat några mikrokontroller än. När jag kompilerar exempelfiler (*.c) frågar den efter chip type: 18C242,18C252......
När jag körde en enkel hello.c fil och valde chip type 18F452 fick jag följande output:

Memory usage Map:

Program ROM $000000 - $000015 - $000016 ( 22) bytes
.......
.......
Program stats:
Total ROM used 1766 bytes 5,4%

Det ser ju ut att vara informativ data men svår att förstå.

När jag testar ett annat ex delay.c frågar den efter chip type, men sen ger den följ. meddelande:

::undefined symbol: (error)
::_main (C:\picrt821.obj) error
exit status=1
(error)

Måste jag skaffa mig en mikrokontroll av samma chip type som i listan för att få det att fungera? Vilka komponenter behöver jag för tex Picc18?

/dani

Postat: 12 maj 2005, 17:53:35
av cyr
Du behöver inget chip för att kompilatorn ska fungera.

Jag tror ditt problem med delay.c är helt enkelt att den inte innehåller någon main-funktion. Det är alltid main som körs först, och det måste alltså alltid finnas med en sån i varje program du ska kunna köra.

Postat: 12 maj 2005, 18:50:53
av sodjan
Är detta första gången du skriver *någonting* för PIC processorer ?
Har du kollat upp Microchips "Line Card" så att du har ett hum om vad det finns för olika PIC:ar ?
Vet du skillnanden på PIC18C... och PIC18F... ?
Vill du lära dig PIC processorer som sådana, eller har du ett specifikt behov av att lära dig Hitech C ? (Bäst lär man sig själva processor architekturen om man börjar med assembler, anser jag. Dessutom är MPLAB (där MPASM ingår) gratis)

Den del av MAP'en som du visar är helt solklar ! :-)
hello.c (eller snarare en sektion av hello.c) blev (kompilerad och länkad) 22 bytes, eller (ca) 11 instruktioner.
Den laddas mellan adress $000000 och $000015
Totalt upptar applikationen 5,4% av processorns hela programminne (ca 1.7 Kbyte av totalt 32 Kbyte).

Och, som cyr sa, så är säkert delay.c bara en subrutin, och behöver en "överliggande" main rutin för att fungera.

Sen frågade du : "Vilka komponenter behöver jag för tex Picc18?"
Jag antar att du menar PIC18C ? Glöm "C" processorerna, kör med "F" istället ! "C" betyder OTP (One Time Programmable), inte vad du vill ha just nu... :-). "F" är Flash, och kan programmeras om ca 100.000 gånger.

Slutligen, ibalnd går det att välja chip typ lite "på en höft", speciellt med exempelkod. Oftast är dock en viss källkod skriven för en viss processor (eller en mindre grupp av ganska lika processorer som t.ex 18F252 och 18F452).

Postat: 12 maj 2005, 19:45:29
av Dani
tack för svaren, stämmer!

Ja sodjan det är första gången, helt grön.

När jag ändrade till en mainfunktion fick jag liknande output som för hello.c. En sak jag inte förstår e varför outputen alltid ser likadan ut. För hello.c borde den ha varit "Hello world!"?

Hur får jag tag i Mplab, finns gratisversion? Laddade ner mplabconfig från Hitechs site men den kräver minst mplab 6,5 installerad.

Postat: 12 maj 2005, 20:40:38
av Icecap

Postat: 12 maj 2005, 20:42:26
av sodjan
Jösses... :-) :-)

MPLAB är en fri utvecklingsmiljö för PIC processorer från Microchip.
Har du varit inne på www.microchip.com överhuvudtaget ??

- Gå till www.microchip.com.
- Kolla under "Development tools".
- Välj "MPLAB IDE Development Environment".
- Ladda ner "MPLAB IDE v7.10 Full Zipped Download"
- Ladda gärna ner "MPASM/MPLINK User's Guide" och "MPLAB® IDE Quick Start Guide".

Installera.

Sedan antar antar jag att du skall "lägga på" mplabconfig på detta, men jag har aldrig kört något från Hitech, så...

Sedan, *nej* ett hello.c program till en *PIC* kommer antagligen INTE att skriva "Hello World" någonstans !! Var förväntade du dig att det skulle "komma ut" ??? Och vad säger dokumentationen till hello.c att det skall hända ? Står det inget i själva C filen ?

Och "outputen" ser antagligen inte alls likadan ut. Jag sätter en hundring på att det blir olika minnesåtgång, symbollistor mm. Jag antar att du antingen menar MAP eller LST filern.

Postat: 12 maj 2005, 21:03:40
av cyr
Det är möjligt att programmet spottar ur sig "hello world" nånstans när det körs t.ex. på serieport eller bara "vid sidan av" när man kör programmet i simulator. Hittils har du bara kompilerat programmet, inte kört det!

Postat: 16 maj 2005, 20:26:09
av Abra Hana
Visst kan du skicka en sträng till en LCD som är inbyggt i ett utvecklingsverktyg för PIC . Detta utvecklingverktyget klarar uppgiften väl .
[url]http://perso.wanadoo.fr/udev/ .[/url].
Men den klarar bara MPAssambly , PicBasicPro och Jal språket .