[ Dejan tf @ 12.10.2012. 08:35 ] @
Potrebna mi je pomoc oko razjasnjavanja koda i treba na displeju da isprogramiram sat koji je pokazivati vreme a sve ovo se radi u IAR WORKBANCHU, KOD JE SLEDECI:
#include <nxp/iolpc1768.h>
#include "type.h"
#include "irq.h"
#include "target.h"
#include "rtc.h"

extern volatile DWORD alarm_on;
RTCTime local_time, alarm_time, current_time;

Main Function main()

int main (void)
{
TargetResetInit();

/* Initialize RTC module */
RTCInit();

local_time.RTC_Sec = 0;
local_time.RTC_Min = 0;
local_time.RTC_Hour = 0;
local_time.RTC_Mday = 8;
local_time.RTC_Wday = 3;
local_time.RTC_Yday = 12; /* current date 07/12/2006 */
local_time.RTC_Mon = 07;
local_time.RTC_Year = 2006;
RTCSetTime( local_time ); /* Set local time */

alarm_time.RTC_Sec = 0;
alarm_time.RTC_Min = 0;
alarm_time.RTC_Hour = 0;
alarm_time.RTC_Mday = 1;
alarm_time.RTC_Wday = 0;
alarm_time.RTC_Yday = 1; /* alarm date 01/01/2007 */
alarm_time.RTC_Mon = 1;
alarm_time.RTC_Year = 2007;
RTCSetAlarm( alarm_time ); /* set alarm time */

/* install RTC timer handler mainly for alarm control */
NVIC_IntEnable(NVIC_RTC);
NVIC_IntPri(NVIC_RTC,HIGHEST_PRIORITY);

/* mask off alarm mask, turn on IMYEAR in the counter increment interrupt
register */
RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);
RTCCIIR = IMMIN | IMYEAR;
/* 2007/01/01/00:00:00 is the alarm on */

RTCStart();

while (1)
{ /* Loop forever */
current_time = RTCGetTime();
if ( alarm_on != 0 )
{
alarm_on = 0;
/* Get current time when alarm is on */
current_time = RTCGetTime();
}


}
return 0;
}
Ja sam ovaj kod skinuo sa neta gotov, kada prikljucim plocu na racunar i pokrenem IAR on mi ne javlja greske medjutim nista mi ne pokazuje na displeju, da li je potrebna jos neka f-ja dodatna za ispis ili kombinacija sa ovim kodom kod LCD DEMO?????

UNAPRED ZAHVALAN
















[ bogdan.kecman @ 12.10.2012. 08:48 ] @
nemas nigde ispis na lcd :)

Code:

while (1)
  { /* Loop forever */
    current_time = RTCGetTime();
    if ( alarm_on != 0 )
    {
      alarm_on = 0;
      /* Get current time when alarm is on */
      current_time = RTCGetTime();
    }
  }


ovo ti je glavna petlja gde ti se odrzava trenutno vreme u varijabli current_time. Ti tu treba da ubacis funkciju za ispisivanje na LCD, tj to trenutno vreme ako alarm nije on treba da ispises na lcd, ako alarm jeste on treba da aktiviras alarm i ispises sta vec oces u slucaju alarma.
[ bogdan.kecman @ 12.10.2012. 08:48 ] @
btw kada stavljas kod na forum stavi ga izmedju [ code ] i [/ code] da bi se sacuvalo formatiranje
[ Dejan tf @ 12.10.2012. 09:07 ] @
Hvala na odgovoru, jel mozes da mi ispises kako treba treba da izgleda f-ja i u celini kod da mi prosledis na mail :[email protected]?
[ ZAS011 @ 12.10.2012. 10:58 ] @
@Dejan tf: kada si već pitao da ti neko napiše primer kako bi funkcija trebalo da izgleda, jako je nekulturno, čak bezobrazno, tražiti da ti se pošalje na e-mail. Time bi forum počeo da gubi svoju funkciju i postao bi samo oglasna tabla.

