Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => ARM7 Mikrodenetleyici => Konuyu başlatan: Ziya - 12 Ağustos 2006, 15:40:11

Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyor
Gönderen: Ziya - 12 Ağustos 2006, 15:40:11
ADuC7026 üzerinde bulunan 12 kanal 12 bitlik ADC kullanılarak genişletilebilir bir veri toplama kartı ve bu kart ile uyumlu çalışacak PC programına başlıyoruz. Matlab ve Labview için gerekli eklentiler yapılarak bu kartımız bu yazılımlar ile de çalışabilir hale gelecektir.

Projenin bir sonraki aşamasında 4 kanal 12 bitlik DAC ilave edilerek analog çıkış sağlanacak, genel amaçlı MIMO kontrol sistemi kurgulanacaktır.

Nihai hedef bir plc tasarımı olacaktır.

Bu konu hakkında paylaşmak istediğiniz bilgileri lütfen bu başlık altında toplayalım.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 12 Ağustos 2006, 17:41:27
Basta aklima gelen sorular sunlar :
- Kart bilgisayarin içine mi monte edilecek (PCI,PCI-EX, ISA) yoksa disardan USB, RS232 mi olacak?
-  Pc için dll nasil yazilir?

ADuc tarafinda örnekleme frekansimizi yüksek tutabiliriz: 1ms veya 100us.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 12 Ağustos 2006, 17:56:26
Alıntı yapılan: "picusta"Basta aklima gelen sorular sunlar :
- Kart bilgisayarin içine mi monte edilecek (PCI,PCI-EX, ISA) yoksa disardan USB, RS232 mi olacak?
-  Pc için dll nasil yazilir?

ADuc tarafinda örnekleme frekansimizi yüksek tutabiliriz: 1ms veya 100us.
Kartı dışarıda olacak şekilde düşünmüştüm. PCI bus yapısına uydurabilirmiyiz bilmiyorum. O durumda zaten genişletme işi de zor olur. ADuC7026 da USb yok. 2 adet UART var. Bir tanesi tam modem kontrollerini de içeriyor (modem kontrolleri kullanılırsa fakat spi ve i2c leri kullanamıyoruz o zaman). UART'ların 115200 bpse çıktığını biliyorum ama daha yüksek hıza çıkar mı bilmiyorum. UART'ın boudrate generatorunde fractional generator kısmı var ve hatası çok düşük baud rate üretiyor. Acaba çok daha yükseklere çıkarmı diye bakmak lazım. Örnekleme sıklığı 10 ms olursa belki gerek kalmayabilir. ADuC7026 örneklemesi en fazla 1 megasample/sec oluyormuş. Çok yüksek bir hız.

DLL yazma işini Delphi kullananların bilmesi lazım (ben bilmiyorum). Yeni bir proje oluştururken belirlenen seçeneklerden birisi dll. C++ Builder ile delphi zaten aynı (biri pascal, diğer, c versiyonu) ve dll yazılması gerekiyorsa c++ Builder kullanılabilir. PC tarafı arayüz için örnek olsun diye gönderdiğim Genii ye bakabildiniz mi?
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Analyzer - 12 Ağustos 2006, 22:46:46
Selam,

Birebir aynı projeyi (mcu'ya kadar aynı) düşünüyordum. PC interface'i için ben C++ Builder'da yardımcı olabilirim. Beraber elektronik kısmını çözelim yeter :)

Analyzer
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 12 Ağustos 2006, 23:24:59
Selam Analyser hocam.

Sizin PC tarafı desteğinize ihtiyacımız var.

Haberleşme için muhtemelen seri portu kullanacağız. Ancak kanal sayısı arttıkça en küçük örnekleme aralığında verileri aktarmakta güçlük çekebiliriz. O nedenle hızlı bir haberleşme yöntemi geliştirmeliyiz. 115200 bps ile sanıyorum saniyede 10k bilgi gönderebiliriz. Her bir bilgiyi 2 bayt düşünsek saniyede 5k sample bilgi gönderilebilir. Yani her bir bilgi 500 mikrosaniyede gönderilecek demektir. Genii deki gibi en küçük örnekleme sıklığımız 10ms olsa iki örnekleme işlemi arasında 20 örnek değeri aktarılabilir. Bu durumda bu hızla ancak bir karttaki 12 ADC bilgisi gönderilebilir. Belki biraz daha uğraşırsak 2 kartın bilgisi (24 ADC okuma bilgisi) gönderilebilir.

Bu işlemciler yüksek hızlarda çalıştığı için belki içeride örnekleme sayısı arttırılıp moving average vs. işlemleri de yaptırılabilir.

http://www.ontrak.net/  ticari data acquisition kartlar. ( Labview bağlantıısı http://www.ontrak.net/labview.htm )

Sizin düşünceleriniz nelerdir?
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Analyzer - 12 Ağustos 2006, 23:54:37
Selam Ziya hocam,

Valla benim şahsi kanaatim iletişim işini ya USB'ye bırakalım ya da PC'den bağımsız "stand-alone" bir uygulama yapalım. PLC panellerini ve HMI panellerini inceleme fırsatım oldu içerisinde bir adet 100-120 pin arası mcu var (+biraz yeşillik direnç kondansatör vb.) ve HMI (bu genelde dokunmatik ekran oluyor) ile güzel iş çıkartıyor.
Eğer PC tabanlı yapalım diyorsanız üzerinde usb olan bir ARM7 seçelim. Mesela LPC2148 bu iş için uygun gibi. 60 mips hızı var. Thermocouple modülü için de mesela MAX6675 kullanılabilir. Yazılımı için güzel görünümlü birşeyler yaparız orası mesele değil ;) Eğer pc'den bağımsız yapalım derseniz bir HMI seçelim ve iletişim protokolünü loglayıp çözelim. (Yalnız bundaki sıkıntı kısıtlı grafik kullanımı ve yapısı+fazla maliyet)

