Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: cengav4r - 05 Aralık 2014, 16:46:41

Başlık: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 05 Aralık 2014, 16:46:41
Elimde ARM'a başlamak için LPC1768 - LPC1769 Geliştirme kartları var. LPCxpresso'yu yükledim ancak daha ilerisine gidemedim. İnternette C ile ilgili kaynak yok gibi. Biraz sorum var. Bilgisi olan bilgisi dahilince yazarsa bu gariban çok memnun olacak.
1. Nerden başlamamı tavsiye edersiniz,
2. C mi, C++ ile mi başlamalı?
3. Adım adım gidebileceğim bir kaynak var mı?
4. LPCxpresso örnekleri C++ ile mi yazılmış (yoksa bana mı karışık görünüyor)?
5. LPCxpresso ya da Keil hangisine başlayayım (ileriye yönelik)?
6. LPC17XX için giriş-çıkış portları, kesme, timer gibi kavramları nerden öğrenebilirim?
7. Elinde "ARM Microcontrollers 1 Bert van Dam" kitabının pdfi, türkçe-ingilizce çer-çöp ne varsa olan (linkini) paylaşabilir mi?
8. Proteus ile simulasyon yapma imkanı var mı?
9. Example'ı debug yapıp board'a yüklemeye çalıştığımda "licence does not permit flash operations from command line" hatası alıyorum???
10. Bu sevdadan vazmıgeçem?
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: Kabil ATICI - 05 Aralık 2014, 16:57:58
http://www.barissamanci.net/AnaKategori/3/ekitaplarim/ (http://www.barissamanci.net/AnaKategori/3/ekitaplarim/)
http://www.barissamanci.net/AltKategori/9/lpc2000-programlama-klavuzu/ (http://www.barissamanci.net/AltKategori/9/lpc2000-programlama-klavuzu/)
http://www.barissamanci.net/AltKategori/2/arm/ (http://www.barissamanci.net/AltKategori/2/arm/)
her ne kadar işlemcin o işlemcin olmasa bile seni bir yerlere getirir.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 05 Aralık 2014, 17:09:09
@ambar7 hocam, linkleri önceden göz gezdirmiştim. Uygulamalar Keil ile C kullanılarak yapılmış, tekrar okumaya başlıyorum. Tşk.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 05 Aralık 2014, 17:28:24
Bariş Samancı'nın dersnotlarını LPC2138 kullanaraka Proteus ile sorunsuz simulke ettim. 8.0 versionunda sıkıntı var simule ederken sorun oluyor.
Keil ile program yazmaya çalışıyorum. LPCExpresso ile yazmaya alışamadım. alışmaya çalışıyorum.

[IMG]http://imageshack.us/a/img835/5043/screenvsx.jpg[/img]


Barış Samancı'nın dökümanlarındaki konular ve örnekler ARM7 için fakat çok az değişiklikle aynı kodu Cortex-M serisinde de kullana bilirisin
ARM7 (LPC2xxx) örneği;


#include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor.
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i,k; // 16 bitlik i degiskeni tanimlaniyor.
for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön
{
for (k=0;k<=12000;k++)
{}
}
}
/* Ana Fonksiyon */
int main (void) {
IODIR0 = 0x00000001; //giris cikis ayarlama komutu 1 cikis 0 giris
// 1. biti cikis digerleri giris
while (1)
{ //sonsuz döngü
IOSET0 = 0x00000001; //1. biti 1 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
IOCLR0 = 0x00000001; //1. biti 0 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
}
}


Cortex-M3 (LPC17xx) örneği;

