Electronic Projects, forums and more.

Go Back   Electronic Circuits Projects Diagrams Free > Electronics Forums > Electronic Projects Design/Ideas/Reviews


Electronic Projects Design/Ideas/Reviews Are you building an electronic project or want to? Maybe you need some assistance? Come and submit your electronic questions here and let our experienced members find a solution.

Reply
 
LinkBack Thread Tools Display Modes
Old 26th December 2007, 12:31 PM   (permalink)
Question help me

hello guys
i'am new in microchip prgramming and i work with a pic16f877 and css (pcw compiler ide) i wrote a programme but when i compile it an error message show on screen "NOT ENOUGH RAM" then i tried to work with an external eeprom but i have no idea how to work with it. please if someone there have an idea in eeprom programming (i want to write a programme not a simple data in this eeprom)
please help me
thanks
Mr pico is offline  
Old 26th December 2007, 01:14 PM   (permalink)
Default

You can't write programs in external EEPROM - you need to write your program more carefully, and not waste resources.

Presumably that message means you've ruj out of GPR's?, NOT program memory - are you using lots of varibles, particularly unneeded floating point ones?.
__________________
PIC programmer software, and PIC Tutorials at:
http://www.winpicprog.co.uk
Nigel Goodwin is offline  
Old 28th December 2007, 12:49 PM   (permalink)
Default

hello
i used many floats in this program and here the program see it and if u can help me please i have no much more time

#include "C:\RAPPORT PFE\pcf programme\clock.h"
#include <LCD.C>
#include<math.h>
#use i2c (master,sda=pin_c1,scl=pin_c0)