Analyzer
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 13 Ağustos 2006, 00:16:43
Bahsettiğin operatör paneli gibi fakat içerisindeki (mesela 1 GB olan) flash belleğe kayıt yapan bir şey mi? İstendiğinde ethernet üzerinden yedeklenebilecek kayıtlar tutuluyor. Renkli grafik ekranda bunlar izlenebiliyor da. Buna benzer basit bir şey yapılabilir. Ama verileri PC ye aktaran bir logger da yapılabilir. Ya da kaydı önce ekleyeceğimiz flash belleğe kaydeder, oradan uart üzerinden PCye aktarabiliriz. Önce bunu halledelim sonra daha komplex yapılara girelim.

Gerçi daha önceden de belirttim bu ara programlayıcı ile uğraşıyoruz, buna zaman ayırmam zor olur. Fakat başlangıç olması açısından konuyu açtım.

Proje şimdilik basitinden başlasın. Ekran ikinci aşamada konur. Programlanabilir MIMO kontrolörler üçüncü aşamada. ...

İşlemci seçimi mutlaka önemli ancak her işlemcide her özelliği bir arada bulmak zordur. ADuC7026 da ADC kanalları 12 bit, yanlış hatırlamıyorsam lpclerde 10 bit. İsterseniz doğrudan philips ARM7 lerle de başlayabiliriz.

Kalite yönetim sistemlerinde belirlenen yıllık hedefler ulaşılabilir ve ölçülebilir olmalı der. Biz de ilk başlangıcı ADuC ile yapalım. Veriler ya doğrudan PCye gelsin, ya da önce flash belleğe, sonra PC ye. Bu ikinci şekilde ADC kanal sayısını ilave kartlarla genişletmek mümkün olur. Şimdilik hedef bu olsun. Uygun mudur?
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Analyzer - 13 Ağustos 2006, 00:27:25
Selam,

Olur hocam farketmez bana :) Hani PC'ye aktarırken biraz hızlanalım diye USB demiştim. Bende ADUC sample'ları var, sanırım çoğumuzda da var. Yalnız eğer sensör olarak özelleşmiş cihazlar kullanacaksak (termokupl örneğini vermiştim) özel arabirim varsa piyasada onu kullanalım.
Programlayıcıyı yakından takip ediyorum. Belki PC yazılım kısmında ihtiyaç olursa yardımcı olmaya çalışırım ;) Uygun bir vaktinizde beraber blok diagramını çizelim.

Analyzer

Edit : ADUC'un sitedeki deneme board'unu yapıp deneyelim olmazsa..
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 13 Ağustos 2006, 00:38:19
Alıntı yapılan: "Analyzer"A.S. ...Yalnız eğer sensör olarak özelleşmiş cihazlar kullanacaksak (termokupl örneğini vermiştim) özel arabirim varsa piyasada onu kullanalım.
Şimdilik ADC okusun. Yani belki endüstriyel 4-20 mA akım gönderen transmitterlar bağlanabilir.
Alıntı YapProgramlayıcıyı yakından takip ediyorum. Belki PC yazılım kısmında ihtiyaç olursa yardımcı olmaya çalışırım ;) Uygun bir vaktinizde beraber blok diagramını çizelim.
Donanım kısmını öncelikle tamamlamak gerekiyor. Sonra mcu tarafında belirli kütüphaneleri hazırlarız. O arada PC ve mcu iş paylaşımını konuşuruz. Şimdi sanki erken gibi ve komplex işlemci ya da epromların programlanması nasıl olacağı henüz şekillenmedi.
Alıntı YapEdit : ADUC'un sitedeki deneme board'unu yapıp deneyelim olmazsa..
Ben yaptım. Gerçi sadece bir örnek program yükledim. Çalışıyor. İkinci için de kart çıkarttım fakat sadece işlemciyi monte ettim. Diğer elemanları monte etmek zor olacak. İlkinin de pin headerlarını lehimlemedim daha. Belki ribon kablo ile uzatma yaparım.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 13 Ağustos 2006, 18:59:47
Genii programina söyle bir baktim ama çalistirmadim. bi sürü dll, dosya. Daha detayli bakarim.

