Merhabalar. Elimde STM8S eval board bulunmakta. Hangi derleyiciyi kullanarak başlamam daha kolay olur ve hangisi daha kullanışlıdır. Çok yeniyim. Yardımcı olabilir misiniz?
iar ile standart kütüphanesi ile başlaman en kolay olur.
standart kütüphanes : http://www.st.com/en/embedded-software/stsw-stm8069.html
iar : https://www.iar.com/iar-embedded-workbench/partners/stmicroelectronics/
sana kalan stm kütüphanesini iar a import edmen . Konusu forum da vardı .
Hocam peki IAR yerine Cosmic C kullansak daha mı zor olur? Bazı yerlerde kodlar GPIO_... şeklinde devam etmekte bazılarında PA_ODR ... şeklinde gidiyor. Ben GPIO kütüphanesini kullanarak programlamak istiyorum çünkü daha basit anlıyorum kodları inceleyerek. Yardımcı olabilir misiniz ?
forumda stm8 yazı dizisi mevcut
Arkadaşlar öğrenecekseniz assembly öğrenin C da yazarsanız bu muazzam çiplere haksızlık etmiş olursunuz.
stm8 in şahane asm opcodeleri vardır. Zaten kendi derleyicisi de var.
Ben stm8 öğrendim öğreneli stm32 leri mecbur olmadıkça kullanmıyorum.
Ayrıca stm8 16bit registerleri vardır 8bit işlemci değildir.
Alıntı YapAyrıca stm8 16bit registerleri vardır 8bit işlemci değildir.
http://www.st.com/en/microcontrollers/stm8s103f3.html (http://www.st.com/en/microcontrollers/stm8s103f3.html)
Adamlar 8 bit yazmış ama :)
STM8 8bit bir mikrodenetleyicidir. Bir mikrodenetleyicinin kaç bit olduğu DATA BUS hattının kaç bit olduğu ile ilgilidir.
Hangi derleyiciyi, nasıl kullanabilirim bana yardımcı olabilir misiniz? Veya konu linki varsa onu buraya koyabilir misiniz konu linki de bulamadım.
Hayır arkadaşlar arada derede kalmış bir mcu.
And, or, xor haricinde bütün opcodeler 16 bit yapılabiliyor, 2 tane 16 bit registeri mevcut compare, toplama çıkarma adresleme bu registerlerle yapılabiliyor, hafıza adreslemesi zaten 16bit.
Yukarıdaki mesajda yazdik ama yinede birdaha paylaşalım linki
https://www.picproje.org/index.php?topic=43359.0
Arada kalmış bir MCU değildir. 8 bir bir MCU dur.
PIC MCu larda 12bit 14bit op kode olması onun 8bit MCU olduğu gerçeğini değiştirmez hatta cpu örneği verecek olursak Z80 CPU da da 16bir registerler var ve 16bit işlem yapılmasına hatta adres veriyolu 16bit olması onun 16bit yada orada olduğunu göstermez kelime yanı DATA bus genişliği kaç bit olduğunu gösteri.
Ayrıca STM8 serisi ARM çekirdeği deği STM in kendi çekirdeğidir. ARM hiçbir zaman 8bit çekirdek tasarlamamıştır.
Elektronikte herşey NET'dir arkadaşlar. Arada derede kalan birşey olmaz. Bunu hepimiz biliyoruz. O yüzden bu tarz teknik olmayan yorumlara sadece saygı duyalım :) Kişinin kendi görüşüdür. Dünyanın düz olduğunu düşünen insanlarda hala var biliyoruz.
8Bitlik bu MCU için Cosmic ve ST Devoloper'da tercih edilebilir. Cosmic son hamlesinde derleyiciyi komple free hale getirdi. IAR tavsiyem olur ama cosmic de free olması açısından tercih edilebilir. 10 cent'lere STM8S003 ürünleri olduğunu biliyoruz. STM8 serilerinin programlaması, kütüphaneleri ve içerdiği donanımların fazlalığı uygulama yazmayı kolaylaştırıyor. ARM'den önceki geçiş açısından epey faydalı olmuştu bana.
Tamam 8 bit olsun ,peki 16bit komutları, registerleri, yok mu sayacağız.
Tutulmayan St7 lerden farkı 16bit komut seti eklenmesidir bu nedenle stm8 ler
tuttu, Pic de de yok 16bit işlem hakkı, şimdi bunlar eşittir diyebilirmiyiz?
Sanki data bus adsress bus dışarıda. Adam bütün komutları 16bit yapsa clocku
artırıp 16bit diye satsa, anlayacaksınız sanki 8 bit olduğunu.
16bit komutlar çok değerlidir. C veya yüksek seviye dillerde program yazarken
farketmemiş olabilirsiniz (tabi kodunuz yavaş çalışınca anlarsınız)
ama asm de bu çok değerli bi özelliktir.
Stm32 lerde asm ile kod yazmanın hiçbir anlamı yoktur, ama st8 lerde düşük
hız ve düşük hafıza nedeni ile asm de kod yazmak iyi şecenek olacaktır.Neyse ne yapıyorsanı yapın.
TI'in 16 bitlik DSC cipleri 16x16 carpma islemi sonucunda 32 bit deger uretir ve bunu 32 bitlik ozel bir registerde tutar.
DSC 16 bit olmasina ragmen ACC 32 bittir. Toplama, cikarma ve carpma islemlerinde avantaj saglar. Ayni cip lojik islemlerde 16 bit ile sinirli oldugundan cipimize 32 bit diyemeyiz.
Gene TI'in bazi 16 bit DSP ciplerinde cip 16 bit olmasina ragmen akumulatorun gardiyan gorevi yapan 2 biti daha vardir. Yani ACC register 16 degil 18 bittir.
ASM ASM dir ve her islemcide en hizli kosacak kod parcaciklarinin yaziminin tek ama tek secenegidir. 32 bit STM32 islemcide de oyledir 8 bit islemcilerde de oyledir.
Bir cipin saf kan 16 bit olabilmesi icin tek bir komutla 16 bit veriyi ACC icine cekebilmesi lazim.
Eger 16 bit veriyi 2 adet H ve L seklinde 8 bit olarak ACC icine cekerseniz bu cipe saf kan 16 bit diyemeyiz.
Evet 16 bittir ama saf kan 16 bit degildir. Bu haliyle bile 16 bit aritmetik lojik islem yapabilir ama saf kan 16 bit degildir.
32 Bit islemci arayisimda TMS320F28x serisinden begenip kitini de aldigim DSC, 32 bit verileri Accumulatore 16, 16 olmak uzere iki hamlede yukluyordu. Sirf bu yuzden yonumu STM32'ye cevirdim. (Bana gore STM32 de safkan 32 degil)
Safkan arıyosanız pic32xx serisi.. :D
Stm32 nin 32 bit registerlari yok mu, bir seferde 32 bit islem yapiyor biliyorduk, neden safkan 32 degil, aritmetik islemlerde mi alicengiz var?
Registerlere tek cirpida 32 Bit immediate deger yukleyemiyor/ 32bit immediate deger ile lojik/aritmetik isleme tabii tutamiyorsun. (Pseudo code ile romdan immediate deger yukluyorsun ama kabak tadi veriyor)
Register icerigi ile memory icerigini isleme tabii tutamiyorsun.
Risc islemcilerin boyle/benzeri eksiklikleri var. STM'lerin Advanced Risc Machine (ARM) olusu nedeniyle risc bana gore risk dir. Bu yuzden bana gore saf kan degil.
Saf kan olacaksa 80X86 turevlerini kullanmak gerek. (Gerci 32 bit immediate degerleri 20 yil onceki pentiumlarda da yukleyemiyorduk galiba)
Alıntı yapılan: Zoroaster - 06 Mart 2018, 18:28:11
Registerlere tek cirpida 32 Bit immediate deger yukleyemiyor/ 32bit immediate deger ile lojik/aritmetik isleme tabii tutamiyorsun. (Pseudo code ile romdan immediate deger yukluyorsun ama kabak tadi veriyor)
Register icerigi ile memory icerigini isleme tabii tutamiyorsun.
Risc islemcilerin boyle/benzeri eksiklikleri var. STM'lerin Advanced Risc Machine (ARM) olusu nedeniyle risc bana gore risk dir. Bu yuzden bana gore saf kan degil.
Saf kan olacaksa 80X86 turevlerini kullanmak gerek. (Gerci 32 bit immediate degerleri 20 yil onceki pentiumlarda da yukleyemiyorduk galiba)
İşte bu yazdıklarınız nedeni ile ARM de asm yazmak işkence gibi oluyor c de inline yapayım diyorsun hata üstüne hata mesajı . Stm8 böyle değil bi iki örnek vereyim
LDW X,#3554 ;;; x registerine 3354 yükle
LDW Y,1000 ;; y registerine 1000 nolu hafızanın içindeki sayıyı yükle
ADDW X,1000 ;; x e 1000 nolu hafızadaki sayıyı topla
sevdiğim bazı komutları
btjt 1000,6,__label ;; 1000 nolu hafızanın 6.biti 1 ise labele atla
bres 1000,3 ;; 1000 nolu hafızanın 3. bitini 0 yap
Alıntı Yap(Gerci 32 bit immediate degerleri 20 yil onceki pentiumlarda da yukleyemiyorduk galiba)
Yok hocam nerde intel mimarisi , sırf düşük enerji tüketimi nedeniyle aldı yürüdü ARM kim ne derse desin kötü bi işlemcidir.
mov eax,65465465 ;;;registere yükle sayıyı
Add [12788555],1145574 ;;;;direk hafızadaki değeri sayıyla topla
add [5545454],eax ;;;; eax reğisterini hafıza ile topla
bunlar intel
Benim yıllar önce yaptığım bir çalışma,, intel kodları 256byte asm ve msdos 3d grafik oluşturma
http://www.pouet.net/prod.php?which=54490
Bu ise dünyada insan zekasının ulaşacağı en yüksek seviye incelemenizi tavsiye ederim kodları var
http://www.pouet.net/prod.php?which=53816
Bülent abi tam senin dişine göre safkan 32 bit mcu :D
İnfineon SAK-TC1736-128F80HL