12F675 veya 12F683 ile RS232 Kullanımı

Başlatan oyhan, 31 Ağustos 2006, 00:42:30

oyhan

Aşağıda görülen kodu yazdım fakat bir türlü doğru şekilde karakterleri terminalden alamıyorum. Kabloyu konnektörleri kontrol ettim. Sorun yok terminal hızlarıda aynı . Burda dikkatinizi çekmek istediğim internal osc kullandığımdır. Bu nedenle bir sorun yaşayabilirmiyim ama bununla ilgili örneklerde var. Nedir sorun günümü yaktı bu iş. Bir türlü bulamadım sorunu...
#include <12F675.h>
#fuses INTRC_IO, NOWDT, NOMCLR, NOPROTECT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232 (baud=2400, xmit=PIN_A5, rcv=PIN_A3, parity=N, bits=8)

void main()
{

   port_a_pullups(TRUE);
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);
while(true)
   {

printf("MERHABA PICPROJE GRUBU\n\r"); 
printf("ABC abc 123\n\r");
delay_ms(1000);
   }
}
BİRLİKTEN KUVVET DOĞAR:

Veli B.

Eger ilk programlama esnasında pic içerisinde bulununan OSCCAL degerini bozdu isen işin baya zor.Her zaman datasheetleri dikkatli inceleyin derken bende incelemeden daldım 675 e ve bir haftama mal oldu 10 tanesi ki hala tam değiller.Herbiri için 64 farklı degeri denemem gerekiyor .CCS te nasıl yapılır bilmiyorum ama muhakkak nette bilgi vardır yada ccs kullanan arkadaşlar hazır bir fonksiyon var ise vereceklerdir.
Genel mantık eger ki kalibrasyon degerini bozmadı isen, programmer ile 3FF te bulunan değeri okumak ve 34 ün arkasına eklemek.Atıyorum cal value "42" olsun.3FF e 3442 yazdırman lazım.
Eger bozdu isen INTOSC ayarlarını clkout olarak set edip clocka bakarak altı bitlik bir deger aralığında deneme yanılma ile bulman lazım.

oyhan

Şuanki (12f683) işlemcinin kalibrasyonu ile ilgili birşey programlayıcıda görülmüyor. Sıfır işlemci ve ilk kez kullandım fakat yine aynı şekilde hatalı karakterleri alıyorum terminalde. pic ve pc Hızları aynı..
#include <12F683.h>
#fuses NOWDT, INTRC_IO, NOCPD, NOPROTECT, NOMCLR, NOPUT
#use delay (clock=8000000)
#fuses INTRC, NOWDT, NOMCLR
#use rs232 (baud=9600, xmit=PIN_A5, rcv=PIN_A3, INVERT)

void main()
{
   
   setup_oscillator(OSC_8MHZ);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_comparator(NC_NC);
   setup_vref(FALSE);

   

   set_tris_a(0b00001000);

   while (1)
   {
      printf("Press any key to begin\n\r");
printf("ABC abc 123\n\r");
delay_ms(1000);
   }
}


TAMAM bu çalıştı INVERT ekleyince çalıştı. Normalde max232 line driverı kullanmadığım için bu sorunu yaşamışım. Fakat sanırım 12f675 in calibrasyon sorunu var. Bunu nasıl halledeceğiz Katananın verdiği linktekileri denedim ama sonuç alamadım.
BİRLİKTEN KUVVET DOĞAR:

Veli B.

http://www.ccsinfo.com/forum/viewtopic.php?p=3522&sid=f9a494d86ae1824cba5adb25ea8388ac

Burayı bir incelesen.Söylediklerime benzer şeyler yazmışlar ama ccs için.
-Bu arada programmer ne?
-683 ü nereden ve ne kadara temin ettin eğer mahsuru yok ise.Yaklaşık 10 gündür arıyorum ve bulamadım.Miktarlı lazım.