#include <LPC17xx.H> //islemcinin kaynak dosyasi ekleniyor.
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i,k; // 16 bitlik i degiskeni tanimlaniyor.
for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön
{
for (k=0;k<=12000;k++)
{}
}
}
/* Ana Fonksiyon */
int main (void) {
LPC_GPIO1->FIODIR = 0x000000FF; //giris cikis ayarlama komutu 1 cikis 0 giris
// 1. biti cikis digerleri giris
while (1)
{ //sonsuz döngü
LPC_GPIO1->FIOSET = 0x00000001; //1. biti 1 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
LPC_GPIO1->FIOCLR = 0x00000001; //1. biti 0 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
}
}


Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: pax - 05 Aralık 2014, 20:07:56
Nxp lpc ye sıfırdan baslamak isteyenler için  hangi gelistirme  kartini onerirsiniz
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 05 Aralık 2014, 20:44:19
bu  linkteki http://www.expkits.com/?s=exlpc64.htm (http://www.expkits.com/?s=exlpc64.htm) ürünü seri porttan flashmagick programı ile programlayarak kullanıyorum. ayrıca elimde çin malı ulink 2 var
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 09 Aralık 2014, 13:58:17
LPCxpresso kurdum, örnekleri denerken, license hatası alıyorum.
"License does not permit flash operations from the command line". Kaldırıp tekrar kurduğumda (muhtemelen ilk kurduğumda da aynı mesajı vermişti) cscript.exe ilgili PATH'de değil diyor.
C:\Windows\SysWOW64 ve C:\Windows\System32 klasörlerinde var. Düzgün çalışıyor. Tekrardan kurmaya çalıştığımda cscript.exe PATH hatası alıyorum. Ne yapmam lazım?
Yeni hatam;
"License restriction: Flash image too large for this license."

Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 09 Aralık 2014, 17:06:58
LPCExpresso yu sitesine kayıt ettin mi? kayıt ettiğinde 256Kb sınırlı lisanlı bir ürün oluyor. kayıt ettirmediysen düzgün çalışmıyor.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: berkay_91 - 10 Aralık 2014, 00:17:32
arkadaşlar banada yardım edin, bende 1 ay önce Expkitten LPC1768 aldım header board ile birlikte ve ardından aliexpress den getirdiğim mini isp kablosuyla, FLAS MAGİC programıyla keilde derlediğim hex kodlarını gönderirim dedim ama olmadı ne yaptıysam flash magic isp yi tanımadı sürekli Operation failed. Failed to auto baud - step 1. see hatasını verdi. bilen varsa bi yardımcı olsun lütfen. aldığım 2 ürününde resmini koydum