Aduc 70XX serisinin dezavantaji USB olmamasi, RAM 8k ve 62K flash. Ayrica Vectored Interrupt Controller olmamasi da kötü.
Ama en iyi tarafi tek çip üzerinde 12 bit adc ve 12 bit DAC olmasi, bu özellikler ARM7 çekirdegi ile birlestirilince, gömülü kontrol uygulamasi yapmak piyasadaki için en uygun çip gibi.

Bu yüzden bu uygulamada Aduc kullanilmasindan yanayim.

LPC 2148 USB olmasi güzel, üstelik internette dolasirken ARM7 için en çok uygulamayi  LPC islemciler için yapilmis oldugunu gördüm.

Termokupl kullanmak için ms'lik örneklemeye ihtiyaç yok. Termik olaylar daha ataletli oldugundan bazen 0.5 saniyelik örnekleme süresi yeterli oluyor. Mekanik sistemler için 10ms iyi bir deger.
Bu yüzden ilk etapta kart 10ms l'ik örnekleme yaparsa yeter (her örneklemede 8 örnegin ortalamasi alinacak). Daha sonra söyle bir fonksyon düsünebiliriz : 12 giristen 1 tanesi kritik onu 1ms lik aralarla örnekleyebiliriz.  
Bu ölçümleri bilgisayara seri asenkron olarak gönderebiliriz. Daha sonra USB'ye FT232 veya USB'li PIC sayesinde USB portundan gönderebiliriz, veya USB'li islemci seçeriz. USB'yi de böylece ögrenmis oluruz (Bunalmis hocamin yaptiklari bize çok yardimci olacak)
PC tarafindaki program tam olarak nasil olacak bilmiyorum, dll olur diye tahmin ediyorum.
Elektronik kisim için ise interface olarak +10V..-10V, differansiyel girisler, 4-20ma akimlar düsünülebilir. Bu interface kartlarini (analog veriyi 0...3.3V'ta çeviren) Anakartin üzerine takilir sekilde yapmak sistemi daha esnek yapar. Ayrica Encoder girisleri, buton, tll gibi dijital girislerde olmasi fena olmaz.
Karti genisletebilir yapmak içinde mecbur SPI, I2C kullanacagiz. Böylelikle ayni tür bir karta veya USB arabirimine baglanabilir.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 13 Ağustos 2006, 19:41:23
Merhaba,
Genii de bir sorun var ya da win98 gerektiriyor sanırım. Demo driver kartı yükleyemiyor. Dolayısıyle kart olmadan varmış gibi yapamıyor. Kısaca yüklü olan kartın kaynaklarını kullanmak amacıyla  strategy editor de analog input, dijital input, dijital output, timer, display gibi objeler ekleyip, okuma işlemlerini (display için AI,DI,DO, uzer prog vs.) hangi kartın hangi girişinden alacağını vs. belirtebiliyorsunuz. Genii run dediğinizde de ekranda getirdiğiniz grafik barlar, display ler vs. hepsi aldıkları bilgileri göstermeye başlıyor. İsterseniz harddiske kaydediyor. Bu işin içine görsellik katıyor. Yoksa aynen alıp dosyaya da saklayabiliriz. Ama böyle bir program arayüzü geliştirsek fena olmaz yani.

ADuC7026 işlemcide USb yok ama belki 115200 den yüksek hızlara çıkılabiliyordur. Henüz bakamadım. Olmazsa başka çareler araştırırız. Vectored interrupt controller ARM7 çekirdeğinde değil mi? Yani oluşan 6 çeşit interrupta göre işelmcide 24 bayt tutan alanda her bir interuptın oluşması halinde gideceği adresler kayıtlıdır. İnterrupt gerçekleştiğinde o dresteki 32 bitlik bilgi (daha doğrusu interrupt rutinin yerleştirildiği yerin adresi) Program Counterine yüklenir. Bu ARM7'nin çekirdeğinin içinde böyle. ARM7 kullanan her işlemcide de böyle. Hatta interrupt için gidilen rutinde status registeri working registerler vs. bilgilerini saklamaya gerek yok. Çünkü her interruptın ve normal işleyişin status, working registerleri vs. farklı.

tasarım anakarta arabirim eklentileri yapılabilecek şekilde olur sizin de dediğiniz gibi. Fakat ADCler için diferansiyel giriş olayına bakmamız gerekir. Bu durumda ADC giriş sayımız azalabilir. Belki analog multiplexing gerekebilir.

Dijital girişler, harici sayaç, dahili sayaç özellikleri eklenecek. Hızımız yeterli olursa kart üzerinde, olmaz ise bilgisayar üzerinde PID kontrolör objesi ekleyebiliriz (SISO yada MISO).

Her bir adc kanalının örnekleme sıklığı müstakilen belirtilecek. Bir de işlemci üzerinde 2 blok programlanabilir mantık dizileri var. Belki bunları da PC den programlanabilir bir şekle sokabiliriz.

Güzel fikirler geliyor. Biraz daha gelsin de toparlayalım ve speclerimizi oluşturalım.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 14 Ağustos 2006, 00:24:50
Evet ARM çekirdeginde her çalisma modu için (user, IRQ, FIQ, Abort vs.. ) ayri stacklar var.
Ama benim demek istedigim çevre birimleri IRQ olusturdugunda, islemci  ayni PIC gibi tek adrese gitmesi, sonra IRQSTA'ya bakip ona göre PWM interrupt'mu, timermi vs.. programci bakmali. En azindan datasheet'en böyle anladim (daha yeniyim).
Datasheetten çikardigim baska bi sonuçta 2 ADC pini 1 differansiyel giris olarak ayarlanabilir. Olmadi OPAMP'lar ile diferansyel yapariz.

kullanici arayüzü de modüller olmali, simdilik bunu 3 degisik programla yapabiliriz: C++builder, Matlab ve Labview. Asil is bu arayüzü windows(veya baska bir isletim sistemi) çekirdegi vasitasiyla mikrodenetleyicimizle haberlestirmek.
Arayüzde zaman'a göre grafik çizdirme fonksyonu mutlaka olmali.

önce verileri arayüz sayesinde alip gönderelim sonra kontrol algoritmalarimizi koyariz. Benim koymayi düsündügüm algoritmalar RST, durum geri beslemesi, gözlemci, parametreleri dinamik olarak degisen filtreler (LQR, Kalman, nonlineer). Bu algoritmalari koymadan önce sistem analizi ve tanimi yapmak için verilerin Matlab'da toplanmasi sart.
PLA'lar da gerçekten ilginç bir özellik de, nasil en iyi sekilde kullanilir onu bilmiyorum. PLA'larin çikisi diger pin veya IRQ için kullanilabilir.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 00:52:12
Örnek programlara bakıyordum ben de. Bizim universal programlayıcı için kullanacağımız lcd ekranı ADuC'a bağlayıp deneyecektim. Biizm çevirmeye başladığımız fakat bıraktığımız bir döküman vardı. Çeviri odasında ARM7 altında linki var. Gerçi LPClere yönelik ama interrupt kısımları ARM7 çekirdeği. Aslında ARM7 de bir de TDMI var bu nedir bilmiyorum. Sanki harici interrupt kaynakları için 16 vektör tanımlanabiliyor diye hatırlıyorum. Uzun zaman oldu ve o kısımlar çevrilmemişti. Bir kere daha bakmak lazım.

Kullanıcı arayüzü modüler olacak. Display vs. gibi objeler eklenince o objelerin dll leri devreye girecek. Haberleşme seri porttan olacak çaresiz. Baud rate generator kısmına sanki daha yüksek hızlara çıkmak mümkün görünüyor (CD 2 seçilirse ve DL 1 gibi, hatayı da fractional brgenerator kısmıyla indirebiliriz.)
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Analyzer - 14 Ağustos 2006, 00:55:00
Selam,

C++ Builder diyorum :) (Kaçamak oldu biraz ama ne yapayım ben de bu mereti iyi sayılacak derecede biliyorum)

