Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: mistek - 04 Temmuz 2015, 13:20:37

Başlık: EXTI Problemi Stm32
Gönderen: mistek - 04 Temmuz 2015, 13:20:37
2 pine exti kuruyorum pinlerden birinde buton var diğeri sadece pull up yapılmış durumda.

Devrede besleme gerilimlerini ölçerken pull up yapılmış pinden kesme alıyor. Voltmetrenin probunu dokundurduğum anda kesme oluşuyor ama herzaman değil.  Osiloskopla pini izliyorum dışarıdan herhangi bir değişim yokken işlemci düşen kenar kesme algılıyor.

Debug yaptım. Buton bağlı pinde hiç sorun yok normal çalışıyor. Ama diğer pull up yapılmış pin sürekli kesme alıyor. (İşlemci resetlenmiyor.)

Acaba kaçırdığım bir nokta mı var diye fikir yürütmek istiyorum.

Ayar kodlarım.
/* GENEL GİRİŞLER EXTERNAL INTERRUPT AYAR */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_1;
  GPIO_Init(GPIOA, &GPIO_InitStructure);


  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource10); //BUTON

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource12); //i5


  EXTI_InitStructure.EXTI_Line = EXTI_Line10;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

EXTI_InitStructure.EXTI_Line = EXTI_Line12;
EXTI_Init(&EXTI_InitStructure);


  NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: Klein - 04 Temmuz 2015, 16:20:28
STM32'nin hangi serisi?
Butonda pullup var mı?
NVIC'de EXTI_14_15  açmışsın. Pinlerin 10 ve 12.  Sanki senin pinlerine karşılık gelen kesme 14_15 değildi. Yanlış hatırlıyor olabilirim.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 04 Temmuz 2015, 16:43:26
Çip Stm32f030k6 yazmayi unutmuşum.

Butonda da pull up var. Kılavuzda EXTI4_15 olduğu yazıyor kesme doğru adrese geliyor ama yanlış tetikleniyor. (EXTI_14_15 Değil hocam)
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 05 Temmuz 2015, 17:03:46
Çözemedim sorunu. Çok kolay kesme tetikleniyor.
Osiloskopta bişey göremedim demiştim. Örnekleme sayısını yükseltince durum biraz netleşti.

İlk resimde elimi pull up direnci ile pinin birleştiği noktaya dokunuyorum.

