22 Ağustos 2019, 04:26:54

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


arduino dış kesme sorunu

Başlatan styx75, 24 Kasım 2018, 14:31:50

styx75

24 Kasım 2018, 14:31:50 Son düzenlenme: 24 Kasım 2018, 14:34:00 styx75
selam arkadaşlar,sorunum aşağıda paylaşmış oldugum kodlarda,loop içersinde void sensor() foksiyonunu yazmazsam yani programı çağırmazsam kesme işleminde hiç sorun yok kesme değişkenini azaltıp çoğaltabiliyorum.ama loop içersinde sensör programını çagırırsam kesme değişkeni kesmeye girdiğinde rastgele değerler alıyor
yardımlarınız için teşekkür ederim şimdiden
saygılar.

#include <OneWire.h>
#include <DallasTemperature.h>
#include <OLED_I2C.h>
extern uint8_t SmallFont[];
extern uint8_t dnm[];
extern uint8_t ytb[];

OLED  myOLED(SDASCL8);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

#define ONE_WIRE_BUS 6
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
volatile int kesme 0;
float okunan;


void setup() {
  
sensors.begin();
myOLED.begin();
myOLED.setFont(SmallFont);
attachInterrupt(0kesmebir,FALLING);
attachInterrupt(1kesmeiki,FALLING);
pinMode(3INPUT);
pinMode(2INPUT);
pinMode(7OUTPUT);
pinMode(2INPUT_PULLUP);
pinMode(3INPUT_PULLUP);  
}

void loop() {
  
sensor(); 
myOLED.printNumI(kesmeLEFT0);
myOLED.update();
myOLED.clrScr();  
}
//------------------------------------
void kesmebir()
{
kesme++;
}

//-------------------------------------------
void kesmeiki()

kesme--;
}

//---------------------------------------
void sensor(){
sensors.requestTemperatures();   
okunansensors.getTempCByIndex(0); 
myOLED.printNumF(float(okunan), 1RIGHT25);

}

Kabil ATICI

one wire bağlantısı kullanan  sistemlerde kesme ile kullanılırken, kesmeleri kapatman gerekir. Çünkü one wire sinyalin zamanlaması ile sıkı sıkıya bağlantılıdır. One wire bağlantısını kullanan alt program çağrıldığında, kesme gelirse one wire sinyal zamanlamaları bozulur ve hatalı sonuç alınması ortaya çıkar.

Eğer datasheetleri okursan one wire alt programlarına ve bazı özel çiplerde kesmelerin devre dışı bırakılması gerektiğini görürsün.
ambar7

styx75

cevap için çok teşekkür ederim.bu sadece arduino kütüphanesi için mi geçerli acaba,zira ccs c de böyle bir sorunla karşılaşmamıştım.

Kabil ATICI

Bu one wire için genel bir durumdur.

Kullandığın yazılımda bu kütüphaneler kullandığında kesmeler kapatılıyor olabilir.
ambar7

styx75