Default Green Orange
Marcus Follrud
Wish I had a slogan
RSS
  • Home Page Home
  • Cruel Chipmunk Productions
  • Om
  • Projects

Vattna blommorna – del 10

Open source, Programmering Add comments

Nu händer det grejer.

Mitt program för min pic känns komplett. Har suttit och debuggat kod nu ikväll och kommit fram till att den lösningen jag postade nu senast inte var den bästa, för att vara helt ärlig.

Bland annat så verkar inte !RA# fungera riktigt i kompilatorn av någon anledning. Koden beter sig konstigt när detta händer. Eller har jag bara programmerat kasst?

Efter lite kodändringar fungerade det!

Koden ser ut såhär nu:

#include <pic16f690.h>

typedef unsigned int word;

word at 0x2007 __CONFIG = (_INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _BOR_OFF & _PWRTE_ON & _MCLRE_OFF & _IESO_OFF & _FCMEN_OFF);
void delay_ms(long ms)
{
    long i;

    while (ms--)
        for (i=0; i<=50; i++) //50 iterations is _basically_ 1 ms.
			;
}
unsigned int pumpint=0; //just an int for loops..
unsigned int totalpumpms = 0; //A counter for how many ms the pump has been running
unsigned static int maxpumpms = 100000; //Change this if you are using a slower/faster pump.
void main () {
  TRISC = 0x00;	/* PORTC, All outputs */
  TRISA = 0x1f; /* RA1-RA4 input, RA>4 output */
  while(1)
  {
    pumpint = 0;
    //Start pumping water, if RA3 isn't activated.
    if(RA3 || totalpumpms >= maxpumpms)
    {
		//Do nothing..
		delay_ms(1);
    }
    else
    {

      while(pumpint < 5000) //Max pumptime is 5 secs.
      {
        if(RA3) //If(ra3) is used since while(ra3) doesn't seem to work as good with sdcc compiler.
        {
          break;
        }
	else if (totalpumpms >= maxpumpms)
	{
		break;
	}
        PORTC=0x0f;
        //As an extra marker, never pump for more than 5 secs.
        delay_ms(1);
		totalpumpms++; //Add to the total pumpmscounter.
        pumpint++; //just for this loop.
      }
	  pumpint = 0;
    }
    //Pumping done. Wait 15 minutes
    PORTC=0x00; //Close all outputs

    //Reset button must work within this time. Don't sleep for a whole 15 mins, but keep polling.
    while(pumpint <= 90000) //15 min == 900000ms. We're polling each 100ms.
    {
      if(RA4) //RA4 is the reset switch
      {
		totalpumpms = 0;
		break;
		//at this point, we have resetted the counter, and let the water start pumping again.
      }
      pumpint++;
      delay_ms(100);
    }
  }
}

För närvarande använder jag Windows 7 (ja, jag vet, det är inte omtyckt, men faktum är att win börjar konkurrera med kde och linux..) och mitt debuggingprogram blev ”Real Pic Simulator” som utförde sitt arbete mycket väl! Programmet är dock inte gratis, men en 30-dagars testversion gick att ladda ner. Och mer tid behöver jag nog inte :-) .

Som open source entusiast skulle jag kört gpsim som är det naturliga och självklara valet om man tycker om öppen mjukvara men jag tyckte inte att jag hade lust med att mecka conf-filer och tillägg för att få just min pic att stödjas. RPS fick funka ikväll, vilket det gjorde!

Nu kan jag lugnt slappna av resten av kvällen och njuta av mitt arbete :) .

Imorgon blir det att kolla nya möbler och liknande, då vår flytt har ändrats från 1:a November till 1:a Oktober/Mitten på September.

Ha en god afton. Själv Njuter jag med lite jamaicansk öl. Det är ju inne med Jamaica nu :)
/Marcus

la la laaa
  • Facebook
  • Twitter
Be Sociable, Share!
  • Tweet

augusti 21st, 2009  
Tags: 16f690, blommor, gpsim, pic, pic16f690, real pic simulator, sdcc, vat, vattna blommor

2 Responses to “Vattna blommorna – del 10”

  1. andri
    augusti 23rd, 2009 at 16:58

    du asså, på 45:e raden har du nog missat en liten grej. Tänk nu efter…. du vet vad det är!!!!

    :)

    Ha de fint

    SvaraSvara

  2. marcus
    augusti 24th, 2009 at 9:57

    jag tror du snackar goja, Andri :)

    SvaraSvara

Leave a Reply

  • Kategorier

    • Linux
    • monotouch
    • Open source
    • Planet
    • Privat
    • Programmering
    • Spel
  • Arkiv

    • januari 2012
    • september 2011
    • augusti 2011
    • januari 2010
    • december 2009
    • november 2009
    • oktober 2009
    • september 2009
    • augusti 2009
    • juli 2009
  • Etiketter

    2.6.30 16f690 Andjelka ANSI C apparmor apple axis biltema blommor c# curl debian despotify django drupal inaktivitet iphone kde Linux linux mint liseberg mono monotouch novell Open source php pic pic16f690 plasma plasmoid Programmering pump pykde pyqt python qt sdcc sommarstuga spotify spytify vatten vattna blommor virtualbox wordpress youtube
Copyright © 2012 Marcus Follrud
XHTML CSS Logga in