(http://s13.postimg.cc/hj0hqyipf/MSO3014_FP.jpg) (http://postimg.cc/image/hj0hqyipf/)

İkinci Resimde yine elimle aynı noktaya dokunuyorum ve diğer elimi devrenin GND noktasına dokunduruyorum.

(http://s11.postimg.cc/pqvt6bben/MSO3014_FP2.jpg) (http://postimg.cc/image/pqvt6bben/)


Multimetre probuyla gerilim ölçerkende anlık iğne palsler oluşuyor yine yanlış tetiklenme oluyor.

İlgili Pine Paralel  RC bağlayınca ciddi derecede parazit azalıyor yanlış tetiklenme azalıyor.

Başka işlemci ile aynı devreyi çalıştırdığımda hiç yanlış kesme sorunu yaşamadım.(Devre kartı birden fazla işlemciyi destekliyor)

Elimi sürmem sorun değilde ölçüm yaparken yanlış tetiklenmesi can sıkıcı kendimi topraklasam nasıl olur?

Nasıl bi yol izlemeliyim?

Edit: Devre Beslemesi ST Discovery kit üzerinden onun beslemeside PC USB üzerinden gerçekleşiyor.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 05 Temmuz 2015, 20:01:43
Stm32f0 Discovery kit üzerindeki çiptede aynı sorun oluyor. F0 serisi mi bu kadar hassas yoksa farklı bi sorun mu var çözemedim. F1 ile de aynı şeyleri yaptım böyle bi sorun yaşadığımı hatırlamıyorum.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: Yuunus - 05 Temmuz 2015, 22:06:50
mistek; discovery nin kendi ornek kodlarini kullanmistim EXTI_0 icin herhangi bir sorunda yasamadim hem falling de hemde rising de

void EXTILine0_Config(void)
{
 
  GPIO_InitTypeDef   GPIO_InitStructure;
  NVIC_InitTypeDef   NVIC_InitStructure;

  /* Enable GPIOA clock */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  /* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
 
  /* Configure PA0 pin as input floating */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Connect EXTI Line0 to PA0 pin */
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);


  /* Configure EXTI Line0 */
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; 
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* Enable and set EXTI Line0 Interrupt to the lowest priority */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

unutmadan tek sorunum ilk tetikleme de ki kenari yakalayamamasi idi.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: CLR - 05 Temmuz 2015, 22:41:28
pull-up direncini küçült mesela 2k2,4k7 gibi bişey olsun 
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 06 Temmuz 2015, 00:13:36
@digiman kodları bende örnekden düzenledim PA10 bacağıda aynı şekilde ayarlı ancak yanlış tetik almıyor en azından şimdilik denk gelmedi.

@CLR  hocam 51k-10k-4k7 taktım pek değişen bişey olmadı. Paralel RC snubber 100R-100nF bağladım şimdi elimi sürünce yanlış tetiklenmiyor gibi görünüyor ancak multimetre ile dokununca 10-15 ölçümden birinde yanlış tetikleniyor. İşlemciyi mi değiştirsem diye düşünüyorum. PA12 pininin UART I2C birimleri içinde alternatif fonksiyonu var. Bunları hiç açmıyorum. Yinede kapatmak adına bişey yapmak gerekir mi?

Başlık: Ynt: EXTI Problemi Stm32
Gönderen: CLR - 06 Temmuz 2015, 00:47:01
Açıkçası ben hiç karşılaşmadım, malum exti çok kullanılan bir özellik. 32F100, 32F103 ve 32F107 seri çok kullandım hiç birinde bahsettiğin durum olmadı. Ve bunların hepsi yaklaşık aynı exti donanımına sahip, 32f030'da aynıdır.

Açıkçası senin verdiğin resimlere göre senin pull-up işe yaramıyor, nerdeyse boştaki pin gibi davranıyor. Sanki pullup yanlış pinde gibi. Yerinde olsam ilgili pini donanımsal olarakta pull-up yapardım.

Böyle etkilenmeler olması için,
1) besleme kaynaklı olabilir, beslemeyi değiştirip deneyebilirsin
2) Pull-up direnci çok büyüktür.
3) O hattın yakınında yüksek güçlü veya yüksek frekanslı bir bus varsa orayı etkileyebilir.


Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 06 Temmuz 2015, 01:25:02
@CLR  Hocam bende Exti çok kullandım herzaman aynı şekilde ayarlayıp kullanıyordum bu sorunla ilk kez karşılaşıyorum düzeltemedim. Dahili Pull up yapıncada aynı parazitler görünüyor. Pinde 0.3voltluk bir gerilim düşümü var. İşlemciyi söküp başka çip takacağım çok ısıtıp yaktım diye düşünüyorum artık başka bişey gelmiyor aklıma.

Beslemeyi lineer regülatörden, discovery kitten ve usb den verdim sonuç aynı.

Muhtemelen çok basit bi hatam var ama göremiyorum. 
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 08 Temmuz 2015, 01:50:27
Yok düzelmiyor. Aynı işlemcinin kullanıldığı farklı devrelerde aynı sorun var. PA10 pini taş gibi durumunu korurken PA12 pini yanlış tetikleniyor.