BTW, za tvoj domaći bi Bogdan samo trebalo da ti da smernice/pseudokod pa da ti sam to dovršiš i skapiraš šta je šta. Ovako, copy/paste će "daleko" da te odvede u stručnom životu.
[ Dejan tf @ 12.10.2012. 12:22 ] @
ok, kako kazete treba mi pomoc oko isipisa f-ja, lepo sam pitao...posto nisam do sada radio u IARU...msm. da nije nista lose u tome..a ja vec pokusavam 10-ak dana ovo da odradim, da sam znao verovatno ne bih bio na forumu, moze da mi postavi na forumu nije problem...
[ bogdan.kecman @ 12.10.2012. 12:47 ] @
ja ne koristim IAR (kosta puno a ne donosi nista u odnosu na free varijante) tako da sto se njega tice nemam sta da napisem .. ali

ovde imas nekoliko primera kako da koristis LCD u IAR-u sa LPC-om
http://www.testech-elect.com/i...ewarm_sample_download_list.htm

Takodje ako pogledas primere u samom IAR-u, garantovano imas neki primer sa LCD-om, dolazi uz svaki kompajler, garantovano dolazi i uz IAR
[ ZAS011 @ 12.10.2012. 12:48 ] @
@Dejan tf: msm = mislim (nemoj da štediš tastaturu, ovde pisanije nije ograničeno na 160 slovnih mesta - SMS)
Citat:
moze da mi postavi na forumu nije problem...

I TREBA da postavi na forumu, tako će još neko osim tebe nešto naučiti.
Iz tog razloga je moj prethodni post bio, možda, nešto oštriji. Namena foruma je da ljudi razmenjuju iskustva/znanja/umeća, a ne da bude oglasna tabla u stilu "požalji mi na e-mail". Takav zahtev je SEBIČAN (tebi i samo tebi, a ostale ko ejbe).
[ Dejan tf @ 12.10.2012. 13:11 ] @
Hvala u svakom slucaju Bogdanu, brate ako mozes samo da mi pomognes f-ju za ispis na displeju...
[ Dejan tf @ 12.10.2012. 13:53 ] @
OK,hvala puno na savetima Bogdane..pokusacu ovo da odradim..ako odradim postavicu sve na forum !!!!!!!!!!!!!!!
[ Dejan tf @ 14.10.2012. 16:46 ] @
Code:
 void Dly100us(void *arg)
{
volatile Int32U Dly = (Int32U)arg, Dly100;
  for(;Dly;Dly--)
    for(Dly100 = 500; Dly100; Dly100--);
}

Code:
void InitClock(void)
{
  // 1. Init OSC
  SCS_bit.OSCRANGE = 0;
  SCS_bit.OSCEN = 1;
  // 2.  Wait for OSC ready
  while(!SCS_bit.OSCSTAT);
  // 3. Disconnect PLL
  PLL0CON_bit.PLLC = 0;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 4. Disable PLL
  PLL0CON_bit.PLLE = 0;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 5. Select source clock for PLL
  CLKSRCSEL_bit.CLKSRC = 1; // Selects the main oscillator as a PLL clock source.
  // 6. Set PLL settings 300 MHz
  PLL0CFG_bit.MSEL = 25-1;
  PLL0CFG_bit.NSEL = 2-1;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 7. Enable PLL
  PLL0CON_bit.PLLE = 1;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 8. Wait for the PLL to achieve lock
  while(!PLL0STAT_bit.PLOCK);
  // 9. Set clk divider settings
  CCLKCFG   = 3-1;            // 1/3 Fpll
  PCLKSEL0 = PCLKSEL1 = 0;    // other peripherals 100/4 = 25MHz
  // 10. Connect the PLL
  PLL0CON_bit.PLLC = 1;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
}

Evo nekih funkcija koje vec postoje u LCD-u da li moze neko da mi pojasni ove kodove..
[ bogdan.kecman @ 14.10.2012. 18:42 ] @
nista tu nema nikakve veze sa LCD-om
[ ZAS011 @ 14.10.2012. 19:19 ] @
Šta ima tu mnogo da se pojašnjava? Kod ti je sasvim dovoljno izkomentarisan, samo treba čitati komentare (sve ono što piše posle "//" je komentar, do kraja reda).
Za sve ostalo, šta je koji bit, SFR, ... PROČITATI datasheet od dotičnog kontrolera, i to nekoliko puta.
[ Dejan tf @ 14.10.2012. 20:43 ] @
Stvarno pocinjete da mi vredjate inteligenciju,ponasate se bahato a to nije lepo.... gospodine ZNAM sta je komentar nema potrebe da mi naglasavate!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Lepo sam pitao nekoga ako zna da mi pomogne posto mi je hitno, primere koje sam dao nalaze se na sl.adresi tu se nalazi i primer za LCD:
https://www.olimex.com/Products/ARM/NXP/LPC1766-STK/, koju f-ju treba da koristm da bi mi ispisao vreme na dipleju?????????
Pozdrav
[ bogdan.kecman @ 15.10.2012. 04:02 ] @
Citat:
Dejan tf: rimere koje sam dao nalaze se na sl.adresi tu se nalazi i primer za LCD:
https://www.olimex.com/Products/ARM/NXP/LPC1766-STK/,


