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 

Prvi koraki s PHILIPSOM
Pojdi na stran Prejšnja  1, 2, 3 ... , 10, 11, 12  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
JamesQ
Član
Član



Pridružen-a: Čet 16 Nov 2006 12:05
Prispevkov: 362
Aktiv.: 1.71
Kraj: Novo mesto/Ljubljana

PrispevekObjavljeno: Ned Dec 20, 2009 11:38 pm    Naslov sporočila:   Odgovori s citatom

@janbar.. si nastavil ustrezni pin v ustreznem PINSEL registru da je to dejansko AD pin? V priročniku pišel da se tako poveča ločljivost.

Morda pa nimaš nastavljene 10-bit AD pretvorbe?


LDŽ

_________________
Baje sem inteligentna baraba ... FAE@Silica Slovenia (=
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
janbar
Član
Član



Pridružen-a: Sre 15 Nov 2006 17:59
Prispevkov: 81
Aktiv.: 0.38
Kraj: Ig

PrispevekObjavljeno: Pon Dec 21, 2009 12:33 am    Naslov sporočila:   Odgovori s citatom

Imam nastavljeno:

PINSEL1 = 0x0000F000; // P0.22 and P0.23 as ADC input
AD0CR = 0x00200302 ; // Setup A/D: 10-bit AIN1(P0.23) @ 3.75MHz (PCLK(15Mhz)/(3+1)=3.75Mhz)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
JamesQ
Član
Član



Pridružen-a: Čet 16 Nov 2006 12:05
Prispevkov: 362
Aktiv.: 1.71
Kraj: Novo mesto/Ljubljana

PrispevekObjavljeno: Pon Dec 21, 2009 7:31 am    Naslov sporočila:   Odgovori s citatom

Kako pa prebereš in pretvoriš podatke iz ADxGDR registra? Zanimivo mi je to, da so vsi rezultati, ki si jih navedel za faktor 1000 zmanjšani.

LDŽ

_________________
Baje sem inteligentna baraba ... FAE@Silica Slovenia (=
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
janbar
Član
Član



Pridružen-a: Sre 15 Nov 2006 17:59
Prispevkov: 81
Aktiv.: 0.38
Kraj: Ig

PrispevekObjavljeno: Pon Dec 21, 2009 10:31 am    Naslov sporočila:   Odgovori s citatom

val = ((AD0GDR >> 6) & 0x03FF); /*Extract the A/D result (bit 6-15)

5*0,006=0,03V
1000*0,0032V= 3,20V

AD input območje 0-VDDA kar je v mojem primeru 3.3V
Koda:

Vrednost ADC - vrednost 1 LSB
1                   0,02V
5                   0,006V
20                  0,0041V
50                  0,0035V
100                 0,0034V
200                 0,0033V
500                 0,0032V
1000                0,0032V
[/quote]
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
simonk
Član
Član



Pridružen-a: Ned 25 Feb 2007 2:17
Prispevkov: 14
Aktiv.: 0.07
Kraj: Krško

PrispevekObjavljeno: Tor Jul 20, 2010 1:45 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav!

Sem čisti začetnik na področju ARM, pa bi rad usposobil utripanje dveh LEDic. Uporabljam pa Keil uVision4 in Flash Magic in to razvojno ploščo z lpc2148 klik za shemo.

Vzel sem primer Blinky.c iz primerov in ga spremenil toliko da ustreza razvojni plošči. Simulacija dela, medtem ko na ploščici ne. Ima kdo kakšno idejo kaj sem naredil narobe?

Koda:

#include <LPC214x.H>                       /* LPC21xx definitions */

void wait (void)  {                        /* wait function */
  int  d;

  for (d = 0; d < 1000000; d++);           /* only to delay for LED flashes */
}

int main (void) {
  unsigned int i;                          /* LED var */

  IODIR0 = 0x00000C00;                     /* P0.10&11 defined as Outputs */

  while (1)  {                             /* Loop forever */
    for (i = 1<<10; i < 1<<11; i <<= 1) {  /* Blink LED 1, 2 */
      IOSET0 = i;                          /* Turn on LED */
      wait ();                             /* call wait function */
      IOCLR0 = i;                          /* Turn off LED */
    }
    for (i = 1<<11; i > 1<<10; i >>=1 ) {  /* Blink LED 2, 1 */
      IOSET0 = i;                          /* Turn on LED */
      wait ();                             /* call wait function */
      IOCLR0 = i;                          /* Turn off LED */
    }
  }
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
simonk
Član
Član



Pridružen-a: Ned 25 Feb 2007 2:17
Prispevkov: 14
Aktiv.: 0.07
Kraj: Krško

PrispevekObjavljeno: Sre Jul 28, 2010 12:44 pm    Naslov sporočila:   Odgovori s citatom

Imam še eno vprašanje: kako ustvariti nov projekt, da projekt izgleda tako kot ta primer: C:\Keil\ARM\Boards\SILICA\LPC2103\Blinky

Če sam naredim nov projekt, v mapi s projektom nimam podmape Flash - posledično mi nikakor ne uspe pognati simulacije, tudi s (preverjeno) delujočim programom.

Očitno je, da delam nekaj narobe, pa ne ugotovim kaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Sre Jul 28, 2010 1:14 pm    Naslov sporočila:   Odgovori s citatom

simonk je napisal/a:
Če sam naredim nov projekt, v mapi s projektom nimam podmape Flash - posledično mi nikakor ne uspe pognati simulacije, tudi s (preverjeno) delujočim programom.

Tista mapa nima nič skupnega s poganjanjem simulacije. Namenjena je shranjevanju object in listing datotek, kar je definirano pod Project->Options for Target->Output in Listing

simonk je napisal/a:
Očitno je, da delam nekaj narobe, pa ne ugotovim kaj.

Obrazloži kaj bi rad naredil, kako to počneš in morebitne napake, ki ti jih vrača uVision okolje oz. prevajalnik.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
simonk
Član
Član



Pridružen-a: Ned 25 Feb 2007 2:17
Prispevkov: 14
Aktiv.: 0.07
Kraj: Krško

PrispevekObjavljeno: Sre Jul 28, 2010 3:10 pm    Naslov sporočila:   Odgovori s citatom

Rad bi ustvaril nov projekt, v katerem bi v prekinitvah časovnika prižigal LED diodo.

Naredim tako:
Project -> New uVision project; ustvarim novo mapo, določim ime projekta, shranim.

Nato vpraša:> select device for target: izberem NXP -> LPC2148, potrdim. Nato vpraša, če prekopira LPC2100 startup kodo v moj projekt -> potrdim.

Nato v: File -> New izberem nov dokument in ga shranim v mapo s projektom s končnico .c ter ga dodam še v projekt (add files to group).

Nato prilepim tole kodo:

Koda:

#include <LPC214x.H>
// olimex LPC-P2148: LED on P0.10 (active low)
#define LED1PIN      10

void T0IRQ (void) __irq;
unsigned short switcher = 0;

int main(void)
{
//INIT
    // define LED-Pins as outputs
    IODIR0 |= 1<<LED1PIN;
    // set Bits = LEDs off (active low)
    IOCLR0 = 1<<LED1PIN;
    //Sets peripheral clock = system clock
    VPBDIV=0x01;
    //initialise timer 0
    T0TCR = 0x0;
    T0TC  = 0x0;
    T0PR  = 0xF;
    T0PC  = 0x0;
    T0MR0 = 0x000FFFFF;
//   T0MCR = 0x3;

    //Reset and interrupt on match
    T0MCR = 0x3;
   
    //INitialise the VIC
    VICVectAddr4 = (unsigned long) T0IRQ;
    VICVectCntl4= 0x24; //Allow This Vector, set is as IRQ Slot 4   
    VICIntSelect = 0x0; //NO FIQs
    VICIntEnable = 0x10;//TIMER 0 on board   
    //start the timer
    T0TCR=0x1;

    while(1)
   {
   }
}


void T0IRQ (void) __irq
{
    //TOGGLE LED
    if(switcher) {
        IOSET0 = 1<<LED1PIN;
        switcher = 0;
    } else {
        IOCLR0 = 1<<LED1PIN;
        switcher = 1;
    } 
    //RESTART TIMER
    T0IR=0x1;
    //END ISR "Pseudo Write Operation"
    VICVectAddr=0xff;
}

Pod Project -> Options for Target 'target 1' -> Output -> izberem Create .HEX file

Nato izberem Project -> Rebuild all target files, izpiše 0 errors, 0 warnings.

Poženem simulacijo -> Debug -> Start Debug session in stisnem F5. Odprem si še Peripherials -> GPIO (slow) -> PORT0 in TIMER0.

Simulacija teče, prav tako se povečuje vrednost TC do nastavljene vrednosti, medtem ko se 10. bit GPIO0 ne spreminja. Tudi če .HEX s Flash Magic-om naložim na razvojno ploščo, zadeva ne deluje.


Če pa odprem projekt iz primera: C:\Keil\ARM\Boards\SILICA\LPC2103\Blinky ter v blinky.c prilepim zgornjo kodo, iz projekta odstranim retarget.c, Font5x7.c, serial.c in LEDmatrix.c, zadeva brezhibno deluje -> v simulaciji kot tudi v praksi.

Kaj delam narobe?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Sre Jul 28, 2010 4:23 pm    Naslov sporočila:   Odgovori s citatom

simonk je napisal/a:
...
Simulacija teče, prav tako se povečuje vrednost TC do nastavljene vrednosti, medtem ko se 10. bit GPIO0 ne spreminja. Tudi če .HEX s Flash Magic-om naložim na razvojno ploščo, zadeva ne deluje.
...

Kaj delam narobe?

Pojma nimam... Anxious

Namreč, postopek sem ponovil ravno tako kot si opisal, vendar se pri meni bit 10 v IO0PIN spreminja.

Koda izgleda ok, postopek je ok, ne vidim razloga, da reč ne bi blinkala. Koda v prekinitvi se kdaj izvede? Izvesti bi se morali vsi ukazi iz prekinitvene rutine.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
simonk
Član
Član



Pridružen-a: Ned 25 Feb 2007 2:17
Prispevkov: 14
Aktiv.: 0.07
Kraj: Krško

PrispevekObjavljeno: Čet Jul 29, 2010 2:22 pm    Naslov sporočila:   Odgovori s citatom

Umnik je napisal/a:

Koda v prekinitvi se kdaj izvede? Izvesti bi se morali vsi ukazi iz prekinitvene rutine.

Pri projektu, ki ga sam naredim, nikoli ne skoči v prekinitveno rutino. A bi bilo lahko kaj narobe s Startup.s, ki se avtomatsko vključi k projektu?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Čet Jul 29, 2010 4:21 pm    Naslov sporočila:   Odgovori s citatom

simonk je napisal/a:
Pri projektu, ki ga sam naredim, nikoli ne skoči v prekinitveno rutino. A bi bilo lahko kaj narobe s Startup.s, ki se avtomatsko vključi k projektu?

Lahko da. Daj datoteko pripni na forum. Kateri uVision imaš? Imaš eval verzijo? Če imaš eval verzijo in nimaš zadnje (4.12) si jo potegni s keil.com.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
simonk
Član
Član



Pridružen-a: Ned 25 Feb 2007 2:17
Prispevkov: 14
Aktiv.: 0.07
Kraj: Krško

PrispevekObjavljeno: Pet Jul 30, 2010 12:13 pm    Naslov sporočila:   Odgovori s citatom

Koda:
;/*****************************************************************************/
;/* STARTUP.S: Startup file for Philips LPC2000                               */
;/*****************************************************************************/
;/* <<< Use Configuration Wizard in Context Menu >>>                          */
;/*****************************************************************************/
;/* This file is part of the uVision/ARM development tools.                   */
;/* Copyright (c) 2005-2007 Keil Software. All rights reserved.               */
;/* This software may only be used under the terms of a valid, current,       */
;/* end user licence from KEIL for a compatible version of KEIL software      */
;/* development tools. Nothing else gives you the right to use this software. */
;/*****************************************************************************/


;/*
; *  The STARTUP.S code is executed after CPU Reset. This file may be
; *  translated with the following SET symbols. In uVision these SET
; *  symbols are entered under Options - ASM - Define.
; *
; *  REMAP: when set the startup code initializes the register MEMMAP
; *  which overwrites the settings of the CPU configuration pins. The
; *  startup and interrupt vectors are remapped from:
; *     0x00000000  default setting (not remapped)
; *     0x80000000  when EXTMEM_MODE is used
; *     0x40000000  when RAM_MODE is used
; *
; *  EXTMEM_MODE: when set the device is configured for code execution
; *  from external memory starting at address 0x80000000.
; *
; *  RAM_MODE: when set the device is configured for code execution
; *  from on-chip RAM starting at address 0x40000000.
; *
; *  EXTERNAL_MODE: when set the PIN2SEL values are written that enable
; *  the external BUS at startup.
; */


; Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs

Mode_USR        EQU     0x10
Mode_FIQ        EQU     0x11
Mode_IRQ        EQU     0x12
Mode_SVC        EQU     0x13
Mode_ABT        EQU     0x17
Mode_UND        EQU     0x1B
Mode_SYS        EQU     0x1F

I_Bit           EQU     0x80            ; when I bit is set, IRQ is disabled
F_Bit           EQU     0x40            ; when F bit is set, FIQ is disabled


;// <h> Stack Configuration (Stack Sizes in Bytes)
;//   <o0> Undefined Mode      <0x0-0xFFFFFFFF:8>
;//   <o1> Supervisor Mode     <0x0-0xFFFFFFFF:8>
;//   <o2> Abort Mode          <0x0-0xFFFFFFFF:8>
;//   <o3> Fast Interrupt Mode <0x0-0xFFFFFFFF:8>
;//   <o4> Interrupt Mode      <0x0-0xFFFFFFFF:8>
;//   <o5> User/System Mode    <0x0-0xFFFFFFFF:8>
;// </h>

UND_Stack_Size  EQU     0x00000000
SVC_Stack_Size  EQU     0x00000008
ABT_Stack_Size  EQU     0x00000000
FIQ_Stack_Size  EQU     0x00000000
IRQ_Stack_Size  EQU     0x00000080
USR_Stack_Size  EQU     0x00000400

ISR_Stack_Size  EQU     (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
                         FIQ_Stack_Size + IRQ_Stack_Size)

                AREA    STACK, NOINIT, READWRITE, ALIGN=3

Stack_Mem       SPACE   USR_Stack_Size
__initial_sp    SPACE   ISR_Stack_Size

Stack_Top


;// <h> Heap Configuration
;//   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF>
;// </h>

Heap_Size       EQU     0x00000000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit


; VPBDIV definitions
VPBDIV          EQU     0xE01FC100      ; VPBDIV Address

;// <e> VPBDIV Setup
;// <i> Peripheral Bus Clock Rate
;//   <o1.0..1>   VPBDIV: VPB Clock
;//               <0=> VPB Clock = CPU Clock / 4
;//               <1=> VPB Clock = CPU Clock
;//               <2=> VPB Clock = CPU Clock / 2
;//   <o1.4..5>   XCLKDIV: XCLK Pin
;//               <0=> XCLK Pin = CPU Clock / 4
;//               <1=> XCLK Pin = CPU Clock
;//               <2=> XCLK Pin = CPU Clock / 2
;// </e>
VPBDIV_SETUP    EQU     0
VPBDIV_Val      EQU     0x00000000


; Phase Locked Loop (PLL) definitions
PLL_BASE        EQU     0xE01FC080      ; PLL Base Address
PLLCON_OFS      EQU     0x00            ; PLL Control Offset
PLLCFG_OFS      EQU     0x04            ; PLL Configuration Offset
PLLSTAT_OFS     EQU     0x08            ; PLL Status Offset
PLLFEED_OFS     EQU     0x0C            ; PLL Feed Offset
PLLCON_PLLE     EQU     (1<<0)          ; PLL Enable
PLLCON_PLLC     EQU     (1<<1)          ; PLL Connect
PLLCFG_MSEL     EQU     (0x1F<<0)       ; PLL Multiplier
PLLCFG_PSEL     EQU     (0x03<<5)       ; PLL Divider
PLLSTAT_PLOCK   EQU     (1<<10)         ; PLL Lock Status

;// <e> PLL Setup
;//   <o1.0..4>   MSEL: PLL Multiplier Selection
;//               <1-32><#-1>
;//               <i> M Value
;//   <o1.5..6>   PSEL: PLL Divider Selection
;//               <0=> 1   <1=> 2   <2=> 4   <3=> 8
;//               <i> P Value
;// </e>
PLL_SETUP       EQU     0
PLLCFG_Val      EQU     0x00000024


; Memory Accelerator Module (MAM) definitions
MAM_BASE        EQU     0xE01FC000      ; MAM Base Address
MAMCR_OFS       EQU     0x00            ; MAM Control Offset
MAMTIM_OFS      EQU     0x04            ; MAM Timing Offset

;// <e> MAM Setup
;//   <o1.0..1>   MAM Control
;//               <0=> Disabled
;//               <1=> Partially Enabled
;//               <2=> Fully Enabled
;//               <i> Mode
;//   <o2.0..2>   MAM Timing
;//               <0=> Reserved  <1=> 1   <2=> 2   <3=> 3
;//               <4=> 4         <5=> 5   <6=> 6   <7=> 7
;//               <i> Fetch Cycles
;// </e>
MAM_SETUP       EQU     1
MAMCR_Val       EQU     0x00000002
MAMTIM_Val      EQU     0x00000004


; External Memory Controller (EMC) definitions
EMC_BASE        EQU     0xFFE00000      ; EMC Base Address
BCFG0_OFS       EQU     0x00            ; BCFG0 Offset
BCFG1_OFS       EQU     0x04            ; BCFG1 Offset
BCFG2_OFS       EQU     0x08            ; BCFG2 Offset
BCFG3_OFS       EQU     0x0C            ; BCFG3 Offset

;// <e> External Memory Controller (EMC)
EMC_SETUP       EQU     0

;//   <e> Bank Configuration 0 (BCFG0)
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
;//     <o1.11..15> WST2: Wait States 2 <0-31>
;//     <o1.10>     RBLE: Read Byte Lane Enable
;//     <o1.26>     WP: Write Protect
;//     <o1.27>     BM: Burst ROM
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
;//                                   <2=> 32-bit  <3=> Reserved
;//   </e>
BCFG0_SETUP EQU         0
BCFG0_Val   EQU         0x0000FBEF

;//   <e> Bank Configuration 1 (BCFG1)
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
;//     <o1.11..15> WST2: Wait States 2 <0-31>
;//     <o1.10>     RBLE: Read Byte Lane Enable
;//     <o1.26>     WP: Write Protect
;//     <o1.27>     BM: Burst ROM
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
;//                                   <2=> 32-bit  <3=> Reserved
;//   </e>
BCFG1_SETUP EQU         0
BCFG1_Val   EQU         0x0000FBEF

;//   <e> Bank Configuration 2 (BCFG2)
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
;//     <o1.11..15> WST2: Wait States 2 <0-31>
;//     <o1.10>     RBLE: Read Byte Lane Enable
;//     <o1.26>     WP: Write Protect
;//     <o1.27>     BM: Burst ROM
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
;//                                   <2=> 32-bit  <3=> Reserved
;//   </e>
BCFG2_SETUP EQU         0
BCFG2_Val   EQU         0x0000FBEF

;//   <e> Bank Configuration 3 (BCFG3)
;//     <o1.0..3>   IDCY: Idle Cycles <0-15>
;//     <o1.5..9>   WST1: Wait States 1 <0-31>
;//     <o1.11..15> WST2: Wait States 2 <0-31>
;//     <o1.10>     RBLE: Read Byte Lane Enable
;//     <o1.26>     WP: Write Protect
;//     <o1.27>     BM: Burst ROM
;//     <o1.28..29> MW: Memory Width  <0=>  8-bit  <1=> 16-bit
;//                                   <2=> 32-bit  <3=> Reserved
;//   </e>
BCFG3_SETUP EQU         0
BCFG3_Val   EQU         0x0000FBEF

;// </e> End of EMC


; External Memory Pins definitions
PINSEL2         EQU     0xE002C014      ; PINSEL2 Address
PINSEL2_Val     EQU     0x0E6149E4      ; CS0..3, OE, WE, BLS0..3,
                                        ; D0..31, A2..23, JTAG Pins


                PRESERVE8
               

; Area Definition and Entry Point
;  Startup Code must be linked first at Address at which it expects to run.

                AREA    RESET, CODE, READONLY
                ARM


; Exception Vectors
;  Mapped to Address 0.
;  Absolute addressing mode must be used.
;  Dummy Handlers are implemented as infinite loops which can be modified.

Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                            ; Reserved Vector
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                      ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

Undef_Handler   B       Undef_Handler
SWI_Handler     B       SWI_Handler
PAbt_Handler    B       PAbt_Handler
DAbt_Handler    B       DAbt_Handler
IRQ_Handler     B       IRQ_Handler
FIQ_Handler     B       FIQ_Handler


; Reset Handler

                EXPORT  Reset_Handler
Reset_Handler   


; Setup External Memory Pins
                IF      :DEF:EXTERNAL_MODE
                LDR     R0, =PINSEL2
                LDR     R1, =PINSEL2_Val
                STR     R1, [R0]
                ENDIF


; Setup External Memory Controller
                IF      EMC_SETUP <> 0
                LDR     R0, =EMC_BASE

                IF      BCFG0_SETUP <> 0
                LDR     R1, =BCFG0_Val
                STR     R1, [R0, #BCFG0_OFS]
                ENDIF

                IF      BCFG1_SETUP <> 0
                LDR     R1, =BCFG1_Val
                STR     R1, [R0, #BCFG1_OFS]
                ENDIF

                IF      BCFG2_SETUP <> 0
                LDR     R1, =BCFG2_Val
                STR     R1, [R0, #BCFG2_OFS]
                ENDIF

                IF      BCFG3_SETUP <> 0
                LDR     R1, =BCFG3_Val
                STR     R1, [R0, #BCFG3_OFS]
                ENDIF

                ENDIF   ; EMC_SETUP


; Setup VPBDIV
                IF      VPBDIV_SETUP <> 0
                LDR     R0, =VPBDIV
                LDR     R1, =VPBDIV_Val
                STR     R1, [R0]
                ENDIF


; Setup PLL
                IF      PLL_SETUP <> 0
                LDR     R0, =PLL_BASE
                MOV     R1, #0xAA
                MOV     R2, #0x55

;  Configure and Enable PLL
                MOV     R3, #PLLCFG_Val
                STR     R3, [R0, #PLLCFG_OFS]
                MOV     R3, #PLLCON_PLLE
                STR     R3, [R0, #PLLCON_OFS]
                STR     R1, [R0, #PLLFEED_OFS]
                STR     R2, [R0, #PLLFEED_OFS]

;  Wait until PLL Locked
PLL_Loop        LDR     R3, [R0, #PLLSTAT_OFS]
                ANDS    R3, R3, #PLLSTAT_PLOCK
                BEQ     PLL_Loop

;  Switch to PLL Clock
                MOV     R3, #(PLLCON_PLLE:OR:PLLCON_PLLC)
                STR     R3, [R0, #PLLCON_OFS]
                STR     R1, [R0, #PLLFEED_OFS]
                STR     R2, [R0, #PLLFEED_OFS]
                ENDIF   ; PLL_SETUP


; Setup MAM
                IF      MAM_SETUP <> 0
                LDR     R0, =MAM_BASE
                MOV     R1, #MAMTIM_Val
                STR     R1, [R0, #MAMTIM_OFS]
                MOV     R1, #MAMCR_Val
                STR     R1, [R0, #MAMCR_OFS]
                ENDIF   ; MAM_SETUP


; Memory Mapping (when Interrupt Vectors are in RAM)
MEMMAP          EQU     0xE01FC040      ; Memory Mapping Control
                IF      :DEF:REMAP
                LDR     R0, =MEMMAP
                IF      :DEF:EXTMEM_MODE
                MOV     R1, #3
                ELIF    :DEF:RAM_MODE
                MOV     R1, #2
                ELSE
                MOV     R1, #1
                ENDIF
                STR     R1, [R0]
                ENDIF


; Initialise Interrupt System
;  ...


; Setup Stack for each mode

                LDR     R0, =Stack_Top

;  Enter Undefined Instruction Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #UND_Stack_Size

;  Enter Abort Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #ABT_Stack_Size

;  Enter FIQ Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #FIQ_Stack_Size

;  Enter IRQ Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #IRQ_Stack_Size

;  Enter Supervisor Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
                MOV     SP, R0
                SUB     R0, R0, #SVC_Stack_Size

;  Enter User Mode and set its Stack Pointer
                MSR     CPSR_c, #Mode_USR
                IF      :DEF:__MICROLIB

                EXPORT __initial_sp

                ELSE

                MOV     SP, R0
                SUB     SL, SP, #USR_Stack_Size

                ENDIF


; Enter the C code

                IMPORT  __main
                LDR     R0, =__main
                BX      R0


                IF      :DEF:__MICROLIB

                EXPORT  __heap_base
                EXPORT  __heap_limit

                ELSE
; User Initial Stack & Heap
                AREA    |.text|, CODE, READONLY

                IMPORT  __use_two_region_memory
                EXPORT  __user_initial_stackheap
__user_initial_stackheap

                LDR     R0, =  Heap_Mem
                LDR     R1, =(Stack_Mem + USR_Stack_Size)
                LDR     R2, = (Heap_Mem +      Heap_Size)
                LDR     R3, = Stack_Mem
                BX      LR
                ENDIF


                END


Imam pa uVision V4.03q evaluation:

Toolchain: RealView MDK-ARM Version: 4.11
Toolchain Path: BIN40\
C Compiler: Armcc.Exe V4.0.0.728 [Evaluation]
Assembler: Armasm.Exe V4.0.0.728 [Evaluation]
Linker/Locator: ArmLink.Exe V4.0.0.728 [Evaluation]
Librarian: ArmAr.Exe V4.0.0.728 [Evaluation]
Hex Converter: FromElf.Exe V4.0.0.728 [Evaluation]
CPU DLL: SARM.DLL V4.11
Dialog DLL: DARMP.DLL V1.47
Target DLL: BIN\UL2ARM.DLL V1.56
Dialog DLL: TARMP.DLL V1.47

Bom poskusil naložiti uVision še na drug računalnik, da vidim, če je s tem kaj narobe.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Pet Jul 30, 2010 12:33 pm    Naslov sporočila:   Odgovori s citatom

Startup nima nobene napake. Kje bi se lahko skrivala napaka ne vem.

Potegni zadnjo verzijo z WEBa in instaliraj na novo (odinstaliraj staro verzijo, poglej če je C:\Keil pobrisan in če ni, ga pobriši ali preimenuj tako da boš imel počiščeno)

Imaš starejše verzije compilerja, linkerja, vsega praktično... Obvezno upgradaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
simonk
Član
Član



Pridružen-a: Ned 25 Feb 2007 2:17
Prispevkov: 14
Aktiv.: 0.07
Kraj: Krško

PrispevekObjavljeno: Sob Jul 31, 2010 5:39 pm    Naslov sporočila:   Odgovori s citatom

Pa sem našel napako...

Najprej sem poskusil še z najnovejšim Keil-om na drugem računalniku, pa ni bilo nič boljše. Nato sem si odprl dva Keil-a naenkrat, v enem projekt iz primera, v drugem pa moj projekt ter primerjal vse nastavitve. Razlika je bila v Project -> Options for Target -> Linker. Manjkala je kljukica pri Use Memory Layout from Target Dialog.

Bilo bi dobro, če bi kdo razložil kaj sploh pomeni ta nastavitev...

Hvala za vso pomoč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Sob Jul 31, 2010 5:52 pm    Naslov sporočila:   Odgovori s citatom

simonk je napisal/a:
Razlika je bila v Project -> Options for Target -> Linker. Manjkala je kljukica pri Use Memory Layout from Target Dialog.

Bilo bi dobro, če bi kdo razložil kaj sploh pomeni ta nastavitev...

Kljukica tam pomeni, da ti linker upošteva nastavitve iz dialoga Project -> Options for Target ->Target.
In sicer iz okenc: Read/Only Memory Areas in Read/Write Memory Areas.

V teh okencih določiš (oz. to naredi že uVision) na katerih naslovih ima mikrokrmilnik ROM == flash pomnilnik in kje RAM pomnilnik.
Linker potem poskrbi, da imaš v ROMu program, ki se izvaja, v RAMu pa spremenljivke.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno 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 ... , 10, 11, 12  Naslednja
Stran 11 od 12

 
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group