Analyzer
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 01:11:43
Hocam, benim de tercihim C++Builder. Bunda yazılan kodlar Linux'a da taşınabilir (gerçi o şimdiki sorunumuz değil). C++Builder'i ben de kullandım. Kütüphaneleri çok fazla bilmesem de işimi görecek şeyleri helpten bularak halledebiliyorum bir derece.

Matlab ve labview haberleşme standartı var mı bakmak lazım. Dün linkini verdiğim bir sitede seri haberleşmeli kartları labview ile kullanmışlar. Bazı komut setlerini de vermişler. Belki standarttır. Deneriz :D
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 01:27:54
http://www.ontrak.net/commands.htm bahsettiğim kartların komutları. Bu kartlar labview ile de kullanılıyor.

Bu da bir örnek:
10 OPEN "COM1:9600,N,8,1,CS,DS,RS" AS#1
20 CLS
30 LOCATE 1,1
40 PRINT#1, "RD0"
50 INPUT#1, POT1
60 PRINT#1, "RD1"
70 INPUT#1, POT2
80 POT1=(POT1/255)*100 :PRINT "POT#1 IS AT"POT1, "PERCENT"
90 POT2=(POT2/255)*100 :PRINT "POT#2 IS AT"POT2, "PERCENT"
100 GOTO 40  
     

The following test programs outline the proper syntax for using the commands in simple applications. The first program retrieves the status of analog port 0 and displays the data on the video screen. The second program configures PORT A as output, sets the port to decimal 255, reads back the port status and displays the data on the video screen.

/* PROGRAM EXAMPLE ONE - ANALOG PORT TEST PROGRAM */

#include <stdio.h>        
#include <bios.h>        
#define com1 0        
#define settings (0xE3)        
main( )        
{ /* declare an0 as a floating point number */        
float an0 ;        
/* configure com1 9600 baud, 8 bit words, no parity */        
bioscom (0,settings,com1);        
/* send RA0 command to ADR101 on com1 */        
fprintf(stdaux,"RA0 \xD");        
/* initialize com1 buffer */        
fscanf (stdaux,"%e",&an0);        
/* print data on screen */        
rewind (stdaux);        
/* read data from com1 and store it at address of an0 */        
printf ("ANALOG PORT 0= %e PERCENT \n",an0); }
       


A complete BASIC program which reads analog port 0 and sets PA0 if the analog port is above 50% ( 2.5 volts ) is shown below;