taj dev kit koristi NOKIA 6610 graficki LCD, njemu ne mozes da kasez da ti nesto "napise", moras da "nacrtas" slova na grafickom ekranu. Na toj strani imas primer (LCD DEMO) koji pise i crta po tom lcd-u. U direktorijumu "modules" u tom demo-u imas drajver za taj lcd, u dev_glcd_cnfg.h treba da podesis koji pin je kako spojen na taj lcd (ako imas tu stk plocu nema razloga da ista menjas)... drajver vec u sebi ima funkcije za pisanje tekst-a po display-u, crtanje tacke ...

sve sto ti treba da bi pisao po tom lcd-u je tih nekoliko fajlova koji predstavljaju drajver za taj lcd a primer kako se taj drajver koristi ti je taj projekat... pogledaj app/main.c tu ti je sve elpo iskomentarisano, sve lepo pise sta i zasto radi ... ako pogledas main() funkciju ono sto te zanima je inicijalizacija lcd-a:

Code:

// GLCD init
  GLCD_PowerUpInit((pInt8U)OLIMEX_Logo.pPicStream);

  GLCD_Backlight(BACKLIGHT_ON);
  Dly100us((void*)30000);
  DrawTable();

  GLCD_SetFont(&Terminal_9_12_6,0x000F00,0x00FF0);
  GLCD_SetWindow(10,116,131,131);
  GLCD_TextSetPos(0,0);



i pisanje teksta po istom:

Code:

GLCD_print("\fContrast adj.\r");


to sve naravno ima smisla ako imas tu olimexovu plocku sa tim lcd-om, ako imas neku drugu plocku sa nekim drugim lcd-om taj kod ti ne sluzi nicemu
[ Dejan tf @ 15.10.2012. 08:43 ] @
Hvala puno, ova ploca je u pitanju(LPC 1766-stk).Ovi kodovi za ispis na graficki displej su mi potrebni.Tekst sam uspeo da ispisem (moje ime).Pokusacu sada vreme da mi ispise na LCD
[ bogdan.kecman @ 15.10.2012. 19:11 ] @
u .h fajlu u direktorijumu sa drajverom za lcd imas sve funkcije koje drajver podrzava + komentar sta koji parametar znaci / sta funkcija radi
[ Dejan tf @ 15.10.2012. 21:22 ] @
Ok, video sam ja sve to..hvala na pomoci i tvome angazovanju..ali ja treba sve to da iskombinujem da mi radi na ploci, pocinje da mi javlja greske u bibliotekama..
Posto su kodovi u LCD ok, sve je podeseno ja u sustini treba da glavni program iz RTC-a prebacim u LCD
Code:
int main (void)
{
  TargetResetInit();

  /* Initialize RTC module */
  RTCInit();

  local_time.RTC_Sec = 0;
  local_time.RTC_Min = 0;
  local_time.RTC_Hour = 0;
  local_time.RTC_Mday = 8;
  local_time.RTC_Wday = 3;
  local_time.RTC_Yday = 12;   /* current date 07/12/2006 */
  local_time.RTC_Mon = 07;
  local_time.RTC_Year = 2006;
  RTCSetTime( local_time );   /* Set local time */

  alarm_time.RTC_Sec = 0;
  alarm_time.RTC_Min = 0;
  alarm_time.RTC_Hour = 0;
  alarm_time.RTC_Mday = 1;
  alarm_time.RTC_Wday = 0;
  alarm_time.RTC_Yday = 1;    /* alarm date 01/01/2007 */
  alarm_time.RTC_Mon = 1;
  alarm_time.RTC_Year = 2007;
  RTCSetAlarm( alarm_time );    /* set alarm time */

  /* install RTC timer handler mainly for alarm control */
  NVIC_IntEnable(NVIC_RTC);
  NVIC_IntPri(NVIC_RTC,HIGHEST_PRIORITY);

  /* mask off alarm mask, turn on IMYEAR in the counter increment interrupt
  register */
  RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);
  RTCCIIR = IMMIN | IMYEAR;
  /* 2007/01/01/00:00:00 is the alarm on */

  RTCStart();

  while (1)
  {         /* Loop forever */
    current_time = RTCGetTime();
    void Dly100us(void *arg)
{
volatile Int32U Dly = (Int32U)arg, Dly100;
  for(;Dly;Dly--)
    for(Dly100 = 500; Dly100; Dly100--);
}

    if ( alarm_on != 0 )
    {
      alarm_on = 0;
      /* Get current time when alarm is on */
      current_time = RTCGetTime();
      
   
    }
  }
  return 0;
}