PA12 pini önündeki devre.
(http://s15.postimg.cc/g0jxy6rlz/Ekran_Al_nt_s.jpg) (http://postimg.cc/image/g0jxy6rlz/)

Transistörü söktüm değiştirdim dirençleri değiştirdim sadece pull up yapıp bıraktım her türlü yanlış kesme geldi. RC bağlayınca elimden pek etkilenmiyor onun haricinde multimetre problarını dokundurursam film kopuyor. Multimetrem mi bozuldu acaba? (Fluke 177) Ama boş yere tetiklenmesinide anlamıyorum. PA10 pininde böyle bi sorun yok. Yanlış kesmede almıyor elimden de etkilenmiyor probtanda. 

Osiloskop görüntüleri

(http://s21.postimg.cc/v1kkq7tf7/MSO3014_FP.jpg) (http://postimg.cc/image/v1kkq7tf7/)

(http://s21.postimg.cc/n7jz4tlmb/MSO3014_FP2.jpg) (http://postimg.cc/image/n7jz4tlmb/)

(http://s21.postimg.cc/xgcgan9o3/MSO3014_FP3.jpg) (http://postimg.cc/image/xgcgan9o3/)


Başlık: Ynt: EXTI Problemi Stm32
Gönderen: CLR - 08 Temmuz 2015, 02:29:19
Anlattıklarına göre senin self direncin çok düşük görünüyor ve multimetre direnç / buzzer / diyot kademesinde olursa voltaj uygular, dolayısıyla tetikleyebilir. Veya başka bir hata vardır. Aşağıdaki durumu dener misin?.

sadece pull-up direncini tak, başka hiç birşey olmasın ama pull-up direnci 220ohm olsun ve yine tetikleniyorsa scop görüntülerini foruma ekle bir bakalım. Resimlerin üzerlerine multimetre, dokunarak vs yazarsan daha açıklayıcı olur.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: HexfeT - 08 Temmuz 2015, 04:03:27
(http://postimg.cc/image/g0jxy6rlz/)

Transistörün base ucunun pull-down edilmesi gerekmez mi? boşta kalırsa, ya da prob vs. dokunursa zaten iletime geçip kesme oluşturabilir ki?

Osiloskop görüntülerindeki 2.6v nedir? Pindeki voltaj ise neden 2.6v? Besleme kaç v? Pull-up vaziyette pindeki voltaj ne?
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 08 Temmuz 2015, 13:48:22
@HexfeT transistör BE arasına direnç koydum sonuç aynı. Pull up yapılmış durumda pin gerilimi VDD ~= 2.97v Discovery kiti üzerinden geliyor.

@CLR 270R ile pull up yaptım transistörü ve diğer dirençleri söktüm.
Osiloskop probu Pull Up direnci-Pin bağlantı noktasına bağlı.

Birleşme noktasına multimetre probunu dokundurup çekerken oluşan görüntüler
(http://s8.postimg.cc/fhari3jmp/tek00000.jpg) (http://postimg.cc/image/fhari3jmp/)

(http://s8.postimg.cc/64jd5gun5/tek00001.jpg) (http://postimg.cc/image/64jd5gun5/)


Elimi birleşme noktasına dokundurup tuttuğumda oluşan görüntü
(http://s15.postimg.cc/85kkeytzb/tek00011.jpg) (http://postimg.cc/image/85kkeytzb/)


Sol Elimle GND'yi tutarken Sağ elimi birleşme noktasını tuttuğumda oluşan görüntü
(http://s15.postimg.cc/k7awbzww7/tek00010.jpg) (http://postimg.cc/image/k7awbzww7/)


Multimetre probunu pine vururken oluşan görüntü
(http://s8.postimg.cc/j4qio5rtt/tek00004.jpg) (http://postimg.cc/image/j4qio5rtt/)


Multimetre probunu PA12 pinine ilk dokundurma anında oluşan sinyal.

(http://s8.postimg.cc/y8ha603kx/tek00006.jpg) (http://postimg.cc/image/y8ha603kx/)


(http://s17.postimg.cc/ot47isngr/tek00007.jpg) (http://postimg.cc/image/ot47isngr/)
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: CLR - 09 Temmuz 2015, 00:29:07
Görünüşe göre donanımsal bir hata var gibi, Verdiğin resimlerde her biri farklı zaten, hiç biri birbirine uymuyor. Pull-up voltajı bazısında 3V3 bazısında 2-2,5V gibi, bazılarında nerdeyse sinüs, hele en sonuncusu ilginç üzerinde sönümlü sinyal var. Muhtemelen bir kaynaktan enerji bindirilmiş gibi.

270 ohm pull-up kolay kolay aşağı çekilemez. Senin empedansın veya karşının giriş empedansı ohm seviyesine düşmeli veya vücut üzerinde pozitif/negatif potansiyel olmalı.

Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 09 Temmuz 2015, 01:53:02
@CLR Hocam şebeke gürültüsü olabilir mi? Saçma olabilir belki ama aklıma başka bişey gelmiyor. Yani bizim şebekeden gürültü geliyor olabilir mi devreye. Sonuçta PC'den besleniyor bunlar. Pil veya aküden beslesem değişen bişey olur mu? Multimetre pilli ama onuda dokundurunca garip değişimler oluyor.

Bilgisayarın touch padine tek elimi dokundurursam mouse imleci titriyor zıplıyor. Diğer elimi PC metal yüzeyine dokundurunca düzeliyor. Sorun sanki bende. Statik elektrikle ilgili bi sorunum olabilir. 

Günlerdir çözemiyorum...
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 12 Temmuz 2015, 19:01:54
Bir süredir problemli devreyi akü'den besliyorum. PC ile olan bağlantısınıda kablosuz hale getirdim. Şuan pine dokunmadıkça yanlış tetik almıyor devrede ölçüm yaparkende yanlış kesme sorunu yaşamadım. 1 hafta daha böyle deneyeceğim...
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: engerex - 12 Temmuz 2015, 21:38:29
 Stm32F4 Discovery ve Atmel işlemciler için farklı bir geliştirme kartında benzer durumlar karşıma çıktı. F4 Discovery kartta bırakın pinlere değmeyi yaklaşınca veya plastik bir yüzeye değince bile etkileniyordu.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: CLR - 12 Temmuz 2015, 22:23:45
İkinci mesajımda yazmıştım

Alıntı yapılan: CLR - 06 Temmuz 2015, 00:47:01
Böyle etkilenmeler olması için,
1) besleme kaynaklı olabilir, beslemeyi değiştirip deneyebilirsin
2) Pull-up direnci çok büyüktür.
3) O hattın yakınında yüksek güçlü veya yüksek frekanslı bir bus varsa orayı etkileyebilir.
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: engerex - 12 Temmuz 2015, 22:42:49
Alıntı YapYeni kurduğu çift GTX 295 ekran kartı bilgisayar sisteminden sonra garaj kapıları açılmamaya başlayan kullanıcı, EVGA isimli üreticinin forumlarında derdini anlatırken birçok kişi "yok daha neler" şeklinde düşünse de, talihsiz adam,  hemen garajın üzerindeki ofisine girerken bilgisayarı açıksa, garajın kapılarına uzaktan müdahale edemiyor.

http://shiftdelete.net/ekran-karti-garaj-kapisini-engelliyor-10399 (http://shiftdelete.net/ekran-karti-garaj-kapisini-engelliyor-10399)
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: ohacagatay - 12 Temmuz 2015, 23:10:57
switch debouncer koymayı denedin mi ?
rc + schmit trigger gibi ?
microcontroller devren ve pull up 'ın iyi bir şekilde decouple edilmiş mi kontrol etsen iyi olur
Başlık: Ynt: EXTI Problemi Stm32
Gönderen: mistek - 12 Temmuz 2015, 23:20:24
Alıntı yapılan: CLR - 12 Temmuz 2015, 22:23:45
İkinci mesajımda yazmıştım



Evet hocam, bunları gözden geçiriyordum.

--

@engerex ilginçmiş.

@ohacagatay RC filtre var. Schmit trigger yok.
Pull up konusunu yukarıda yazmıştım osiloskop görüntüleri var. Sorun daha çok besleme kaynaklı görünüyor şuanlık.

Bu şebeke parazitlerini nasıl çözeceğim onuda bilmiyorum.

Başlık: Ynt: EXTI Problemi Stm32
Gönderen: Karamel - 13 Temmuz 2015, 00:27:02
mistek hocam

http://www.mikroe.com/easymx-pro/stm32/ (http://www.mikroe.com/easymx-pro/stm32/) schematics i buradan kopya cekip. asagidaki code ile deneyler yapabilirsiniz. mikroe nin calisan external interrupt example i kendisi.

/*
* Project name:
     External Interrupt (EXTI)
* Copyright:
     (c) Mikroelektronika, 2011.
* Revision History:
     20121120:
       - Initial release;
* Description:
     This code demonstrates how to use External Interrupt on PD10.
     PD10 is external interrupt pin for click1 socket.
     Program toggles LEDs on PORTE.
* Test configuration:
     Device:          STM32F107VC
                      http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00220364.pdf
     Dev.Board:       EasyMx v7 for STM(R) ARM(R)
                      http://www.mikroe.com/easymx-pro/stm32/
     Oscillator:      XT-PLL, 72.000MHz
     Ext. Modules:    -
     SW:              mikroC PRO for ARM
                      http://www.mikroe.com/mikroc/arm/
* NOTES:
     - Turn on PORTE LED's at switch SW15
     - Pull down PortD10 pin (PortD three state pin)
     - Set Button Press Level for PortD on Vcc
*/

void ExtInt() iv IVT_INT_EXTI15_10 ics ICS_AUTO {
  EXTI_PR.B10 = 1;                     // clear flag
  GPIOE_ODR = ~GPIOE_IDR;              // Togle PORTE
}

void main() {
  GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_HIGH);  // Enable digital output on PORTD
  GPIOE_ODR = 0xAAAA;
  GPIO_Digital_Input(&GPIOD_BASE, _GPIO_PINMASK_10);

  RCC_APB2ENR.AFIOEN = 1;              // Enable clock for alternate pin functions
  AFIO_EXTICR3 = 0x0300;               // PD10 as External interrupt
  EXTI_RTSR = 0x00000400;              // Set interrupt on Rising edge
  EXTI_IMR |= 0x00000400;              // Set mask
  NVIC_IntEnable(IVT_INT_EXTI15_10);   // Enable External interrupt

  EnableInterrupts();                  // Enables the processor interrupt.

  while(1)                             // Infinite loop
    ;
}