10 OPEN "COM1:9600,n,8,1,CS,DS,RS" AS#1 ;opens and configures serial file
20 PRINT#1, "CPA11111110" ;configures PA0 as output
30 REM  FORCES
40 PRINT#1, "RESPA0" ;resets PA0
50 REM FORCES
50 PRINT#1, "RA0" ;sends RA0 command
60 INPUT#1, AN0 ;receives data into variable AN0
70 IF AN0>50% then PRINT#1, "SETPA0"' ;sends SETPA0 command if
80 GOTO 50 AN0>50% and returns to line 50
90 PRINT#1, "RESPA0" : GOTO 50 ;resets PA0 and returns to 50

         
Örnekler hep aynı mantık üzerine. Demekki Labview de bu komutlarla sorgulama yapıyor :D
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 14 Ağustos 2006, 01:39:15
TDMI'yi az çok anladim gibi (Thumb mode, debuger, long multiply, ICE), benim merak ettgim philips'in -S neyi ifade ediyor?
çevirme odasindakileri göremiyorum, indan dogrudan datasheet'ten okuyorum.
FIQ'ler için interruptun nerden geldigini ögrenmek için FIQsta'ya bakildigina neredeyse eminim.
Ben ADuC'un datasheet'in interrupt vector görmedim. Gerçi önemli okadar önemli bisi değil ama olsaydi fena sayilmazdi bence. En son Renesas'la çalistigim için IRQ'lerin vektörlenmesinin ve öncelik koymanin  faydalarini gördüm.
Bi tane C++ ile standart arayüz yapalim.
Benim esinlendigim sey bikaç ay önce gördügüm datalogger.
içine baktigimda USB PIC koymuslar bir opamp, voltaj referans, oldu sana 4 kanal 8bit datalogger (en kisa örnekleme zamanini hatirlamiyorum tam,  100ms veya 10ms olabilir ). Yanina kendi yazdiklari bir arayüz koymuslar, verileri görüntülemeyi sagliyor ve dosyaya kaydediyor. Ayrica dll vermisler ve bununla istediginizi arayüzü yapin demislerdi.
Bende bunun gibi esnek yapiya sahip bisey istiyorum (bir arayüz değil, uygulamaya göre birçok arayüz kullanalim).

Bide merak ettigim, o data loggerda kademe ayari vardi, 0..30V 0..15V 0..5V 0..3V gibi seçilebiliyordu. Bunu elektronik olarak nasil yapmislar acaba? Gerçi benim bi fikrim var, o da open collector çikislarini opamp devresinde kullanmak. Ama o zaman fazla parazit olmazmi?
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: ground - 14 Ağustos 2006, 02:09:17
Alıntı yapılan: "picusta"çevirme odasindakileri göremiyorum, indan dogrudan datasheet'ten okuyorum.

@picusta üstadım artık görebiliyorsun..  ;)
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 09:25:42
http://www.hemenpaylas.com/download/78401/lpc-ARM-book_srn.pdf.html

Bu kitaptan bahsetmiştim. Bunun küçük bir kısmını çevirdik. Sayfa 70 te vectored interruptı anlatıyor. 16 adet vektör tanımlanabiliyor. Hatta öncelikleri de atanabiliyor. Sanıyorum bu Philipse özel bir durum değil. ARM7 datasheetine bakmak lazım. Bunlar ADuC datasheetinde olmayabilir.


Çeviri yaptığım kısmın bağlantısı çeviri odasında vardı. 20 sayfa kadar çevirdikten sonra interruptlar önemli diye oraya öncelik vermiştim. Sanıyorum 3-4 sayfa da oradan çevirmiştim.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 13:36:54
http://www.ni.com/devzone/idnet/developid.htm
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: mp3dragon - 14 Ağustos 2006, 14:17:05
@Ziya
kitabın çevirdiğin kısmı kadarını gönderebilirmisin?
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 14:43:54
Alıntı yapılan: "mp3dragon"@Ziya
kitabın çevirdiğin kısmı kadarını gönderebilirmisin?
Henüz düzeltme yapılmadı. Olduğu kadarını göndereyim. Ortak çalışma yaptığımız arkadaşlar ve çeviri grubu üyeleri haricinde başka isteyen olursa maalesef düzeltme yapmadan ve dergide yayınlamadan göndermeyeceğimi peşinen söyleyeyim.

Hocam, pm den mail adresini gönderebilirmisin. Ya da akşam msn den göndereyim.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: kurumahmut - 14 Ağustos 2006, 19:24:13
@Ziya

Bu ara bende bu kaynağı ve LPC2138 datasheetini kullanaraktan çalışmalar(doğrusu öğrenme) yapıyorum. Keil yazılımı ve LPC2138 kullanaraktan birşeyler öğrendim. Timer, UART, RTC, Kesmeler, SPI(gelişmekte) filan... Staj defterimde ARM anlatmayı düşünüyordum. Katkı sağlayabilirim. Çeviri grubunun CCS ile uğraştığını biliyordum. ARM a ne zaman başlandı. Üyelik kapalı. Ama bu konu da dahil olabilirim...
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 14 Ağustos 2006, 21:00:29
Alıntı yapılan: "kurumahmut"@Ziya

