Har pickit2, och vill inkludera delays..

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
leynad
Inlägg: 8
Blev medlem: 5 maj 2009, 00:05:59

Har pickit2, och vill inkludera delays..

Inlägg av leynad »

Hej
hur inkluderar jag delays i mitt program. jag använder mig av LPCB (low pin count demo) board och en pic 16F690!


mvh
Daniel
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Har pickit2, och vill inkludera delays..

Inlägg av bos »

Eftersom jag läste din förra tråd så antar jag att du utvecklar i C, men det underlättar i framtiden om du skriver vilket programspråk du använder.

Jag använder inte Pickit2 och vet inte om det är nåt magiskt med det, men delays är enkla att göra:

Kod: Markera allt

void delay(void) {
  unsigned int foo = 65535;
  while (foo-- > 0) {}
}
Vill du ha mer exakta delays så får du manuellt räkna lite på det, beroende på vilken klockhastighet du använder osv. Alternativt kan du använda interruptstyrda delays, då blir de väldigt exakta och låser inte hela processorn.
leynad
Inlägg: 8
Blev medlem: 5 maj 2009, 00:05:59

Re: Har pickit2, och vill inkludera delays..

Inlägg av leynad »

Sorry! Klart att jag ska förtydliga mig fortsättningsvis! Ja, jag försöker att lära mig C programering och använder mig av Pic. Jo vad jag undrade var hur jag i början av mitt program ska initiera eller inkludera delay biblioteket. Jag trodde att jag skulle göra enligt följande: #include <delays.h> men det funkar inte.

Hoppas att det var bättre förklarat!
mvh daniel
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Har pickit2, och vill inkludera delays..

Inlägg av danielr112 »

Delay_us(120);

eller
Delay_ms(50);

fast detta är i MikroC
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Har pickit2, och vill inkludera delays..

Inlägg av bos »

leynad skrev:Jo vad jag undrade var hur jag i början av mitt program ska initiera eller inkludera delay biblioteket.
Finns det ens ett sådant?

En sökning på "delay" i min MPLAB-installationskatalog ger bara träffar för ICE 2000. Hi-Techs C-kompilator har så vitt jag vet inget "delay-bibliotek". Min fullversion av kompilatorn har "delay.c" som sample-källkod, men det är inte i något bibliotek.

delay.h:

Kod: Markera allt

/*
 *	Delay functions for HI-TECH C on the PIC
 *
 *	Functions available:
 *		DelayUs(x)	Delay specified number of microseconds
 *		DelayMs(x)	Delay specified number of milliseconds
 *
 *	Note that there are range limits: x must not exceed 255 - for xtal
 *	frequencies > 12MHz the range for DelayUs is even smaller.
 *	To use DelayUs it is only necessary to include this file; to use
 *	DelayMs you must include delay.c in your project.
 *
 */

/*	Set the crystal frequency in the CPP predefined symbols list in
	HPDPIC, or on the PICC commmand line, e.g.
	picc -DXTAL_FREQ=4MHZ
	
	or
	picc -DXTAL_FREQ=100KHZ
	
	Note that this is the crystal frequency, the CPU clock is
	divided by 4.

 *	MAKE SURE this code is compiled with full optimization!!!
	
 */

#ifndef	XTAL_FREQ
#define	XTAL_FREQ	4MHZ		/* Crystal frequency in MHz */
#endif

#define	MHZ	*1000L			/* number of kHz in a MHz */
#define	KHZ	*1			/* number of kHz in a kHz */

#if	XTAL_FREQ >= 12MHZ

#define	DelayUs(x)	{ unsigned char _dcnt; \
			  _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
			  while(--_dcnt != 0) \
				  continue; }
#else

#define	DelayUs(x)	{ unsigned char _dcnt; \
			  _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
			  while(--_dcnt != 0) \
				  continue; }
#endif

extern void DelayMs(unsigned char);
delay.c:

Kod: Markera allt

/*
 *	Delay functions
 *	See delay.h for details
 *
 *	Make sure this code is compiled with full optimization!!!
 */

#include	"delay.h"

void
DelayMs(unsigned char cnt)
{
#if	XTAL_FREQ <= 2MHZ
	do {
		DelayUs(996);
	} while(--cnt);
#endif

#if    XTAL_FREQ > 2MHZ	
	unsigned char	i;
	do {
		i = 4;
		do {
			DelayUs(250);
		} while(--i);
	} while(--cnt);
#endif
}
leynad
Inlägg: 8
Blev medlem: 5 maj 2009, 00:05:59

Re: Har pickit2, och vill inkludera delays..

Inlägg av leynad »

ahh jag blir galen på denna pic,.. AVR och dess program är ju betydligt enklare att hanskas med. så här borde det se ut:
#include <htc.h>
#include <pic.h>
#include <delay.c>

main()
{
TRISC=0; // declare portb as outpot

for(;;) // do forever
{
RC0=1; // LED ON
DelayMs(100); // delay for 0.25 seconds
RC0=0; // LED OFF
DelayMs(100);
}
}
men felet jag får då är:
Executing: "C:\Program\HI-TECH Software\PICC\LITE\9.60\bin\picl.exe" -C C:\MPLAB_DEMO\MPLAB_DEMO.c --chip=16F690 -P --opt=default,+asm,-speed,9 --warn=0 --double=24 -q -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error [141] C:\MPLAB_DEMO\MPLAB_DEMO.c; 3.18 can't open include file "delay.c": No such file or directory

********** Build failed! **************
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Re: Har pickit2, och vill inkludera delays..

Inlägg av cyr »

Nu vet jag inte ens vad som finns och inte finns till din kompilator, men det väl förmodligen

#include <delay.h>

Du vill ha, inte delay.c ?
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Har pickit2, och vill inkludera delays..

Inlägg av bos »

leynad skrev:så här borde det se ut:
Med #include lägger du in header-filer, dvs ".h", inte källkodsfiler, ".c". Dessutom är det skillnad på #include <foo.h> och #include "foo.h", där den första varianten letar i systemets sökvägar medan den andra kollar i projektets sökväg.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Har pickit2, och vill inkludera delays..

Inlägg av bearing »

leynad skrev:Executing: "C:\Program\HI-TECH Software\PICC\LITE\9.60\bin\picl.exe" -C C:\MPLAB_DEMO\MPLAB_DEMO.c --chip=16F690 -P --opt=default,+asm,-speed,9 --warn=0 --double=24 -q -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Argumentet -I saknas, det anger standardsökvägen till .h-filerna. Lägg till sökvägen via project settings.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Har pickit2, och vill inkludera delays..

Inlägg av bos »

Det går bra att utelämna -I när man använder PICC, saker fungerar ändå.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Har pickit2, och vill inkludera delays..

Inlägg av bearing »

Då verkar det ju lämpligt att leynad klistrar in felmeddelandet som kommer då delay.h inkluderas.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Har pickit2, och vill inkludera delays..

Inlägg av Icecap »

Ah men snälla... med #include kan man lägga in vilken fil som helst!

Och att det inte finns ett delay-bibliotek är för att det inte behövs! MikroC har den funktion men behöver man sånt är det något fundamentalt fel med programmet till att börja med, det finns dock enstaka funktioner som behöver en delay men då är det så korta att ett par NOP brukar göra susen, det kan t.ex. vara strobe till ett LCD-modul eller liknande.

Och att påstå att AVR är bättre av den anledning är verkligen att inte veta vad man håller på med! Jag är alldeles säker på att Atmel inte har gjort ett delay-bibliotek och det har enbart med fel programmeringsteknik att göra om man hänger på att måste ha en delay-funktion.
Skriv svar