ARM-STM32F4 Programlamayı bilen var mı yardım lazım :) ?

Ya abiler siz ne güzel insanlarsınız ya vallahi mahçup oluyorum sizin bu ince ruhlu tavırlarınızdan dolayı...

@alarmko abi bir tek tane giriş pini var kartta o pin de manuel silkeleme yaptırmada kullanılıyor. ve sadece bir tane butona bağlı yani picin kendi 5 voltluk gerilimi ile tetikleniyor pull-down direnci var tabi.

Evet kartın çok fonksiyonu yok elektrik geldiği an 2 sn aralıklar ile motorları çalıştırıyor 2 dk sonra 1. motor duruyor 1. silkeleme 5sn çalışıyor duruyor sonra 1. motor devreye giriyor 2. motor devreden çıkıp 2. silkeleme çalışıyor sonra aynı döngü üç motor içinde devam ediyor taa ki enerji kesilinceye kadar, butona basılınca da nerede olursa olsun bütün motorlar duruyor silkelemeler çalışıyor. yani kart öyle aman aman fonksiyona sahip değil hatta çok da basit bir sistem...

Bence pic denetleyicilerinde parazit ile mücedele etmek için çok uğraşmak lazım baskı devre başlı başına fark ettiriyor besleme devresi fark ettiriyor giriş izole çıkış izole her şeyden fark ediyor havadan nem kapıyor namussuz :).

@FakirMaker abi konu her ne olursa olsun ben arm yi öğrenmek istiyorum evet ben gıcığım ama şu arduino da aslında çok fena bişiy değil ama ben ARM ÖĞRENMEK İSTİYORUM :D

Sanırım aslında ben soruyu da tam olarak soramıyorum biraz soruyu değiştireyim olmazsa ve soru şöyle olsun.

Örneğin i2c ile ilgili bir çalışma yapıyorum ve HAL_I2c yazıp ctrl+space tuşuna basınca şu resim geliyor.

77i6gdw.jpg


Resmin işaretli olduğu parametreyi seçtiğimi farz edelim...

HAL_I2C_IsDeviceReady(hi2c, DevAddress, Trials, Timeout)

Şeklinde bir komut çıkıyor karşımıza işte benim sorunum da bu : Bu komutun aldığı parametreler nedir ?

hi2c ne demek ? i2c kanalının hangisi olduğunu buraya yazıyoruz sanırım o da örneğin : I2C1

DevAddress = Device adres yani misal eepromda hangi adresi okumak istiyorsan oranın adresi.

Trials = Türkçeye denemeler olarak çeviriyor translate dolayısı ile kaç defa okumaya çalışacağını soruyor diye düşünüyorum.

Timeout = kaç ms de cevap gelmezse diye biliyorum...

İşte tam olarak bu parametreleri ayıklamayı anlayamıyorum hangi parametre nedir ne işe yarar gibi ?

HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState);

Burada hadi belli gpiox dediği hangi gpio portu olduğu sonra hangi pin olduğu sonra da o pin e sıfır mı bir mi yazmak istediğini belirten yerleri dolduruyorsun
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, 0);// GİBİ
 
DevAddress senin dediğin gibi eeprom adresi değil bağlı olan i2c cihazın adresidir. Her i2c ile tek bir master ve adresleri birbirinden farklı 128 cihaz bağlanabilir. Her cihaz sadece kendi adresini görünce cevap verir. Ayrıca cihaz adresleri 7 bittir ama HAL kitaplığı 8 bit ister bu yüzden adress<<1 yapılarak 8 bite tamamlanır.
Trials: i2c hattındaki cihaz cevap vermezse kaç defa tekrar sorgulanacağını belirtir daha sonra HAL_ERROR üretir.
Timeout ise her denemede ne kadar süre bekleneceğini ms cinsinden söyler.

Örneğin adresi 0x1E olan bir oled displayi i2c1 portuna bağlı olsun ve 3 kere 1 saniye bağlanmayı deneyip bağlanamazsa hata mesajı üretsin.

CoffeeScript:
int adres = 0xE1<<1;    //0x3C
int rc = HAL_IsDeviceReady(&hi2c1, adres, 3, 1000);
if (rc != HAL_OK) {
    printf("Cihaza bağlanılamadı hata kodu: %d", rc);
}

Yani uzun lafın kısası bu tip bilgiler kolay kazanılamaz, ama internette çok fazla video var. Örneğin

https://www.youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv
veya

Aslolan herşeyi detaylı olarak öğrenmek değildir. Bu donanım geliştiricileri ve mühendislerin işidir. İşin gerçeği hiçbir programcı bunların hepsini bilimiyor, hepimiz internetten bulduklarımızı kendimize göre değiştirip uyguluyoruz.
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,849
Kullanıcılar
449,596
Son üye
anilhikmet

Yeni konular

Geri
Üst