www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Š-ARM Učni razvojni sistem na ARM7 arhitekturi
Pojdi na stran Prejšnja  1, 2, 3, ... 25, 26, 27  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Mikka
Neznanec
Neznanec



Pridružen-a: Sre 15 Feb 2006 8:15
Prispevkov: 2
Aktiv.: 0.01

PrispevekObjavljeno: Sre Jun 21, 2006 2:06 am    Naslov sporočila:   Odgovori s citatom

Hojla, Hudogriz!

Hudogriz je napisal/a:
Še naprej študiram tale Š-ARM in nekako sem se prebil skozi, le prosil bi za eno malo bolj podrobno razlago Start-up assemblerske kode philipsovega LPC 2138 ARM procesorja.


To te zanima za GNU ARM? Eno dobro razlago lahko najdeš na: http://www.jandspromotions.com/philips2005/Winners/AR1803.htm
V entry-ju: http://www.jandspromotions.com/philips2005/Winners/Entries/AR1803.zip
je PDF v katerem je marsikaj pojasnjeno.

Hudogriz je napisal/a:
Poleg me pa zanima kako generirati preprocesorjevo sporočilo pri uporabi GNUARM prevajalnika.


GCC (pravzaprav cpp) pozna samo #warning in #error, ki sta morda premočna samo za izpis komentarja. Zakaj to pravzaprav potrebuješ?

Srečno, M.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Hudogriz
Član
Član



Pridružen-a: Čet 01 Jun 2006 19:08
Prispevkov: 23
Aktiv.: 0.11

PrispevekObjavljeno: Čet Jun 22, 2006 6:38 am    Naslov sporočila:   Odgovori s citatom

Živjo,
to je prava stvar! Najlepša hvala Mikka.

V CARM oz. Keil uVision sem uporabljal #message za preprosto sporočanje prevajalnika uporabniku o načinu delovanja, izbrani periferiji, izključevanje dela kode, ...
Primer:
Koda:
#define NEKA_PERIFERIJA
...
#ifdef NEKA_PERIFERIJA
#message "Izbrana je periferija NEKA"
<na tem mestu potem nekaj narediš, itd...>
#endif


http://www.keil.com/support/man/docs/ca/ca_pp_message.htm

Zadeva je sploh uporabna, če ima uCPU več načinov delovanja, več nastavitev,...
Torej, če je teh "#define-ov" več, je res fino, če ti prevajalnik javi kaj imaš definirano.
LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Hudogriz
Član
Član



Pridružen-a: Čet 01 Jun 2006 19:08
Prispevkov: 23
Aktiv.: 0.11

PrispevekObjavljeno: Pon Avg 07, 2006 3:47 pm    Naslov sporočila: icon_great  Odgovori s citatom

Glede ŠARM kompleta, oziroma ITLPC2138,... ali ima mogoče kdo kakšne težave v delovanju?
Jaz imam namreč problem pri downloadanju strojne kode. Konkretno se zatakne pri interruptih. Enkrat delajo, enkrat ne. Če ne delujejo, preprosto ponovno prenesem kodo iz PC-ja v ARM in potem vidim če delujejo. Za diagnostiko priporočam TMR0 interrupt in en števec za utripanje na eno LED.

LP Hudogriz. Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
BorutS
Član
Član



Pridružen-a: Pet 09 Jun 2006 16:25
Prispevkov: 107
Aktiv.: 0.49
Kraj: Cerklje na Gorenjskem

PrispevekObjavljeno: Tor Avg 29, 2006 4:10 pm    Naslov sporočila:   Odgovori s citatom

Tudi mene zanima kako je tale ŠARM (ITLPC2138-) stabilen. Tudi meni se dogaja da stvar zmrzne, ko jo ponovno sprogramiram pa dela ok. Kakšna ideja?
LP
Borut
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Hudogriz
Član
Član



Pridružen-a: Čet 01 Jun 2006 19:08
Prispevkov: 23
Aktiv.: 0.11

PrispevekObjavljeno: Sre Avg 30, 2006 11:13 am    Naslov sporočila:   Odgovori s citatom

Pri debug načinu izvajanja kode sem opazil, ko pritisnem "play", se koda izvaja, vendar procesor ne prihaja v stanja interruptov.

Zato po pritisku na "play" v WinIDEA, naredim še hard reset, s pritiskom tipke RESET na razvojni ploščici. Fino je, če dodaš kak košček kode v interrupt za periodičen utripek katere izmed LED, predvsem za diagnostiko.