void main()
{
int retval,s1,s2;
int min,m1,m2;
int hr,h1,h2;
int day,d1,d2;
int mon,mo1,mo2,month;
int year;
int i,p=10;
int mv=0,data;
int h3,h4,m3,m4;
float bta,D,N,N1,N2,N3,t;
float R,G,H,L,B;
float Z ,U1,U2,U,VD,Vn,w;
float fajer,dhuhur,aser,maghreb,icha;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
lcd_init();
while(1)
{
data=input_b();
//*************************************- Menu -***********************************************
if(data==0x01)
{
mv=mv+1;
if(mv==4)
{
mv=1;
}
delay_ms(150);

}
if(mv==1)
{

lcd_gotoxy(1,1);
lcd_putc("Reveil ");

if (data==0x04 )
{
p=p+3;
if(p>13)
{
p=10;
}

lcd_gotoxy((p-2),2);
lcd_putc(" 00| ");
delay_ms(200);

}
if(data==0x02 && p==10 )

{

h3=h3+1;
if(h3==10 && h4<3)
{
h3=0;
h4=h4+1;
}


if ((h4==2) && (h3>3))
{
h4=0;
h3=0;
}
lcd_gotoxy((p-1),2);
lcd_putc(h4+48);
lcd_gotoxy((p ),2);
lcd_putc(h3+48);
delay_ms(200);
}
//************************************************** ****************************
if(data==0x02 && p==13 )

{

m3=m3+1;
if(m3==10 && m4<6)
{
m3=0;
m4=m4+1;
}


if ((m4==5) && (m3>9))
{
m4=0;
m3=0;
}
lcd_gotoxy((p-1),2);
lcd_putc(m4+48);
lcd_gotoxy((p ),2);
lcd_putc(m3+48);
delay_ms(200);
}
}
//************************************************** ******************************

if(mv==2)
{
//********************************************- programme pcf -***************************************
i2c_start();
i2c_write(0xa0);
i2c_write(0x00);
i2c_write(0x00);
i2c_stop();
strt:
{
//********************************- SECONDES -*****************************
i2c_start();
i2c_write(0xa0);
i2c_write(0x02);
i2c_start();
i2c_write(0xa1);
retval=i2c_read(0);
i2c_stop();

if(retval>9)
{ retval=retval-6; }
if(retval>19)
{ retval=retval-6; }
if(retval>29)
{ retval=retval-6; }
if(retval>39)
{ retval=retval-6; }
if(retval>49)
{ retval=retval-6; }

s1=retval/10;
s2=retval%10;

lcd_gotoxy(1,1);
lcd_putc("Time: ");
lcd_gotoxy(13,1);
lcd_putc(s1+48);
lcd_gotoxy(14,1);
lcd_putc(s2+48);

//-********************************- MINUTES -*****************************
i2c_start();
i2c_write(0xa0);
i2c_write(0x03);
i2c_start();
i2c_write(0xa1);
min=i2c_read(0);
i2c_stop();

if(min>9)
{ min=min-6; }
if(min>19)
{ min=min-6; }
if(min>29)
{ min=min-6; }
if(min>39)
{ min=min-6; }
if(min>49)
{ min=min-6; }

m1=min/10;
m2=min%10;

lcd_gotoxy(10,1);
lcd_putc(m1+48);
lcd_gotoxy(11,1);
lcd_putc(m2+48);
lcd_gotoxy(12,1);
lcd_putc(":");
//-********************************- HEURES -*****************************
i2c_start();
i2c_write(0xa0);
i2c_write(0x04);
i2c_start();
i2c_write(0xa1);
hr=i2c_read(0);
i2c_stop();

if(hr>9)
{ hr=hr-6; }
if(hr>19)
{ hr=hr-6; }

h1=hr/10;
h2=hr%10;

lcd_gotoxy(9,1);
lcd_putc(":");
lcd_gotoxy(7,1);
lcd_putc(h1+48);
lcd_gotoxy(8,1);
lcd_putc(h2+48);
//-*******************************-Date -********************************
lcd_gotoxy(1,2);
lcd_putc("Date: ");
//-********************************- jours -*****************************
i2c_start();
i2c_write(0xa0);
i2c_write(0x05);
i2c_start();
i2c_write(0xa1);
day=i2c_read();
day=day & 0x1f;
i2c_stop();

if(day>9)
{ day=day-6; }
if(day>19)
{ day=day-6; }
if(day>29)
{ day=day-6; }
if(day>20)
{d1==2; }

d1=day/10;
d2=day%10;

lcd_gotoxy(7,2);
lcd_putc(d1+48);
lcd_gotoxy(8,2);
lcd_putc(d2+48);
//-********************************- mois -******************************
i2c_start();
i2c_write(0xa0);
i2c_write(0x06);
i2c_start();
i2c_write(0xa1);
mon=i2c_read(0);
i2c_stop();
month=(mon & 0x1f);
if(month>10)
{ month=month-6; }

mo1=month/10;
mo2=month%10;

lcd_gotoxy(9,2);
lcd_putc("/");
lcd_gotoxy(10,2);
lcd_putc(mo1+48);
lcd_gotoxy(11,2);
lcd_putc(mo2+48);
//-*********- alarme de reveil-*********//
if(h1==h4 && h2==h3 && m1==m4 && m2==m3)
{
output_b(0x08);

}

//-***********- calculate the day of the year -****************-//

N1 = floor( (275 * month / 9));
N2 = floor((month + 9) / 12);
N3 = (1 + floor((2008 - 4 * floor(2008 / 4) + 2) / 3));
N = ((N1 - (N2 * N3) ) + (day - 30));


bta=(((2*(0.001))*N)/360);//year angle

//-****-declinaison de soleil-**********-//

D=((180/(0.001))*(0.006918-(0.399912*cos(bta))+(0.070257*sin(bta))-(0.006758*cos(2*bta))+(0.000907*sin(2*bta))-(0.002697*cos(3*bta))+(0.001480*sin(3*bta))));

//-******equatiopn de temps en minutes -****-//

T=(229.18*(0.000075+(0.001868*cos(bta))-(0.032077*sin(bta))-(0.014615*cos(2*bta))-(0.040849*sin(2*bta))));

//-*******(R)=reference de longitude; (G)=degree de fajr et maghreb; (H)=altitude above sea -****-//
R=15;
G=18;
H=25;
L=34;
B=8;



Z=(12+((R-L)/15)-(T/60));

U1=(sin((-0.8333-0.0347*(H/abs(H))*(sqrt(abs(H)))*((0.001)/180))-sin(D*((0.001)/180))*sin(B*((0.001)/180))));

U2=(cos(D*((0.001)/180))*cos(B*((0.001)/180)));

U=((180/(15*(0.001)))*acos(U1/U2));

Vd=((180/0.015)*acos((-(sin(19.5*(0.001/180)))-(sin(D*(0.001/180)))*(sin(B*(0.001/180))))/
((cos(D*(0.001/180)))*(cos(B*(0.001/180))))));

Vn=((180/0.015)*acos((-(sin(17.5*(0.001/180)))-(sin(D*(0.001/180)))*(sin(B*(0.001/180))))/((cos(D*(0.001/180)))*(cos(B*(0.001/180))))));

W=((180/0.015)*acos((sin(atan(1/(1+tan(abs(B-D)*(0.001/180)))))-sin(D*(0.001/180))*sin(B*(0.001/180)))/((cos(D*(0.001/180)))*(cos(B*(0.001/180))))));

fajer=Z-Vd;
dhuhur=Z;
aser=Z+w;
maghreb=Z+U;
icha=Z+Vn;
}

delay_ms(200);
goto strt;
}
}
}

