Sida 1 av 1

SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 10:40:36
av rusv0927
Jag har precis börjat leka med PIC och har kommit så långt att jag tänkte kompillera ett exempelprogram men stöder genast på problem!

Har efter lite sökande kommit fram till att kompilleringen kan genomföras med kommandot

Kod: Markera allt

 sdcc -mpic14 -p16f690 helloled.c 
där helloled ser ut såhär

Kod: Markera allt

 
/* helloled.c  PICkit 2 Lesson 1 Light up a LED */

/*    Low pin count demo board               J1
         ___________  ___________           1 RA5
        |           \/           |          2 RA4
  +5V---|Vdd     16F690       Vss|---GND    3 RA3
     ---|RA5        RA0/AN0/(PGD)|-<-RP1    4 RC5
     ---|RA4            RA1/(PGC)|---       5 RC4
  SW1---|RA3/!MCLR/(Vpp)  RA2/INT|---       6 RC3
     ---|RC5/CCP              RC0|->-DS1    7 RA0
     ---|RC4                  RC1|->-DS2    8 RA1
  DS4-<-|RC3                  RC2|->-DS3    9 RA2
        |RC6                  RB4|         10 RC0
        |RC7               RB5/Rx|         11 RC1
        |RB7/Tx               RB6|         12 RC2
        |________________________|         13 +5V
                                           14 GND
*/

/* B Knudsen Cc5x C-compiler - not ANSI-C */
#include "16F690.h"
#pragma config |= 0x00D4

void main( void)
{
  TRISC.0 = 0;
  PORTC.0 = 1;

  while(1)
    {
      nop();
    }
}
När jag kör kompilleringen händer följande:

Kod: Markera allt

$ sdcc -mpic14 -p16f690 helloled.c 
helloled.c:21:20: error: 16F690.h: No such file or directory
helloled.c:22: warning 115: unknown or unsupported #pragma directive 'config |= 0x00D4'

helloled.c:26: syntax error: token -> '.0' ; column 9
helloled.c:31: warning 112: function 'nop' implicit declaration
Min fråga är då var kan jag få tag på filen 16f690.h eftersom jag inte har den på datorn. Kan jag anta att när jag hittar filen så löses alla problem?

Tack för hjälpen

Re: SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 11:18:33
av Icecap
Du antar fel!

Första steg jag ser är att det står "B Knudsen Cc5x C-compiler - not ANSI-C".

Sedan kan du kanske hitta en "p16F690.h" någonstans (finns nog i MPLAB...) men koden är fel till att börja med då den inte använder standard ANSI C. Detta går dock att göra så att det fungerar men inte "out of the box".

Re: SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 12:20:28
av GFEF
Icecap
>Sedan kan du kanske hitta en "p16F690.h" någonstans
>(finns nog i MPLAB...)

En foo.h file är en C-include fil
Från SDCC i detta fall.

Se: http://sdcc.sourceforge.net/doc/sdccman.html/

Re: SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 12:58:29
av bearing
Du bör inte som första projekt använda program skrivna för CC5X-kompilatorn i en allmän C-kompilator, eftersom att CC5X-kompilatorn tillåter så mycket specialsyntax att det skulle ta långa tid att konvertera till standard C-syntax.

CC5X-kompilatorn finns som demoversion på http://www.bknd.com

Re: SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 13:08:34
av snigelen
En snabbkoll gav följande:

Det finns ingen 16F690.h till den kompilatorn, däremot en pic16f690.h (i /usr/share/sdcc/include/pic under Ubuntu).

Den förstår inte konstruktioner av typen PORTC.0

Den förstår inte #pragma config |= 0x00D4.

Det blir nog lättare att utgå från exempel skrivna för sdcc i stället.

Re: SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 13:14:41
av rusv0927
E man dum så är man... Jag tror att jag börjar om och kör på exempel för SDCC och är noga med att kolla upp detta i fortsättningen.

Re: SDCC och PIC 16f690 i linux

Postat: 3 februari 2011, 15:20:33
av Icecap
Låter som en bra väg att gå!