PIC18f25Q10 OLED1306 ile ilgili bir soru

Başlatan bulut_01, 21 Şubat 2024, 17:19:44

bulut_01

iyi günler picproje ailesi ugrasıp ama yapamadıgım bır durum var 18f25Q10 ile oled 1306 ekrana birseyler çizmek istiyorum lakin bu pic in Q10 yeni serisini hiç kullanmadım i2c ayarını yapıyorum similasyon yaparken i2c fonksiyonunda kilitleniyor mcu. Atladıgım bır nokta mı var i2c yapılandırmasını yaparken.
not: aynı kodu 18f25K20 ile deniyorum calısıyor ekran pic in K serisi ile Q serisinin i2c yapılandırma arasındakı farkı bulamadım.

#include <18f25Q10.h>                                                
//#device ADC = 8
//#FUSES PROTECT                                                // kod koruması 
//#FUSES CPD 
#FUSES NOWDT                                               //No Watch Dog Timer
#FUSES NOPUT                                                //No Power Up Timer
#FUSES NOBROWNOUT                                           //No brownout reset
#FUSES NOMCLR                                       //Master Clear pin disabled 
#FUSES NOPUT
#FUSES NOLVP
#FUSES NOSTVREN
#FUSES NOFCMEN
#FUSES NOWRT
#FUSES NODEBUG
#fuses NOEBTRB
#fuses NOEBTR
#use delay(internal = 64M)
//
//#OPT 9
//
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
//
#pin_select SDA1OUT = PIN_C4
#pin_select SCL1OUT = PIN_C3
//
#use i2c(Master,I2C1, Fast = 400000, sda = PIN_C4, scl = PIN_C3, STREAM = STREAM_24XX1025, FORCE_HW)
//
//#use rs232(baud = 2400, parity = N, xmit = PIN_C6, rcv = PIN_C7, bits = 8, STREAM = UART1, stop = 1, errors)
///////////////////////////////////////////////////////////////////////////////
                                                             //kütüphane ekleme
#include <ssd1306.C>                                     
//#include <stdint.h> 
///////////////////////////////////////////////////////////////////////////////
#BYTE SSPxCON1 = 0x0F95
#BIT SSPEN = SSPxCON1.5
#BIT WCOL = SSPxCON1.7
#BIT SSPM3 = SSPxCON1.3
#BIT SSPM2 = SSPxCON1.2
#BIT SSPM1 = SSPxCON1.1
#BIT SSPM0 = SSPxCON1.0

#BYTE SSPxCON2 = 0x0F96
#BIT GCEN = SSPxCON2.7
#BIT ACKSTAT = SSPxCON2.6
#BIT ACKDT = SSPxCON2.5
#BIT ACKEN = SSPxCON2.4
#BIT RCEN = SSPxCON2.3
#BIT PEN = SSPxCON2.2
#BIT RSEN = SSPxCON2.1
#BIT SEN = SSPxCON2.0

///////////////////////////////////////////////////////////////////////////////
void main()                                                         
{

SETUP_ADC(NO_ANALOGS || ADC_OFF);
//
setup_timer_0(T0_EXT_L_TO_H | T0_DIV_1);
enable_interrupts(int_timer0);
set_timer0(0);
//
i2c_init(TRUE);
oled_clearScreen();
oled_command(NORMALDISPLAY);
Oled_Init();
oled_line( 6, 8, 32, 127, 6);
//Oled_FillScreen(); //ekranı temizler 
//
//SSD1306_Begin(SSD1306_SWITCHCAPVCC, SSD1306_I2C_ADDRESS);
//
//setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
//enable_interrupts(INT_TIMER1);
//set_timer1(0);
//
//setup_timer_2(T2_DIV_BY_64,255,1);                                   //3.2 ms
//enable_interrupts(INT_TIMER2);
//set_timer2(0);
//

disable_interrupts(int_rda);
disable_interrupts(INT_TBE);
ENABLE_interrupts(GLOBAL); 
//

set_tris_A(0b0000000);
set_tris_B(0b0000000);
set_tris_C(0b0000000); 
//
output_A(0x00);
output_B(0x00);
output_C(0x00);
//
SSPEN = 1;

                              while(true){     


                   
}}

resimdeki belirtiğim oled kutuphanesındekı satırda kilitleniyor.


YENİLMEZ..

sadogan

İlgili satırları bunlarla değiştirin.
#use STANDARD_IO( C )
#pin_select SCL1IN  = PIN_C3
#pin_select SDA1IN  = PIN_C4

bulut_01

maglesef savas abi değişen birsey olmadı aynı durumda kaldı calışmadı.
YENİLMEZ..

