XC8 I2C zmena registru

Miroslav Draxal evik na volny.cz
Sobota Listopad 27 11:16:29 CET 2021


Veškeré registry spojené s i2c si hoďte do Watch okna a po inicializaci si zkontrolujte jejich stavy. Také do toho koukněte v průběhu běhu programu jestli se někde nějaký registr nezměnil. Pokud jo, dá se k tomu dobře využít okno BreakPoints/New BreakPoint (ikona vlevo nahoře v okně BreakPoints) tam si zadat přerušit běh programu při změně zápisu do registru a spusti program. Ono se to zastaví tam, kde se do toho registru zapisuje. Tím najdete, kde se zapisuje ta nechtěná hodnota do reg.

Míra

 

 

 

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Libor Konečný
Sent: Friday, November 26, 2021 11:37 PM
To: HW-news
Subject: Re: XC8 I2C zmena registru

 

Diky, watch okno jsme neznal, jeste jsem v MPLABu zacatecnik.

Dneska jsem vytvoril cisty projket jen s  i2c a funguje to, ale  v puvodnim ne, nekde bude nejaka definice, ktera to blokuje.

Tedy funguje to tak, ze uz dokazu zmenit hodnotu tech registru, resim SLAVE,  tedy neco jako simulace  i2c eepromky, ale kdyz sleduji SPI1STAT  tak  mi to ten i2c start nedetekuje, pritom na sbernici je pritomna cela sekvence.

Mam i2c slave napsany softwarove na zaklade zmeny stavu pinu, ale kvuli rychlosti jsme to chtel predelat na interni i2c v PIC,  piny mam spravne, ale ze by se detekoval alespon ten i2c start  toho se mi nepodarilo dosahnout.

 

LK

 

 

 

Dne 26.11.2021 v 20:31 Miroslav Draxal napsal(a):

Dobrý den,
Hoďte si co potřebujete sledovat do Watches a odkrokujte si to. U mě ten kód chodí podle předpokladu.
Míra.
 
-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Libor Konečný
Sent: Friday, November 26, 2021 12:50 AM
To: HW-news
Subject: XC8 I2C zmena registru
 
Zdravim osazenstvo
 
Dokaze me nekdo nakopnout jak zmenim hodnotu registru pro i2c ?
 
MCU PIC16F19196
 
mam kod (vysek z projektu)
 
         SSP1STAT  = 0x80;
         SSP1CON1 |= 0x06;
         SSP1CON2  = 0x01;
        SSP1CON1bits.SSPEN = 0;
 
     if(!SSP1CON1bits.SSPEN)
     {
         SSP1STAT  = 0x80;
         SSP1CON1 |= 0x06;
         SSP1CON2  = 0x01;
         SSP1CON1bits.SSPEN = 1;
 
}
 
     INTCONbits.PEIE = 
1;                                                        // Enable 
peripheral interrupts
     INTCONbits.GIE = 1;
 
a vypisu si debug
 
                        debug_print_hex_u8(INTCON);
                         debug_print_hex_u8(SSP1STAT);
                         debug_print_hex_u8(SSP1CON1);
                         debug_print_hex_u8(SSP1CON2);
                         debug_print_hex_u8(SSP1CON3);
 
INCON 0xC0
 
vse ostatni 0x00   nejak nechapu....
 
kod vygeneroval MCC
 
a pdf jsem si procital taky detailne.
 
 
1000x diky za pripadne nakopnuti spravym smerem.
 
Libor
 
 
 
 
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list





_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20211127/70e5ad81/attachment.html>


Další informace o konferenci Hw-list