ida napisem u currentu sledece:
Code:

GLCD_print(/local_time.RTC_Sec = 0);
GLCD_print(/local_time.RTC_Min = 0);
GLCD_print(/local_time.RTC_Hour = 0);
,medjutim ovo ne funkcionise?
[ Dejan tf @ 15.10.2012. 21:27 ] @
Ili treba da koristim ovu f-ju za podrazumevani sat GLCD_DEF_CLOCk
[ bogdan.kecman @ 16.10.2012. 15:18 ] @
Citat:
ali ja treba sve to da iskombinujem


naravno da ti treba da to iskombinujes, to je tvoj zadatak ...

Citat:
Ili treba da koristim ovu f-ju za podrazumevani sat GLCD_DEF_CLOCk

to je interna stvar za lcd, nema nikakve veze sa satom

Citat:

GLCD_print(/local_time.RTC_Sec = 0);


sta ovo treba da predstavlja? u kom jeziku bi ovo moglo da radi? da li si video kakav parametar trazi funkcija GLCD_print() ?

vidi ovako, moras da upalis mozak, prvo dobro pogledaj sta si napisao pre nego napises ovde, ako meni nije bilo tesko da skinem te primere i pogledam sta pise u njima, moras i ti malo da se potrudis posto sto se ti vise trudis, vise ce da se trude ostali da ti pomognu, kada napises ovakvu stvar koja kompletno nema smisla to pokazuje da nisi razmisljao i onda niko drugi nece da razmislja u tvoje ime, jbg, ako neces sam da se potrudis oko svog zadatka, sto bi se neko drugi trudio ..

Da bi pisao po tom lcd-u moraces te BROJEVE koji pretstavljaju vreme da pretvoris u KARAKTERE.... najjednostavnije ti je da koristis GLCD_putchar() ili tako se nekako zove funkcija, proveri, koja ispisuje JEDAN KARAKTER i onda da ispisujes karaktere jedan po jedan ... na primer

Code:

  GLCD_putchar( ((local_time.RTC_Hour/10)%10) + 0x30);
  GLCD_putchar( ( local_time.RTC_Hour    %10) + 0x30);
  GLCD_putchar(':');
  GLCD_putchar( ((local_time.RTC_Minute/10)%10) + 0x30);
  GLCD_putchar( ( local_time.RTC_Minute    %10) + 0x30);
  GLCD_putchar('.');
  GLCD_putchar( ((local_time.RTC_Sec/10)%10) + 0x30);
  GLCD_putchar( ( local_time.RTC_Sec    %10) + 0x30);


[ Dejan tf @ 16.10.2012. 18:30 ] @
Izvini kada sam napisao ovo doslo je do greske, mislio sam na sledece koje cu navesti u kodu.. tek sam sada video odgovor na forumu.Zaista hvala na tvome trudu.
Izvinjavam se jos jednom, odradio sam svoj zadatak na sledeci nacin:

ispod
Code:
current_time = RTCGetTime();
stavio sam sledeci deo koda:

Code:
GLCD_SetFont(&Terminal_9_12_6,0x000F00,0x00FF0);
      GLCD_SetWindow(10,10,131,131);
      GLCD_TextSetPos(0,0);
      GLCD_print("%d",current_time.RTC_Hour);
      GLCD_print(":");
      GLCD_print("%d",current_time.RTC_Min);
      GLCD_print(":");
      GLCD_print("%d",current_time.RTC_Sec);


Javljao mi je neke greske zbog nekih biblioteka koje fale.. trebalo je da se ukljuce biblioteke i da se navedu njihove adrese..Moze da se radi sa GLCD_print..