attiny2313 portd çıkış-giriş ayarı sorunu?

Başlatan forumsad, 14 Haziran 2011, 15:33:57

forumsad

attiny2313 de port d yi aşağıdaki gibi ayarlamak istiyorum ama olmuyor neyi eksik yapıyorum acaba



portD.0   --Rx --giriş olacak-0
portD.1  --Tx  --çıkış olacak-1
portD.2  --int0 --giriş olacak-0
portD.3  --int1 --giriş olacak-0
portD.4  --çıkış olacak-1
portD.5  --çıkış olacak-1
portD.6  --çıkış olacak-1

1110010=72   ise
DDRD =0x72;       //portd içeriği 
PORTD  =0x00;     //portu temizle

portd yi bu şekilde ayarladığımda portd.6 daki  led yanmıyor nedeni ne olabilir acaba??


kodun tamamı
#include <avr/io.h>                /* avr için İ/O kütüphanesi*/ 
#include <util/delay.h>            /* gecikme kütüphanesi */ 
#include <avr/interrupt.h> 


ISR(INT0_vect)  //int0 harici kesme
	{

	PORTB|= _BV(0);    //1 yap
	}



 
void mcu_init(void){ 
 
/* giriş ve çıkış ayarları*/ 
PORTB  =0x00;  /*portd içeriğini sıfırla*/ 
DDRB =0xff;    /*portd içeriği 

DDRD =0x72;    //portd içeriği 
PORTD  =0x00;  /*portd içeriğini sıfırla*/ 

} 
 
/* Ana program burdan başlıyor*/ 
int main(void){ 
mcu_init();        /* islemciyi hazirla */ 
   PCMSK |= (1<<PIND2) ;   
   //MCUCR = (1<<ISC01) | (1<<ISC00);   //kesme kenarı seçimi  yükselen kenar-bırakınca
   MCUCR = (0<<ISC01) | (0<<ISC00);   //kesme kenarı seçimi  düşen  kenar-basınca
   GIMSK  |= (1<<INT0);                //int0  aktif et
   sei(); 

while(1){       /* program sonsuz döngüde */ 

PORTD|= _BV(6);     /*portd.0 +5V yapıldı*/ 
	_delay_ms(500);   /*0.5 sn gecikme yapıldı*/ 
    _delay_ms(500);   /*0.5 sn gecikme yapıldı*/ 

 
PORTD&= ~_BV(6);  /* portd.0 0V yapıldı*/ 
    _delay_ms(500);   /*0.5 sn gecikme yapıldı*/ 
   _delay_ms(500);   /*0.5 sn gecikme yapıldı*/
 
}
}

My75

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

Erhan YILMAZ


serdararikan

neden 72 yaıyorsunki? binary olarak yazsana

DDRD = 0b01110010;

gibi

forumsad

serdararikan hocam söylediğin gibi yazdım çalıştı
atmel serisine yeni geçtim vebden bulduğum örneklerde hep o şekilde tanımlama yapmışlar

aslında DDRD =0x72;  ile DDRD = 0b01110010;  aynı şey olması lazım ama olamdı işte

neyse teşekkürler hocam...