Drugače me pa zenkrat moti le malo število t.i. breakpointov.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
BorutS
Član
Član



Pridružen-a: Pet 09 Jun 2006 16:25
Prispevkov: 107
Aktiv.: 0.49
Kraj: Cerklje na Gorenjskem

PrispevekObjavljeno: Sre Avg 30, 2006 12:53 pm    Naslov sporočila:   Odgovori s citatom

Hudogriz glede breakpointov -
lahko vklopiš Softwate Breakpoints in jih imaš v kodi skoraj neomejeno. Sicer deluje postavljanje in brisanje SW breakpointov malenkost počasneje, vendar ni moteče. V winIDEA v menuju HARDWARE izbereš Use Software Breakpoints. (Upam da tvoja verzija SW to podpira)
lp
Borut
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.16
Kraj: LJ/Litija

PrispevekObjavljeno: Sre Okt 25, 2006 8:51 pm    Naslov sporočila:   Odgovori s citatom

Mene pa zanima kako je z vgrajenim RS232 portom na ploščici. Kako ga uporabit? Je kdo to delal kaj?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
blueH2O
Član
Član



Pridružen-a: Sob 30 Sep 2006 9:23
Prispevkov: 71
Aktiv.: 0.33

PrispevekObjavljeno: Sob Okt 28, 2006 4:49 pm    Naslov sporočila:   Odgovori s citatom

Roadracer, si iz 1. letnika in uporabljaš WinIDEA?

Najlažje narediš tako:
1.) po internetu poišči "null-modem cable"
2.) v svoj projekt vključi "uart.h"
3.) inicializiraš z _UARTInit(int baud)
4.) pošiljaš z _UARTSend(byte), sprejemaš z _UARTRead()

Primer:
Koda:

//priklopi null-modem kabel na Š-ARM in PC
//na PCju zaženi Hyper Terminal in nastavi hitrost na 9600

#include "io.h"
#include "uart.h"

int main(void)
{
  _LCDInit();
  _TimerInit();
  _UARTInit(9600);
 
  char tipka;
 
  while(1)
  {
    tipka = getch();
    _UARTSend(tipka);
  }

  return 0;
}


Toliko za motivacijo...



uart.h
 Opis:
uart.h

Download
 Ime datoteke:  uart.h
 Velikost datoteke:  2.96 KB
 Downloadano:  112 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.16
Kraj: LJ/Litija

PrispevekObjavljeno: Sob Okt 28, 2006 8:54 pm    Naslov sporočila:   Odgovori s citatom

BlueH2O hvala ti za info. Prav to sem potreboval. Sicer nisem več prvi letnik ampak uporabljam pa WinIDEA in mi je zelo uporaben.

Kar se tiče UART-a sem pa videl da ima ta ploščica UART0 in UART1. Je v tem kaj razlike?

Bom testiral zadevo in poročam o uspehih.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.16
Kraj: LJ/Litija

PrispevekObjavljeno: Ned Okt 29, 2006 11:29 am    Naslov sporočila:   Odgovori s citatom

Zdeva lepo dela. Problem mi dela samo še sprejemanje cele vrstice.
Sem poskušal uporabit ukaz _UARTReadString() pa mi nekak ne dela. Da bi uporabljal zanke pa pobiral znak po znak mi deluje pa preveč za lase privlečeno.

Mogoče kakšen predlog?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
blueH2O
Član
Član



Pridružen-a: Sob 30 Sep 2006 9:23
Prispevkov: 71
Aktiv.: 0.33

PrispevekObjavljeno: Ned Okt 29, 2006 4:51 pm    Naslov sporočila:   Odgovori s citatom

UART1 je identičen UART0, s tem da ima UART1 še dodatno funkcijo (za modem).

_UARTReadString() tudi meni ne dela Confused . Zaenkrat še nimam ideje, kako bi to rešil. Verjetno bo treba direktno iz registrov prebrat byte za byte-om...

Na splošno imam težave pri delu s string-i (in kazalci) pri WinIDEA. Kar v drugih prevajalnikih lepo dela, tukaj ne. Na primer:
če uporabim standardne funkcije strcat() ali sprinft(), mi prevede OK, vendar Š-ARM ob izvajanju tiste funkcije zamrzne. Zakaj?

Roadracer, imaš kakšno knjižnico za Visual C ali Delphi v zvezi s serijskim portom?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Roadracer
Član
Član



Pridružen-a: Ned 16 Okt 2005 18:41
Prispevkov: 482
Aktiv.: 2.16
Kraj: LJ/Litija

