elimdeki NXP LPCEXPROSSO 1768 kitim e (aidiyetlik veriyor ama hala kendisiyle bişey yapabilmiş değiliz) Code-RED in expresso su yada Keil ile bir kod bile yazamadım. Sanırım Problem Bende
Mümkünse "blinky" (system tick olmadan) örneği için bana en temelden yardım edecek bir hayır sever aranıyor.
Saygılarımı Sunar iyi çalışmalar dilerim.
LpcXpresso yada KEIL bana zor geldi. LpcXpresso kitim yatıyor masanın üsütünde mbed ile uğraşıyorum. basic gibi kolay kütüpanleri sayesinde
anlatacak biri olsa sevaba girer.
Ya evet.! Biz ARM ile bi proje yapamıyacakmıyız arkadaşlar?
@Muhittin_Kaplan Aynı şeyler banada oldu. Mplab, proton gibi değil meret...
Ayrıca Şu aletleri C ile değilde Basic ile programlıyamıyormuyuz ? Şayet c de port tanımlamaları bana gayet karışık geldi...
Benim problemim C ile vs ile değil. Hatta Keil i de biiyorum. Ama adımlardan birini atlıyor yada eklemem gereken bir kütüphaneyi eklemiyorum gibi geliyor. P.Tesiden Bu Yana uğraşıyorum (SytemTick in dışında) portun bir piini aktif yada pasif yapamadım..
Kullandiginiz cipi tanimasam da ARM yapisindaki ciplerin cevrebirimlerinin isletilme prensipleri uc asagi bes yukari ayni.
Eger hazir kutuphane fonksiyonlari kullanmayacaksaniz cipin dokumanlarini iyi okumaniz gerekiyor.
ARM da oncelikle kullanacaginiz cevre biriminin clk ile beslenmesini saglamalisiniz. Ardindan bu cevre biriminin standart kurulumlarini yapmalisiniz.
Ornegin. Bir porttan veri cikabilmek icin. oncelikle o PORTun CLK sinyalini aktif etmelisin.
Ardindan portun bitlerini cikis tanimlamalisin.
Daha sonra porta dogrudan yukleme yapip 8 bit veri cikartabilir yada bitleri set ve reset eden farkli registerlerden ilgilendigin pinlerin seviyelerini degistirebilirsin.
Ornek kod bulamamaniz ilginc.
hocam startup dosyasini ekledinizmi ?
bendede ayni problem vardi yazdiklarim calismyiordu startup dosyasini ekleyince düzeldi bunu keil otomatik ekliyeyimmi diye soruyor evet dediginizde ekliyor
code-red in derleyicisi ve system tick ile ilgili deneme programından çekip aldığım led yak söndür programı.
CMSISv1p30_LPC17xx dosyasını, projelere eklememiz gerekiyor. neden olduğunu bilmiyorum bilen açıklarsa sevinirim
ayrıca kodların işlemcide neler yaptığı konusunda az biraz bilgi verirseniz yine sevinirim.
/*
===============================================================================
Name : main.c
Author :
Version :
Copyright : Copyright (C)
Description : main definition
===============================================================================
*/
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>
#include <NXP/crp.h>
// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
// TODO: insert other include files here
// TODO: insert other definitions and declarations here
int delay(int a)
{
for (a=0;a<0x000FFFFF;a++)
{
}
}
void led2_init (void)
{
// Set P0_22 to 00 - GPIO
LPC_PINCON->PINSEL1 &= (~(3 << 12));
// Set GPIO - P0_22 - to be output
LPC_GPIO0->FIODIR |= (1 << 22);
}
// Function to turn LED2 on
void led2_on (void)
{
LPC_GPIO0->FIOSET = (1 << 22);
}
// Function to turn LED2 off
void led2_off (void)
{
LPC_GPIO0->FIOCLR = (1 << 22);
}
// Function to invert current state of LED2
void led2_invert (void)
{
int ledstate;
// Read current state of GPIO P0_0..31, which includes LED2
ledstate = LPC_GPIO0->FIOPIN;
// Turn off LED2 if it is on
// (ANDing to ensure we only affect the LED output)
LPC_GPIO0->FIOCLR = ledstate & (1 << 22);
// Turn on LED2 if it is off
// (ANDing to ensure we only affect the LED output)
LPC_GPIO0->FIOSET = ((~ledstate) & (1 << 22));
}
int main(void) {
// TODO: insert code here
led2_init();
// Enter an infinite loop, just incrementing a counter
volatile static int i = 0 ;
while(1) {
i++ ;
led2_on();
delay(0);
led2_off();
delay(0);
}
return 0 ;
}
CMSIS ----> Cortex Microcontroller Software Interface Standard
http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php
http://www.onarm.com/
Bu dosya yı kullandığımızda "The CMSIS memory requirement for the Core Peripheral Access Layer is less the 1 KB code, less than 10 Bytes RAM" kullandığını bildiriyor.
Ben Basit bir led yak söndür için bu dosyayı neden kullanmak zorunda kalayım ?
version 2 ile DSP geliştirmeleri eklenmiş. hatta yeni çıkan çift çekirdekli işlemciler için eklemeler yapmışlar.
Alıntı yapılan: muhittin_kaplan - 20 Şubat 2011, 01:31:37
CMSISv1p30_LPC17xx dosyasını, projelere eklememiz gerekiyor. neden olduğunu bilmiyorum bilen açıklarsa sevinirim
Merhaba,
Biraz geç oldu ama aşağıdaki linkte CMSIS hakkında açıklayıcı bilgiler var.
http://www.barissamanci.net/Makale/19/nxp-lpcxpresso/ (http://www.barissamanci.net/Makale/19/nxp-lpcxpresso/)
@muhittin_kaplan hocam;
Eğer başlangıç için LPXPresso IDE'sı biraz karışık geldiyse ben Keil ile başlamanızı tavisye ederim.
Keil LPXPresso'ya nispeten biraz daha basit bir arayüze sahip.
bugün sehpanın üzerine koyduğum lpcXpresso kartımı Kızımın elinde görünce ilk ne yapacağımı şaşırdım. sonrasında üzerinde bulunan RTC (Sanırım)osc ün olmadığını gördüm değeri nedir ?
Alıntı yapılan: muhittin_kaplan - 12 Mart 2011, 22:32:01
bugün sehpanın üzerine koyduğum lpcXpresso kartımı Kızımın elinde görünce ilk ne yapacağımı şaşırdım. sonrasında üzerinde bulunan RTC (Sanırım)osc ün olmadığını gördüm değeri nedir ?
Hocam 32768Hz Kristal olması gerek.
üzerinde 11xxxxx gibi bişey yazıyordu. Emin olamadım.
Alıntı yapılan: muhittin_kaplan - 12 Mart 2011, 23:04:37
üzerinde 11xxxxx gibi bişey yazıyordu. Emin olamadım.
Hocam siz oyle diyince yanlıs olmasın dıye eski msjları kontrol ettim.
altakı linki bir incelermisiniz.
https://www.picproje.org/index.php/topic,28357.285.html
12 mi 25 mi anlamadım.
hocam bende de aynı kıtten var
şimdi uzerıne baktım uzerinde 110S ( Dik olan kristal ) yazıyor.
Verdigim linkte aldıgımız kıtın seması vardı eger link saglamsa. Eger hocam link saglam değilse buraya yenıden yuklerım. Su an bu makinede degilde. ( Ben o semayı ındırdım dıye hatırlıyorum umarım oyledır. )
http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64.pdf
bunun 5 sayfasında RTC ile ilgil yerde 32Khz yazıyor. 32768 dir sanırım
Evet hocam bende sımdı baktım 32K yazıyor demekki ilk dediğim değer dogruymuş ;)
Kolay gelsin.
Bunu Denemem Gerek. Kod Varmı Elimizde Bakalım.
Eskisi olmayanın yenisi olmazmış.Yavaş yavaş ilerliyoruz
/*
===============================================================================
Name : main.c
Author :
Version :
Copyright : Copyright (C)
Description : main definition
===============================================================================
*/
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>
#include <NXP/crp.h>
// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
volatile uint32_t msTicks; // counter for 1ms SysTicks
// ****************
// SysTick_Handler - just increment SysTick counter
void SysTick_Handler(void) {
msTicks++;
}
// ****************
// systick_delay - creates a delay of the appropriate number of Systicks (happens every 1 ms)
static void DelayMS (uint32_t delayTicks) {
uint32_t currentTicks;
currentTicks = msTicks; // read current tick counter
// Now loop until required number of ticks passes.
while ((msTicks - currentTicks) < delayTicks);
}
void sayi_gonder(unsigned int s)
{
const unsigned char segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
LPC_GPIO2 -> FIOSET = 0xFFFFFFFF;
LPC_GPIO2->FIOCLR=segment[s];
}
int main(void)
{
LPC_GPIO2->FIODIR = 0xFFFFFFFF; //PORT2 nın Hepsi ÇIKIŞ
LPC_GPIO2->FIOSET=0xFFFFFFFF;
unsigned int Sayi;
if (SysTick_Config(SystemCoreClock / 1000))
{
while (1); // Capture error
}
while(1)
{
for (Sayi=0;Sayi<10;Sayi++)
{
sayi_gonder(Sayi);
DelayMS(500);
}
}
}
NXP LCPxpresso IDE ve 1768 set ilet yapılmış bir sayıcı.
ortak anot bir display.GPIO2 ye sırasıyla a,b...... bağlı.
Merhaba muhittin_kaplan hocam;
Bende kitimi yastık altından cıkardım ve çalısmaya baslıyorum.
Ilk olarak sızın verdıgınız led programını derledim sonrada sayıcı. Ve su an bilmediğim cok şey var.
Hocam LpcXpresso İde sinde ki satır noları nasıl ekrandan cıkarabılırım bırde renklendirme gıbı bır olay varmı. Bir takım yerleri.
Hocam birde kitinizi nasıl kullanıyorsunuz ona ozel bir header pcb mı yaptınız bu konuda yardımcı olabilirmisiniz.
Teşekkürler
Mehmet
Üstadlar Merhaba,
Öncelikle @M_B nin sorusuna cevap vereyim(Biraz geç olmuş ama...)
1. Hocam, satır kodlarını aşağıdaki resimde görüldüğü gibi "Show line numbers" kısmından açıp kapatabilirsiniz.
[IMG]http://img810.imageshack.us/img810/5963/satir.png[/img] (http://img810.imageshack.us/i/satir.png/)
2. Ben pin header lehimledim ve şimdilik breadboard üzerinde kullanıyorum.
Benim sorum ise ;)
Bu kartı LPCXpresso IDE'si ile kullanıyorum. Ve yazdığım kod için Debugger kullanmak çoğu zaman gerekmiyor.
Ben Program Flash kısmından programımı flasha atıyorum fakat "Reset target on completion" checkboxu aktif olduğu halde program resetlenmiyor. Yani yazdığım kodun nasıl çalıştığını göremiyorum.
Ve bunun için her seferinde debug yapmak zorunda kalıyorum.
Bunun için bir fikri olan var mı acaba ?
Merhaba fatihinanc hocam;
Yanıtınız için teşekkürler
http://ics.nxp.com/support/training/learn.eclipse.lpcxpresso/
sitesinde IDE kullanımı hakkında video var. Cok derinlemesine olmasa bile guzel bilgiler var. Ben indirip baktım.
Hocam sizin sorunuzun cevabını bende bilmiyorum. Ancak benim cozumum şu şekilde.
USB yi cıkarıp takınca Flasha atılan program çalışmaya başlıyor. Bir bakıma manuel RESET ;)
@M_B
Rica ederim. Aslında onu da yapmaya gerek kalmadan doğrudan NRESET pinine 10k direnç ve 100n üzerinden bir buton ile bu işi halledebiliyoruz. Fakat ben "Program Flash" kısmında bu işlevin neden yerine getirildiğini anlayamadım...
onun önlenmesinin bi yolu var şu anda bilgisayarımda lpcXpresso kurulu değil ama flash program penceresinden çentiklerden biri eksik yada fazla olması lazım hangisi olduğunu hatırlamıyorum deneyerek bulabilirsiniz.
kolay gelsin.
"Program Flash" kısmında "Reset target on completion" cehckboxu var. Orası aktif olduğu halde resetleme olmadı.
Her seferinde USB yi takıp çıkarmak da istemiyorum...
Ayrıca kitin üzerine RESET butonu koymamaları da çok ilginç...
fatih pencerede bir yan sekme yada gelişmiş menüsü falan varmı iyice baktın mı kiti ilk elime aldığımda bende yaşadım çünkü tek bir çentikle o sorun çözülüyor.
mass erase in seçili olması gerekiyor.
Alıntı yapılan: muhittin_kaplan - 31 Mart 2011, 16:38:08
mass erase in seçili olması gerekiyor.
Hocam akşam eve gidince bir deneyeyim bu kısmı
İlginiz için teşekkürler...
Alıntı yapılan: fatihinanc - 31 Mart 2011, 16:51:08
Alıntı yapılan: muhittin_kaplan - 31 Mart 2011, 16:38:08
mass erase in seçili olması gerekiyor.
Hocam akşam eve gidince bir deneyeyim bu kısmı
İlginiz için teşekkürler...
@muhittin_kaplan hocam;
Tesekkurler...
Mass Erase i secince problem cozuldu.
kolay gelsin.