Cortex M3 çipleri STM32F103

Başlatan z, 08 Ocak 2013, 03:19:54

fractal

şöyle bir durum tespit ettim neden oluyor bilmiyorum.örneğin d0 pinini high yapan programı yüklüyorum.daha sonra bambaşka bir yazılım yapıyorum ve d0 pinini hiç kullanmıyorum.onu yüklediğimde bile program çalışınca d0 pini high oluyor.bunu anlamadım.istesem yapamam.

aynı şekilde pwm modülünü çalıştırdım.daha sonra çalışması sağlayan kodları çıkardım.yine her türlü çalışıyor...
Restantum cogniscutur Quantum deligutur

ErsinErce

#181
Alıntı yapılan: z - 19 Mart 2013, 12:39:16
Peki nasıl olacak?

Keilin Debug ayarları kısmında kullandığımız jtag ayarlarında debug/reset e baktığımızda TI de RSTREQ gibi bir durum ayarlıyken
Jlink, ST gibi JTAGlerde bu kısım normal de belki bu ayarı core'a getirirsek istediğiniz olur hocam

bağlı olmadan taktığımdan connect kısmının seçimler yok oradaki ayarlardan da olabilir

http://www.keil.com/support/man/docs/jlink/jLink_conf_debug.htm
normalde cpu u durduruyor diyor gerçi =/


z

Bunu Cip içindeki bir registerden belirlemek lazım diye düşünüyorum. Keil JTAG üzerinden yapabiliyorsa zaten biz de kod ile bunu yapabiliriz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#183
Alıntı yapılan: z - 19 Mart 2013, 16:27:31
Bunu Cip içindeki bir registerden belirlemek lazım diye düşünüyorum. Keil JTAG üzerinden yapabiliyorsa zaten biz de kod ile bunu yapabiliriz.

CPU bir halt işlediğinde Timer vs çevrebirimlerinin durup durmamasını DBGMCU_CR registerinden ayarlayabiliyormusuz.

mesaj birleştirme:: 19 Mart 2013, 23:20:05

STM32F103C8'de pinlerle bağlantısı olan Timerlarımız TMR1...4

TMR5 ve sonrası çipin içinde varmı?

Bütün timerları aynı Relod değeri yükleyerek aynı değerde taşacak şekilde çalıştıracağım.
Fakat timerların hepsine birden tek hamlede start verebilmek istiyorum.

Senkronizasyonla ilgili bir şeyler var ama istediğim oluyormu anlamadım.

Tüm timerları aynı anda durdurup aynı anda çalıştırabilirmiyim?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#184
Evet TIMx_CR2 den tüm timerları enable etmemize yarayan kurulum var.

Tam detayın bakmadım fakat MMS bitlerini 001 yapacağız. Bu tüm tümerların ENB girişlerinin tek noktadan kontrol edilmesini sağlayacak.

Timerları enable disable etmeden resetlemek de aynı işi görecek gibi.

mesaj birleştirme:: 20 Mart 2013, 02:27:03

DOC ID 13902 Rev 14 (32F103 un rehber dokumanı) de 392 sayfadaki tabloya göre;

TIMx_SMCR registerinde TS Bitlerini 011 olarak set edersem;

Slave tanımldığım Timer 2 ve Timer 3, Master tanımladığım Timer 4 tarafından tetiklenecek.

Doğrumudur?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Elimdeki STM32F103 dokumanı Low, Medium, High, XL çiplerin hepsini birden anlatıyor.

Halbuki ben STM32F103C8 ile ilgileniyorum ve dokumanda diğer çiplerin anlatımları sık sık hata yapmama neden oluyor.

Sadece STM32F103C8 çipin registerlerini anlatan sadeleştirmiş dokuman varmı?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

STM32F103C8 de TIM2 yi remap etmam gerekiyor. Ayrıca JTAG yerine de SWD kullanacağım.

Şimdilik SWD kalsın dedim ve TIM2 yi remap etmeye çalışıyorum. Bir türlü olmadı.

APB2ENR de 0. biti set ederek AF remap registerin clock isaretini verdim.

Ardından da AFIO_MAPR registerine 0x00000300 yazıyorum.

Ardından da ne yazmışım diye geri okuyorum. Okunan değer 0x00000000

Test amaçlı olarak 0xFF yazar geri okursam 0xFF okuyorum. Demekki registere yazma sorunum yok.

RM0008 dokumanında sayfa 179 (Rehber dokuman) da bu register anlatılmış. Fakat low-medium-high ve XL için aynı sayfada açıklama yapılmış.