(http://s13.postimg.cc/9grkpc877/LPC1768.jpg) (http://postimg.cc/image/9grkpc877/)


(http://s27.postimg.cc/s0wjyazf3/LPC_isp_mini.jpg) (http://postimg.cc/image/s0wjyazf3/)
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 10 Aralık 2014, 00:31:11
Falshmagic programı RS232 ile profgram atmakta MCU nun 1 nolu seri portunun RX/TX pinlerini kullanıp basit USB<->RS232 cevirici ile program yüklersin. Dikat etmen greken MCU3.3V olduğu için kullanacağın dönüştürücu ona uygun olmalı yada kendin ara 3.3V uyarlama yapacaksın.

http://www.flashmagictool.com/ (http://www.flashmagictool.com/) de ekran görüntülerinde ayaraları kontrol etmende fayda var.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: berkay_91 - 10 Aralık 2014, 01:24:46
sadece isp yi takıp flaş magic te blank check yaptırdığımda söylediğim step 1 hatası çıkıyor, elimdeki isp de 3.3 volt besleme çıkışı var lpc1768 için
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: hgs - 10 Aralık 2014, 07:55:29
Mcunun çaışması için gereken bağlantıları tamamladınmı ? Besleme, kristal vs.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 10 Aralık 2014, 10:14:25
@MC_Skywalker, evet siteden kayıt yaptırdım. Free edition olmuştu.
@gerbay, dosyaları attım, "LPCXpresso (Pro Edition) is fully activated" yazısı geldi. Ellerine sağlık.
@berkay_91, projeni LPCXpresso 'fan Flash Programı kullanarak deneyebilir misin? Ne hatası alacaksın? (Gerekli bağlantıları yaptıkdan sonra)
Herkese ayrı ayrı teşekkür ederim. Benim hatam; başlangıçta cscript.exe hatası veriyordu programı kurarken ilgili klasörü bulamıyorum diye. şimdi düzeldi.
Bu önişlemçi fonksiyonları falan nerden öğrenebilirim?

Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: berkay_91 - 10 Aralık 2014, 21:28:02
12 MHZ kristal ve 6 tane gnd ve vcc gerekli yerlere(3.3 v) bağlandı hala aynı hatayı veriyo dolayısıyla herhangi bir şekilde program yükleyemiyorum
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 10 Aralık 2014, 21:44:41
denemek için birde şu şemayı kullanınız --->  https://www.olimex.com/Products/ARM/NXP/LPC-H2138/resources/LPC-H2138.pdf (https://www.olimex.com/Products/ARM/NXP/LPC-H2138/resources/LPC-H2138.pdf)
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: berkay_91 - 11 Aralık 2014, 19:27:01
benim kullandığım lpc 1768 linkteki lpc 2138 için, benimkiyle alakası yok
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 11 Aralık 2014, 21:28:11
düzeltelim. şu şemayı da inceleyebilirsiniz. LPC1768 target kısmı dır.
http://developer.mbed.org/teams/mbed/code/mbed-HDK/file/651b5303219e/NXP/LPC1768/LPC1768.pdf (http://developer.mbed.org/teams/mbed/code/mbed-HDK/file/651b5303219e/NXP/LPC1768/LPC1768.pdf)
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 16 Aralık 2014, 14:18:16
Board üzerinde GPIO0 portundan Digital okuma yapmaya çalışıyorum.
Tek portu mesela LPC_GPIO0 portun 15 pinini digital olarak (0-1) ve LPC_GPIO0 (yani 0 portun hepsini) okumak istiyorum.Nasıl yapabilirim?
Yine sormuş olacağım ancak kullandığınız harhangi bir referans kaynak var mı bu registerleri öğrenmek için? tşk.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: JKramer - 16 Aralık 2014, 14:24:33
http://www.lpcware.com/downloads (http://www.lpcware.com/downloads)
User Manual'lara bakabilirsiniz.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 16 Aralık 2014, 14:42:47
Alıntı yapılan: JKramer - 16 Aralık 2014, 14:24:33
http://www.lpcware.com/downloads (http://www.lpcware.com/downloads)
User Manual'lara bakabilirsiniz.
içlerinde en yararlı döküman "UM10360.pdf". Keşke örnekli anlatsalarmış.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cihan_297 - 31 Aralık 2014, 00:29:18
Merhabalar, elimde LPC1768 geliştirme board'ı var. Board üzerindeki GLCD ekranı yatay olarak kullanmak istiyorum. nasıl yapabileceğim hakkında fikri olan var mı?
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 16 Ocak 2015, 09:52:12
LPCxpresso'ya header eklemeye çalışıyorum (Mesela,#include "type.h", #include"stdio.h") ancak başarılı olamadım.
Properties -> C/C++ Build -> Settings -> Tool Settings -> MCU C Compiler -> Includes
Yukardaki yolu izleyip type.h falan eklemem lazım ama type.h nerde bulamadım.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 16 Ocak 2015, 10:07:27
<type.h> şeklinde yazmayı dene olmazsa  başlık dosyası NXP nin örneklerinde alaman gerekli.  normal STD lib dosyasıydı.
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cengav4r - 16 Ocak 2015, 10:28:47
Alıntı yapılan: MC_Skywalker - 16 Ocak 2015, 10:07:27
<type.h> şeklinde yazmayı dene olmazsa  başlık dosyası NXP nin örneklerinde alaman gerekli.  normal STD lib dosyasıydı.

Proje Klasörünün içine manuel olarak inc klasörü oluşturup, içine lpc_types.h dosyasını attım, derleme hatası vermedi. Bakalım çalışaçak mı?
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: MC_Skywalker - 16 Ocak 2015, 12:36:13
içine aşağıdakikodu kopyala kaydet.


/***********************************************************************//**
* @file                lpc_types.h
* @brief               Contains the NXP ABL typedefs for C standard types.
*                      It is intended to be used in ISO C conforming development
*                      environments and checks for this insofar as it is possible
*                      to do so.
* @version             1.0
* @date                27 Jul. 2008
* @author              wellsk
**************************************************************************
* Software that is described herein is for illustrative purposes only
* which provides customers with programming information regarding the
* products. This software is supplied "AS IS" without any warranties.
* NXP Semiconductors assumes no responsibility or liability for the
* use of the software, conveys no license or title under any patent,
* copyright, or mask work right to the product. NXP Semiconductors
* reserves the right to make changes in the software without
* notification. NXP Semiconductors also make no representation or
* warranty that such application will be suitable for the specified
* use without further testing or modification.
**************************************************************************/

/* Type group ----------------------------------------------------------- */
/** @defgroup LPC_Types LPC_Types
* @ingroup LPC1700CMSIS_FwLib_Drivers
* @{
*/

#ifndef LPC_TYPES_H
#define LPC_TYPES_H

/* Includes ------------------------------------------------------------------- */
#include <stdint.h>


/* Public Types --------------------------------------------------------------- */
/** @defgroup LPC_Types_Public_Types LPC_Types Public Types
* @{
*/

/**
* @brief Boolean Type definition
*/
typedef enum {FALSE = 0, TRUE = !FALSE} Bool;

/**
* @brief Flag Status and Interrupt Flag Status type definition
*/
typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;
#define PARAM_SETSTATE(State) ((State==RESET) || (State==SET))

/**
* @brief Functional State Definition
*/
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
#define PARAM_FUNCTIONALSTATE(State) ((State==DISABLE) || (State==ENABLE))

/**
* @ Status type definition
*/
typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;


/**
* Read/Write transfer type mode (Block or non-block)
*/
typedef enum
{
        NONE_BLOCKING = 0,              /**< None Blocking type */
        BLOCKING,                               /**< Blocking type */
} TRANSFER_BLOCK_Type;


/** Pointer to Function returning Void (any number of parameters) */
typedef void (*PFV)();

/** Pointer to Function returning int32_t (any number of parameters) */
typedef int32_t(*PFI)();

/**
* @}
*/


/* Public Macros -------------------------------------------------------------- */
/** @defgroup LPC_Types_Public_Macros  LPC_Types Public Macros
* @{
*/

/* _BIT(n) sets the bit at position "n"
* _BIT(n) is intended to be used in "OR" and "AND" expressions:
* e.g., "(_BIT(3) | _BIT(7))".
*/
#undef _BIT
/* Set bit macro */
#define _BIT(n) (1<<n)

/* _SBF(f,v) sets the bit field starting at position "f" to value "v".
* _SBF(f,v) is intended to be used in "OR" and "AND" expressions:
* e.g., "((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)"
*/
#undef _SBF
/* Set bit field macro */
#define _SBF(f,v) (v<<f)

/* _BITMASK constructs a symbol with 'field_width' least significant
* bits set.
* e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF
* The symbol is intended to be used to limit the bit field width
* thusly:
* <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.
* If "any_expression" results in a value that is larger than can be
* contained in 'x' bits, the bits above 'x - 1' are masked off.  When
* used with the _SBF example above, the example would be written:
* a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))
* This ensures that the value written to a_reg is no wider than
* 16 bits, and makes the code easier to read and understand.
*/
#undef _BITMASK
/* Bitmask creation macro */
#define _BITMASK(field_width) ( _BIT(field_width) - 1)

/* NULL pointer */
#ifndef NULL
#define NULL ((void*) 0)
#endif

/* Number of elements in an array */
#define NELEMENTS(array)  (sizeof (array) / sizeof (array[0]))

/* Static data/function define */
#define STATIC static
/* External data/function define */
#define EXTERN extern

#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#define MIN(a, b) (((a) < (b)) ? (a) : (b))

/**
* @}
*/


/* Old Type Definition compatibility ------------------------------------------ */
/** @addtogroup LPC_Types_Public_Types LPC_Types Public Types
* @{
*/

/** SMA type for character type */
typedef char CHAR;

/** SMA type for 8 bit unsigned value */
typedef uint8_t UNS_8;

/** SMA type for 8 bit signed value */
typedef int8_t INT_8;

/** SMA type for 16 bit unsigned value */
typedef uint16_t UNS_16;

/** SMA type for 16 bit signed value */
typedef int16_t INT_16;

/** SMA type for 32 bit unsigned value */
typedef uint32_t UNS_32;

/** SMA type for 32 bit signed value */
typedef int32_t INT_32;

/** SMA type for 64 bit signed value */
typedef int64_t INT_64;

/** SMA type for 64 bit unsigned value */
typedef uint64_t UNS_64;

/** 32 bit boolean type */
typedef Bool BOOL_32;

/** 16 bit boolean type */
typedef Bool BOOL_16;

/** 8 bit boolean type */
typedef Bool BOOL_8;

/**
* @}
*/


#endif /* LPC_TYPES_H */

/**
* @}
*/

/* --------------------------------- End Of File ------------------------------ *
Başlık: Ynt: NXP LPC Başlangıç Soruları
Gönderen: cihan_297 - 08 Mayıs 2015, 11:56:18
Merhabalar,  LPC1768 board aldım ve denemeler yapıyorum. main fonksiyonundan bir fonksiyona gidiyorum, ancak oradan geri main'in içine gelemiyorum. Yani ekranda bir yere dokunulduğunda mainden devam etsin istiyorum kısaca. "return 0" komutu çalışmadı, "break;" komutu da çalışmadı. break'ın çalışması için ne yapmam gerekiyor.?

Edit: komut çalıştı:) ekranı temizleyip yeniden yazmam gerkiyormuş sadece..