sadogan

#3




22 Şubat 2024, 09:39:38
Bende çalışıyor.

bulut_01

bende calısmıyor ccs hangi versiyonu var sende bendeki x115 proteusda 8.16 bu attıgın örneğin kodunu paylaşabilirmisin onuda bir deneyeyim.
YENİLMEZ..


bulut_01

#6
verdiğin örnek i2c yazılımsal örnek donanımsal değil  yazılımsal olarak calıstırabılıyorum ama donanımsal olarak calısmıyor yukardakı dediğim durum gecerlı i2c transfer fonksiyonunda takılıyor.
i2c yapılandırmasını şu sekılde yaparsam calısıyor ama bu yazılımsal olarak calısıyor donanımsal değil.

#use i2c(master, sda=PIN_C4, scl=PIN_C3, FAST, stream=STREAM_24XX1025)

buda donanımsal i2c ayarı bunda calısmıyor.
   #pin_select SCL1in = PIN_C3
#pin_select SDA1in = PIN_C4
//
#use i2c(master,I2C1, Fast, sda = PIN_C4, scl = PIN_C3, STREAM = STREAM_24XX1025,FORCE_HW)
YENİLMEZ..

yas

Yazılımsal olarak çalışıyorsa ilgili kütüphane kullanılan pinleri varsayılan olarak dijitale ayarlıyordur. Fakat donanımsal yapıda bu durum es geçiliyor olabilir. Microchip anlamsız bir biçimde yeni nesil mcu larda pinlerin varsayılan durumlarını dijital haricinde ayarlıyor. İlgili pinlerin analog yada diğer modlara ayarlı olarak kalmadığından emin olun. Belki böyle bir sorun olabilir.

bulut_01

Alıntı yapılan: yas - 22 Şubat 2024, 20:59:10Yazılımsal olarak çalışıyorsa ilgili kütüphane kullanılan pinleri varsayılan olarak dijitale ayarlıyordur. Fakat donanımsal yapıda bu durum es geçiliyor olabilir. Microchip anlamsız bir biçimde yeni nesil mcu larda pinlerin varsayılan durumlarını dijital haricinde ayarlıyor. İlgili pinlerin analog yada diğer modlara ayarlı olarak kalmadığından emin olun. Belki böyle bir sorun olabilir.
üst de bütün kodu yayınladım port ayarlarını hepsini yaptım atladıgım noktası neresi bulamadım i2c donanımsal ayarladıgımda kod kilitleniyor 2 gündür ugrasıyorum bulamadım.
YENİLMEZ..

yas

C bilmiyorum. Ama önerim ANSELC register ı sıfırlamak. Deneye bilir misin?

bulut_01

ansel ile ilgili oldugunu düşünmüyorum use_fast_io(c) ile port ayarlanıyor.
YENİLMEZ..

yas

#11
Yeni nesil pic lerde varsayılan olarak portlar dijital ayarlı gelmiyor. Veri sayfasının anselx açıklamalarına bakılacak olursa reset sonrası hepsi 1 e set oluyor. Yani analog seçiliyor. Denemekle birşey kaybetmezsin.

23 Şubat 2024, 13:15:26
Alıntı yapılan: bulut_01 - 23 Şubat 2024, 13:07:52ansel ile ilgili oldugunu düşünmüyorum use_fast_io(c) ile port ayarlanıyor.

Derledikten sonra asm çıktısı varsa bir incele eğer anselc temizlenmiyorsa kendin eklemelisin.

bulut_01

Alıntı yapılan: yas - 23 Şubat 2024, 13:13:44Yeni nesil pic lerde varsayılan olarak portlar dijital ayarlı gelmiyor. Veri sayfasının anselx açıklamalarına bakılacak olursa reset sonrası hepsi 1 e set oluyor. Yani analog seçiliyor. Denemekle birşey kaybetmezsin.

23 Şubat 2024, 13:15:26
Derledikten sonra asm çıktısı varsa bir incele eğer anselc temizlenmiyorsa kendin eklemelisin.

anselc sıfırladım değişen bişey olmadı yine aynı yerde kilitleniyor i2c donanımsal ayarladıgımda fakat yazılımsalda sorun yok.
YENİLMEZ..

mustafa_cmbz

Alakasız ama Q serisi pic lerin olayı nedir kısaca bahsetme şansınız varmı hocam

bulut_01

pic yeni serisi donanımsal olarak biraz daha iyi yeni yenidir.2 gündür i2c donanımsal olarak calıştıramıyorum bu konuda tecrübeli arkadaslar yardımlarınızı bekliyorum.
YENİLMEZ..