PrispevekObjavljeno: Ned Okt 29, 2006 5:18 pm    Naslov sporočila:   Odgovori s citatom

Kako pa definiraš UART1 oz UART0?. Ker potrebujem oba porta vhodnega in izhodnega.
Kar se tiče branja stringov bom poskusil tudi sam kaj pogruntat glede tega, če mi uspe ti sporočim rešitev.

Glede knjižnic imam samo tiste, ki so original zraven, ker pri teh zadevah sem bolj nov. Prej sem se več ukvarjal s PICi.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
blueH2O
Član
Član



Pridružen-a: Sob 30 Sep 2006 9:23
Prispevkov: 71
Aktiv.: 0.33

PrispevekObjavljeno: Ned Okt 29, 2006 6:33 pm    Naslov sporočila:   Odgovori s citatom

Potem sva na istem nivoju Smile . Tudi sam sem pred pol leta še programiral s PICi, zadanji mesec pa se intenzivno ukvarjam s Š-ARMom.

Knjižnica "uart.h" je bolj pomankljiva in zato neuradna verzija (dobil sem jo od profesorja). UART1 je v knjižnici avtomatsko nastavljen, za UART0 boš moral pa popraviti ali ustvarit (klonirat) funkcijo.

Pred kratkim sem napisal nekoliko izboljšane funkcije za sprejem byte-ov. Potem je šel pa laptop po gobe in nimam več serijskega porta Evil or Very Mad
Koda:

/*
problem pri _UARTReadString() je, da se nikoli ne ustavi; _UARTRead() tudi v neskončnost čaka na znak...
še vedno moraš najprej inicializirat z _UARTInit() preden uporabljaš U1Read() in U1ReadString()
*/

#define U1RBR (*((unsigned int *)0xE0010000)) //Receiver Buffer Register (DLAB=0)
#define U1LSR (*((unsigned int *)0xE0010014)) //Line Status Register
#define U1LCR (*((unsigned int *)0xE001000C)) //Line Control Register
#define RDR 1 //0...Rx buffer empty, 1...byte waiting

unsigned int U1Read(unsigned int timeout)
{
  U1LCR &= ~(1<<7); //DLAB=0

  while((U1LSR & RDR) == 0) //while buffer is empty
  {
     timeout--;
    if(timeout = 0) return -1; //error, byte not received in defined interval
  }

  return U1RBR;
}

void U1ReadString(char *str)
{
  int i = 0;
  unsigned char c;
 
  //while((c = U1Read(50000)) != -1) //until timeout
  while((c = U1Read(50000)) != 'x') //until 'x' received
  {
     str[i++] = c;
  }
  str[i] = 0;
}

//zaenkrat še ne deluje kot bi moralo, ideja je kar OK (strings... shhit happens)


Še to, odstrani jumper J15, ker se UART1 in LED prepletajo... boš prihranil več živcev Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
fogl
Član
Član



Pridružen-a: Sob 11 Sep 2004 22:37
Prispevkov: 80
Aktiv.: 0.36
Kraj: Radovljica

PrispevekObjavljeno: Ned Okt 29, 2006 7:45 pm    Naslov sporočila:   Odgovori s citatom

Ali se da na lpc2138, ki je na š-arm reazvojni plošči, prenesti svoj .hex fajl. Sam sem poskusil z lpc flash utility, pa mi fajl skopira v flash, ampak se po tem program sploh ne zažene...če pomerim napetost na reset pinu je na logični 0...ko zaženem winIDEA pa gre na logično 1, ampak še vedno nič ne dela, zakaj to? Zgleda kot da ga winIDEA nekako zablokira.

winIDEA tudi ne generira svojga .hex fajla (vsaj jaz ga ne najdem)....kako potem lahko sprogramiram neko vezje, ki ga naredim sam?

_________________
lp, klemen
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
egomez
Član
Član



Pridružen-a: Sob 03 Apr 2004 18:49
Prispevkov: 517
Aktiv.: 2.32
Kraj: Ljubljana/Sežana

PrispevekObjavljeno: Ned Okt 29, 2006 11:05 pm    Naslov sporočila:   Odgovori s citatom

blueH2O je napisal/a:

Roadracer, imaš kakšno knjižnico za Visual C ali Delphi v zvezi s serijskim portom?


Sicer nisem Roadracer, vendar vseeno:)

Za Delphi lahko uporabiš knjižnico TurboPower Async Professional
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3, ... 25, 26, 27  Naslednja
Stran 2 od 27

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 66 dni


Powered by phpBB © 2001, 2005 phpBB Group