Anlatımda high 16 yı ve ortadaki değil alttaki Low 16 yı STM32F103C8 için AFIO_MAPR olarak algıladım.

Sorun ne olabilir? Neden 0x300 yazarsam geri okuduğumda 0x0000 okuyorum?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

En çok korktuğum hatayı yapmışım.

AFIO_EVCR ile AFIO_MAPR registerlerini tanımladığım adres dosyasında bu iki regin adresini birbiri ile karıştırmışım. Sorun çözüldü.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Timer 4 ve Timer 2 yi PWM modunda kullanıyorum.

Her iki timera da aynı Reload değerlerini yüklüyorum.

Timer 4 ü başlatıyorum.

Bilinçli olarak yazılımı döngüde bekletiyorum ve ardından Timer 2 yi başlatıyorum.

Bu durumda Timer 4'e ait PWM ler ile Timer 2'ye ait PWM ler arasında faz farklı oluşuyor.

Bu faz farkının oluşması uygulamamda sorun oluşturuyor. Diyeceksiniz ki bekleme yapma her iki timerı da hemencecik peşpeşe kur.

Öyle yapacağım fakat Timer blokları bir birine senkronlanabiliyor. Dokuman öyle diyor. Bu özelliği aktif edeceğim.

Timer 4 reload işlemi yaparken Timer 2'ye de sen de kendini resetle desin istiyorum.

Fakat namuzsuzları bir türlü  senkronize edemedim. Dokumanda bu kısımla ilgili açıklamayı anlayamadım.

İstediğim tarzda senkronlama işini yapabilecek C kodunuz varsa incelemek isterim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

EMP_Otto

@ z
hocam pcb yi hangi programla çiziyorsun acaba.İsis değildir herhalde  ;D
Bu işler zordur,özveri ister...

z

#190
Eagle fakat çok çok artistik bir şey lazım olursa Paint Brush kullanırım.

mesaj birleştirme:: 25 Mart 2013, 00:56:30

http://read.pudn.com/downloads106/sourcecode/embed/437624/stm32/STM32F%20Documents/Application%20Note/STM32F10xxx%20TIM%20application%20examples.pdf
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Timerların event üretmesi durumunda bu event ile diğer timerlara bazı tetiklemeler yaptırabiliyoruz. Bunu Master timerın TRGO çıkışı ile slave timerın TRGI girişini ilişkilendirmek suretiyle yapıyoruz.

Örneğim Timer 4'ü master, Timer 2 yi de slave tanımladığımızda

Timer 4 ün TRGO çıkışını Timer 2 nin TRGI girişine bağladığımızda

Timer 4 ün EGR registerinde UG bitini yazılımla tetiklediğimizde Timer 4 ve Timer 2 birlikte resetleniyorlar.
Böylece iki timer farklı zamanlarda kurulup koşturulmuş olsalar da yaptığımız bu ortak tetikleme her ikisini de eşzamanlı çalışmaya zorlamış oluyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

camby

Alıntı yapılan: z - 19 Mart 2013, 12:39:16
Peki nasıl olacak?

Hocam bu konuyu başka bir başlıkta konuşmuştuk , yine içerden bir bit ile , debug stop modunda timer ların durması sağlanabiliyordu. Bulursam o başlığı link atarım.

fractal

M3 çüler pwm  interrupt ayarlamak için hangi registerları kullanıyoruz.aşağıdaki şekilde ayarlayınca çalışmıyor..

IntMasterEnable();

PWMGenIntTrigEnable(PWM_BASE, PWM_GEN_0,PWM_TR_CNT_ZERO );

PWMIntEnable(PWM_BASE, PWM_INT_GEN_0);

IntEnable(INT_PWM0);


Restantum cogniscutur Quantum deligutur

z

#194
STM32F103C8 48 pinlik kılıflı az bacaklı çiplerden.

İçinde TMR1...TMR4 olmak üzere 4 tane timer var. Bu timerlar pinlerle ilişkilendirilmiş. Son iki harf C8 den farklı daha çok bacaklı çiplerde 8 tane timer da olabiliyor. Bu durumda bunlar da pinlerle ilişkilendirilebiliyor.

Acaba C8'de pinlerle ilişkilendirilmemiş TMR5 ve sonrası varmıdır diye merak ediyordum. Küçük bir ihtimal, timer donanımının bu çipte de olacağıydı.

Kesinleşti, yerinde yeller esiyor. Adamlar koymamışlar.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com