Bu ara bende bu kaynağı ve LPC2138 datasheetini kullanaraktan çalışmalar(doğrusu öğrenme) yapıyorum. Keil yazılımı ve LPC2138 kullanaraktan birşeyler öğrendim. Timer, UART, RTC, Kesmeler, SPI(gelişmekte) filan... Staj defterimde ARM anlatmayı düşünüyordum. Katkı sağlayabilirim. Çeviri grubunun CCS ile uğraştığını biliyordum. ARM a ne zaman başlandı. Üyelik kapalı. Ama bu konu da dahil olabilirim...
Hocam sen bizden ilerdeymişsin :D Çeviri grubunda ARM7 çevirisine başlamıştım. CCS ile uğraşan grup başkaydı. Katkı sağlamana memnun oluruz.

Ground hocam, mahmut kardeşimizi de çeviri grubuna dahil edebilirmiyiz?
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 15 Ağustos 2006, 01:08:58
Dediginiz ARM lpc'yi anlatan kitabi daha önce download edip lpc VIC ile ilgili olan bölüme bakmistim.
Ayrica Coskun'un vermis oldugu ARM SoC kitabina da baktim. çikardigim sonuç ise su:
ARM çekirdeginde olan istisna exceptions vector (Reset, FIQ, IRQ, Abort, SWI).  Philips'de MCU'nun içine AMBA AHP (Advanced High performance Bus ) bus'u sayesinde ayriyeten IRQ'ler için Vectorized Interrupt Controller koymuslar, 16 çevrebiriminin interruptu vektörleniyor.
ADuC'ta maalesef böyle bir kontrolör yok.
Bizde onsuz yapacagiz, belki interrupt latency performansi düsecek o kadar.
LPC ile ADuC karsilastirmasinda son bisey daha :
ADuC'un 3 faz kontrol çevre birimi gayet güzel. LPC'nin de SPP (SPI) çevrebiriminin hünerleri saymakla bitmez : iste 512 × 240 pixel çözünürlüklü osiliskop (SPP ve interrupt'u kullanilarak yapilmis) http://www.jandspromotions.com/philips2005/Winners/AR1755.htm

Konumuza dönersek MCU'ya komut gönderebiliriz ( parametre ayari, konfigürasyon...) veri gönderebiliriz (DAC degerleri) o da bilgisayara kendi verilerini gönderecek (kendi durumu, ölçümler).
örneklerde sadece 1 bayt okudugu için is biraz daha kolay.

Matlab'da GUI editör kullnarak nasil veri toplama yaptigimi anlatayim:
seri porttan okumak için 2 alternatif var :
ya fscanf kullanmak o zaman okumayi yapana kadar bilgisayar orda bloke oluyor yada callback fonksyon (event üzerine çagriliyor) kullanmak event 'da 2 çesit: ya belli sayida karakter alana kadar yada belli bir karakteri (örnegin [CR][LF]) alinca olusuyor.
Ayrica degerleri grafige çizsin diye 0.5 saniyelik timer eventine bagli bir çizme fonksyonu var.
Arayüzü Visual BASIC'te MSCOMM kullanarak yazmaya benziyor.

Matlab'da Simülink içinde çalistirmak içinde RS232 bloklari kullanilabilir (Bu bloklar internette open-source olarak veriliyor ).

Bu arada Mahmut kardesim hosgeldin, bu projeye katki yapacagindan süphe yok. Hatta bu projenin LPC 2138'li versiyonuda yapilabilir.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 15 Ağustos 2006, 01:31:50
Çok fazla interruptların derinine inmemiştim. Aslında karşılaştırmalı olarak incelemek baya fikir veriyor işlemciler hakkında.

Ben de ADuC seri portuna kıl oldum. Modem kontrollerini kullanmak istersem spi ve 2 adet i2c kullanılamaz oluyor. Uzakta kurulacak bir sistem için modem kullanmak gerekirse spi kullanamayacağım. Tabi MMC kar ta. Bu nasıl tasarım anlayamadım. SPI ve i2c kullanılsın isterse bu sefer de seri port gönderme ve alma bacaklarının yeri değişiyor. Neyse bu işi daha sonra düşüneceğiz.

Nokia 6110 ceptel (3100 için philips idi sanırım benimki) için Atmel işlemcide yazılmış bir programı aktardım ADuC7026'ya. Çalıştı çalışmasına da iki sorun var. Ekran ledleri 6.5 volt vermezsen sönük kalıyor ve renkler anlaşılmıyor (bir de ekran biraz yamulmuş olarak hediye edilmişti bana). Diğeri bir bacağı 1 ya da 0 yapmak için 3 assembler komutu derlemiş Keil. Bunun tek komutluk versiyonu olması gerekir. Yoksa öyle karmaşık işlemleri tek assembler komutunda yapanbir çekirdek bir bacağı 1 yada 0 yapmak için 3 komut harcamamalı. C de kullandığım yöntemi değiştirerek deneyeceğim.

Bu gün aklımdan bu ekranla mini bir osiloskop yapayım diye geçmişti. Pişti yaptınız :D

Bir de basit bir pid kontrolör koyup parametrelerini ekrandan girebileceğim bir şey yapacağım. Derginin 3. sayısı için.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 15 Ağustos 2006, 01:59:19
Evet sonuç olarak ADuC haberlesme konusunda zayif.

Benim blinky kodundan çikan LST bu:
Port read/modify/ write (toggle)
  42:     GP4DAT ^= 0x00040000;               /* toggle P4.2 LED                   */
LDR         R2,=0x40000
LDR         R0,=0xFFFFF460
LDR         R1,[R0,#0x0]
EOR         R1,R2
STR         R1,[R0,#0x0]


Sanki önce portun adresi yükleniyor, sonra dolayli adresleme ile port registeri okunuyor sonra degistirilip dolayli olarak yaziliyor.

  44:   deger++;
LDR         R0,= deger; deger
LDR         R1,[R0,#0x0] ; deger
ADD         R1,#0x1
STR         R1,[R0,#0x0] ; deger

burda yine ayni sey oluyor. Acaba dogrudan yazmaçin degeri yükleyip (R0'dan geçmeden) degistirip onu yazmanin bi yolu yok mu? compiler seçenegi olarak olmasi lazim diye düsünüyorum. Bi de ayni kodu IAR'da derlesek acaba ne çikar?
Cep osiloskopu çok güzel bir fikir.
Demek derginin 3. sayisini simdiden düsünüyorsunuz. Ilk 2 sayi simdiden doldu  8O .
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 15 Ağustos 2006, 04:31:30
Alıntı yapılan: "picusta"Evet sonuç olarak ADuC haberlesme konusunda zayif.
Evet
Alıntı Yap...
Sanki önce portun adresi yükleniyor, sonra dolayli adresleme ile port registeri okunuyor sonra degistirilip dolayli olarak yaziliyor.
Datasheet sayfa 33 te Memory Mapped Registers kısmında dolaylı adresleme yapılır diyor  :(  Ayrıca Advanced Peribleral Bus (APB) ye erişim2 cycle deniyor. Fakat GPIO, Flash/EE hafıza ve PWM Advanced High Performance Bus üzerinde imiş.
Alıntı Yapburda yine ayni sey oluyor. Acaba dogrudan yazmaçin degeri yükleyip (R0'dan geçmeden) degistirip onu yazmanin bi yolu yok mu? compiler seçenegi olarak olmasi lazim diye düsünüyorum. Bi de ayni kodu IAR'da derlesek acaba ne çikar?
Bu sanırım ADuC'un yamukluğu.  Philips'in örneklerine bakmak lazım
Alıntı Yap
Cep osiloskopu çok güzel bir fikir.
Aslında 100 YTLye renkli kranlı, 1 GB hafızalı mp3 playerlar var. Birini alıp bozup osiloskop ve mp3 player mı yapsak. içerisinde kullanılan çin yapımı işlemcinin de derleyicisi mevcuttu biryerlerde (S1mp3 ?)
Alıntı YapDemek derginin 3. sayisini simdiden düsünüyorsunuz. Ilk 2 sayi simdiden doldu  8O .
Demek istediğim malzeme dolmasından ziyade o kadar çok şey çıkartılabilir ki pek çok sayı için yazı hemen bulunabilir demek istedim.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 17 Ağustos 2006, 01:49:31
Performasi etkileyen diger bir unsur da su:
ARM modda flashtan 32 bit'i okumak için (ARM modda 1 komut) 2 clock gerekiyor. Yani 41.78MHz çalisan ADuc'te Flash'tan ARM komut çalistirinca hiz 20.89 MHz'e düsüyor. Bunu önlemek için ya o kodu Ram'a atmak gerekiyor yada Thumb moddunda flashtan çalistirmak. Universal programlayici projesinde kullanmayi düsünüyosaniz bunu mutlaka gözönünde bulundurmalisiniz.
Ben simdi buraya bir iki elektronik sema koyayim, mesela -10V.. +10V'u 0....3.33V 'a çevirme devresi (ve tersi). Projede somut gelisimeler olsun. Kurumahemet ve Analyzer arkadaslarimiz da ARM + PC programina el atsalar bu proje 1. sayiya bile yetisir.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 17 Ağustos 2006, 10:53:44
Alıntı yapılan: "picusta"Performasi etkileyen diger bir unsur da su:
ARM modda flashtan 32 bit'i okumak için (ARM modda 1 komut) 2 clock gerekiyor. Yani 41.78MHz çalisan ADuc'te Flash'tan ARM komut çalistirinca hiz 20.89 MHz'e düsüyor. Bunu önlemek için ya o kodu Ram'a atmak gerekiyor yada Thumb moddunda flashtan çalistirmak. Universal programlayici projesinde kullanmayi düsünüyosaniz bunu mutlaka gözönünde bulundurmalisiniz.
Memory Accelerator Module LPC2100 serisinin bir özelliği oluyor bu durumda. Gerçi Thumb modunda ADuC ta 1 komut 1 ic da işleniyorsa bu durumda ADuCta da MAM var ama 64 bitlik olsa gerek. LPC2100lerde 128 bitlik 2 bank var. Birinin okuduğu komutları işlemci kullanırken diğeri flashtan okumaya geçiyor. Universal programlayıcıda ADuC kullanılmayacak. Bir de sanıyorum yazılım Thumb modda yapılacak. Mümkün olduğunca çok algoritmayı gömmek için.

Hocam sende ne cevher varmış öyle :D çok ilginç tespitlerin var. Bundan bile bir makale çıkar yani :)

Alıntı YapBen simdi buraya bir iki elektronik sema koyayim, mesela -10V.. +10V'u 0....3.33V 'a çevirme devresi (ve tersi). Projede somut gelisimeler olsun. Kurumahemet ve Analyzer arkadaslarimiz da ARM + PC programina el atsalar bu proje 1. sayiya bile yetisir.
Şimdilik yukarıda verdiğim bağlantıda anlatılan komutları işleyen bir algoritma kurulabilir. Elimizde kartlarımız olduğuna göre biz ADuC kısmına el atalım o zaman. PC kısmında Analyser ve Kurumahmut hocam o komutları gönderebilecek şekilde bir program hazırlasa da haftaya deneme yapsak. En azından bir aşama kaydedilir senin de dediğin gibi.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: mp3dragon - 17 Ağustos 2006, 11:00:20
Tüm arm'lerde thumb ve Arm modu arasında hız ve program hafızası farkı oluyor. Zannedersem bu lpc serisinde %60 kadardı. O kadar çok data okudum ki şimdi nerde gördüğümü hatırlamıyorum ama galiba Keil sitesinde idi.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Analyzer - 17 Ağustos 2006, 21:18:41
Selam,

İkidir ADUC deneme kartını basıyorum yollar 0.25 olduğu için 1-2 tanesi kopuk oluyor :( Öyle olunca üstüne düşemedim. Benim yazıcıda da bir dandiklik var. Pazarı bekliyorum yeni kart çıkarmak için.. Elinde hazır kart olan varsa ücreti mukabilinde de alabilirim.

Analyzer
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Ziya - 17 Ağustos 2006, 23:53:20
Hocam, ben iki kart çıkarttım. Birincisinin işlemcinin oturacağı yol üzerinde 3 tane yol koptu. Ribon kablodan çıkarttığım çok ince bir tel ile kopan yerlerle işlemci bacaklarına lehimleyerek yama yaptım. Bu kartın montajını tamamladım ve kullanıyorum. Diğer kartta öncce işlemciyi monte ettim ama bir tane yama yapacağım kopuk yer var. Geri kalan kısmını monte etmediğim gibi deliklerini de delmedim. Bu haliyle işini görmez ve senin yapacağın da bundan farklı olmayacak. Bence kopan yerlere yama olayını dene derim. Kuşe kağıtla toner transfer tekniği kullanmıştım. Siz reklamcıların kullanmayıp attığı yağlı kağıdı kullanırsanız benimkinden çok daha mükemmel sonuç alırsınız. Eğer yapamazsanız yama olayını ben elimdekinde yapayım ve size göndereyim.

Bu gece lcd ekran fontlarını deneyeceğim. Yarın ADC kısmını ve komutları adapte edip ilk denemeyi yapabilirim. Sonuçları bildiririm.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Analyzer - 18 Ağustos 2006, 15:59:44
Alıntı yapılan: "Ziya"Siz reklamcıların kullanmayıp attığı yağlı kağıdı kullanırsanız benimkinden çok daha mükemmel sonuç alırsınız.

Evet bende tam bu kağıdı kullanıyorum :) (Bu arada bu kağıttan başkasıyla vakit kaybetmeyin bir tek bu kağıt uğraştırmadan %100 veriyor) Dedim ya benim yazıcımda dandiklik var. Drum'ı öldü ben hala elektroşokla yaşatıyorum.. Neyse, yeni yazıcı alacağım kampanyadan. Pazara bu iş tamam olur inşallah ;)

Analyzer
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 18 Ağustos 2006, 17:52:51
Bende (Büyük, A4 boyunda) yapiskan kagitlarin arkasi ile deniyorum.
Fakat kagit o kadar kaygan ki toner yapismiyor. Bazen yazicidan çikmadan bile toner kayiyor.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: Göktuğ - 18 Ağustos 2006, 18:09:06
picusta bir tane cıktı alıyorsun normal kagıda. sonra pcb nin oldugu yere gelecek sekilde onlardan yapıstırıyorsun değilmi? yoksa kagıdı a4 olarak tamamen yazıcıya vermiyorsun umarım .
Reklamcıalra gidip  onlardan isterseniz veriyorlar tonla bedava.
Başlık: ADUC7026 ile genişletilebilir veri toplama projesi yapıyoruz
Gönderen: picusta - 18 Ağustos 2006, 18:19:02
Yok simdi fabrikada kolilere yazicidan yapiskan kagida çikartip öyle yapistiriyorlar. Dolayisi ile tonlarca A4 boyunda yapiskan kagit arkasi çöpe. Ben onlari degerlendirmek istedim ama pek iyi sonuç vermiyor (yazici kismi).