if u have any suggestion please help me
and thnk you
Mr pico is offline  
Old 28th December 2007, 12:53 PM   (permalink)
Default

Yep, that's alot of floating point math. Perhaps an 18F series PIC will give you the space you need.
Looks like you're building a solar tracker or heliostat.
Why are you running out of time?
__________________
Bill
Smart Kits build Smart People

http://www.blueroomelectronics.com

Last edited by blueroomelectronics; 28th December 2007 at 12:56 PM.
blueroomelectronics is offline  
Old 28th December 2007, 02:02 PM   (permalink)
Default

Yes, re-evaluate your use of floats, in particular how many you're actually using! - do you really need so many, can't you reuse them better?.
__________________
PIC programmer software, and PIC Tutorials at:
http://www.winpicprog.co.uk
Nigel Goodwin is offline  
Old 28th December 2007, 05:02 PM   (permalink)
Default

hello guys
yes i build some thing like solar traker and i have to finish it before january,6th. and about the floating point i puted just what i need no more no less and i have to work with 16f877 microchip it's the rules.
and please can someone help to convert the value of "Z"
(Z it's a time equation) to minutes i cant do it alone . and thanx again
Mr pico is offline  
Old 28th December 2007, 05:08 PM   (permalink)
Default

Of course you don't need them all! (you are using 24 of them!) - apply a little thought! - for example N1, N2, and N3 are only used inside one small routine, you could easily reuse those elsewhere, saving 3 floats already!.
__________________
PIC programmer software, and PIC Tutorials at:
http://www.winpicprog.co.uk
Nigel Goodwin is offline  
Old 28th December 2007, 05:33 PM   (permalink)
Default

i will try it
and what can i do for the rest of program iam confused and stressed because the short time but thanx for your help man and there is an other problem i just found it it's in pcf program it cant display correctly the date
for example today it's 28 december but the pcf display 08 january can any one help in this part and thank you guys.
see u
Mr pico is offline  
Old 28th December 2007, 06:57 PM   (permalink)
Default

If you don't need all the precision you could try using integers as fixed point numbers.
__________________
I also post at the following sites:
http://www.stop-microsoft.org http://www.heated-debates.com
Screen name: Aloone_Jonez
And http://www.silicontronics.com, same screen name as here.
Hero999 is offline  
Reply

Bookmarks

Thread Tools
Display Modes





All times are GMT. The time now is 01:06 PM.


Electronic Circuits  |  Learning Electronics
Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.

eXTReMe Tracker