Fórum témák

» Több friss téma
Fórum » MSP430 mikrovezérlők
 
Témaindító: gomzito, idő: Ápr 21, 2006
Témakörök:
Lapozás: OK   138 / 138
(#) GPeti1977 hozzászólása Jan 24, 2022 /
 
MSP430G2553 mikrovezérlő 010FFh to 01000h címen levő tartalmát, ami katalógus szerint "Information memory", azt I2C buszon keresztül lehet változtatni?
(#) szitko válasza GPeti1977 hozzászólására (») Jan 24, 2022 /
 
A 010FFh to 01000h címeken nem a kalibrációs adatok vannak?
(#) GPeti1977 válasza szitko hozzászólására (») Jan 24, 2022 /
 
Valami hasonló, beállítás, pontosan nem tudom
(#) szitko válasza GPeti1977 hozzászólására (») Jan 24, 2022 /
 
Ha az emlékeim nem csalnak, akkor a DCO, ADC beállításai vannak ott (Flash memória SegmentA).
Hogy szeretnéd i2c-n keresztül állítani?
(#) GPeti1977 válasza szitko hozzászólására (») Jan 24, 2022 /
 
Valamiért valószínűleg átíródnak az adatok ezen a helyen, legalábbis nem egyforma, és feltételezzük hogy esetleg az okozza a hibát, csak I2C van kivezetve ahol kommunikál a fő kontrollerrel, ez a rész nem olyan mintha EEPROM ként lehetne használni?
A hozzászólás módosítva: Jan 24, 2022
(#) szitko válasza GPeti1977 hozzászólására (») Jan 24, 2022 /
 
Az USCI regiszterek a 8 bites perifériához tartoznak (0xff to 0x10), neked meg a 16 bites perifériában van a problémád.
A hozzászólás módosítva: Jan 24, 2022

USCI.jpg
    
(#) szitko válasza GPeti1977 hozzászólására (») Jan 24, 2022 /
 
Idézet:
„ez a rész nem olyan mintha EEPROM ként lehetne használni?”

De igen, Flash memória, A,B,C,D segment.
Egy-két programomban rendszeresen használom a flasht, de még soha nem volt vele olyan problémám, hogy "átíródtak, vagy elvesztek" volna az adatok. Ráadásol nem is olyan egyszerű a flasht írni.
(#) GPeti1977 válasza szitko hozzászólására (») Jan 24, 2022 /
 
Tehát az itt levő adatok olvasásához és irásához i2c porton keresztül lehetséges? Igen vagy nem?
(#) szitko válasza GPeti1977 hozzászólására (») Jan 24, 2022 / 1
 
Közvetlenül szerintem nem.
(#) GPeti1977 válasza szitko hozzászólására (») Jan 26, 2022 /
 
(#) szitko válasza GPeti1977 hozzászólására (») Jan 26, 2022 /
 
Ezért írtam, hogy szerintem az I2C vonalon nem tudod írni a Flasht.
Az alábbi kis program szösszenettel a CPU újraindulást számolom WDT segítséggel.
  1. // -- FLash művelet WDT számláló mentése --
  2.     wdt_count = flash_read(0x1000,0);                   // beolvassuk a flash-ből az adatot
  3.     if(wdt_count == 0xff){                                              // hamis adat kiküszöbölése
  4.         wdt_count = 0;
  5.     }
  6.     wdt_count++;                                                                // számláló növelése
  7.     flash_clear(0x1000);                                                // flash törlése kell!
  8.     flash_write(0x1000, wdt_count, 0);                  // WDT számláló írása flash-be
(#) GPeti1977 válasza szitko hozzászólására (») Jan 27, 2022 /
 
Közvetlenül nem, de ha meg van benne írva a program akkor csak lehet az általad mutatott függvényekkel. Egy kész termékről van szó, nem saját fejlesztés.
(#) szitko hozzászólása Nov 11, 2022 /
 
Sziasztok

Letöltöttem a Code Composer Studio v.7.4.0.00015 (mert ingyenes), de a beépített editorral van egy kis problémám.
Az ALTgr+ xy billentyűkobinációk 90%-a nem működik benne. Pl. {,^... karaktereket nem tudok írni.
Más programokban, pl. IAR, Enegia IDE, minden bill. jó.
Be lehet állítani valahol a bill.kiosztást?
(#) SBahadurD válasza szitko hozzászólására (») Nov 12, 2022 /
 
Szia!

Ha jól tudom, a CCS Eclipse alapú. Ha beállítás jellegű dolgod van vele, akkor az "eclipse" lesz az a keresőszó, amire érdemes ráguglizni. Amúgy:
Windows/Preferences/General/Keys.
Itt látod, hogy a különböző billentyűkombinációk mikhez vannak hozzárendelve. Sajnos a magyar billentyűkiosztás más, mint az angol és így a magyar kombinációk foglaltak különböző egyéb feladatokra. Ezeket meg kell szüntetni.
A keresőbe be kell írni a kívánt kombinációt (AltGr helyett ctrl+alt-t kell írni), rányomni a találatra és az Unbind Command gombra nyomni. Ekkor felszabadulnak a kombinációk.
(#) szitko válasza SBahadurD hozzászólására (») Nov 12, 2022 /
 
Köszönöm a segítséget.

Megnéztem az Eclipse-ben és ott sem mentek az AltGr kombinációk.
A CCS-ban a bill kombinációknál megtaláltam a "bűnös" beállításokat. Mivel nem nagyon használom a bill. kombinációkat töröltem a számomra fontos karakterek kombinációját.

A lényeg, hogy most minden jó lett.
(#) szitko hozzászólása Nov 22, 2022 /
 
Sziasztok

SPI-n szeretnék meghajtani 4 vagy 6db 7 szegmenses kijelzőt shift regiszterek segítségével (74hc595) amivel nincs is semmi gondom. A problémám és a kérdésem az lenne, hogy ha csak egy digit x szegmensét szeretném megváltoztatni, akkor mindenképp az összes digitet újra kell írni?
Pl. Ha egy 4 digites órát nézünk és a 3. digit DP szegmensét szeretném villogtatni másodpercenként, akkor mind a 4 digitet másodpercenkét úra kell írni?
Mind a 4 digitnek külön meghajtása van, tehát 4 db 74hc595.
(#) Bakman válasza szitko hozzászólására (») Nov 22, 2022 /
 
Ha láncolva vannak a regiszterek, akkor igen. Ehhez egyszerűen fenn kell tartani négy bájot. Amelyiket akarod, megváltoztatod, majd kiküldöd SPI-n az adatokat.

Ha csak három bájtot küldesz ki, akkor a negyedik regiszterbe az előző négyes csomag utolsó bájtja fog kerülni, mert a "tárolás" lábra adott impulzus a léptetőregiszter kimeneteit másolja át egy tárolóregiszterbe, de nem törli a léptetőregiszter tartalmát.

Ha

<óra tíz> - <óra egy> – <perc tíz> - <perc egy>

sorrenben vannak felfűze az IC-k, akkor három bájt kiküldése esetén a "perc egy" helyiértékre az előző adatcsomag "óra tíz" értéke fog kerülni.

szerk.:
A 74HCT595-ös adatlap szerint hajtható akár 57 MHz-es órajellel is, magyarán rövid idő alatt el lehet intézni az írást.
A hozzászólás módosítva: Nov 22, 2022
(#) szitko válasza Bakman hozzászólására (») Nov 22, 2022 /
 
Láncba vannak kötve. Így egyszerűbb a CA kijelzőket kezelni.
(#) szitko hozzászólása Nov 28, 2022 /
 
Sziasztok.

Több problémám is akadt a Ti USCI I2C Master programjával.
Az első és legnagyobb probléma, hogy nálam nem működik. Apró módosítások után sikerült működésre bírnom, de érdekelne, hogy miért nem megy az eredeti program.
Tehát az slaa382 DMA támogatás nélküli I2C vezérlő program adatküldés része nem megy:
  1. void TI_USCI_I2C_transmitinit(unsigned char slave_address)
  2. {
  3.   UCB0CTL1 = UCSWRST;                         // Enable SW reset
  4.  
  5.   P1SEL |= SDA_PIN + SCL_PIN;                 // Assign I2C pins to USCI_B0
  6.   P1SEL2 |= SDA_PIN + SCL_PIN;
  7.  
  8.   UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;       // I2C Master, synchronous mode
  9.   UCB0CTL1 = UCSSEL_2 + UCSWRST;              // Use SMCLK, keep SW reset
  10.   UCB0BR0 = i2c_prescale;                     // set prescaler
  11.   UCB0BR1 = 0;
  12.   UCB0I2CSA = slave_address;                  // Set slave address
  13.   UCB0CTL1 &= ~UCSWRST;                       // Clear SW reset, resume operation
  14.   UCB0I2CIE = UCNACKIE;
  15.   IE2 = UCB0TXIE;                             // Enable TX ready interrupt
  16. }

A fenti részben beállítjuk a hardveres I2C-t küldésre. A UCB0CTL1-ben beállítjuk az órajelet és a SW rezetet engedélyezzük.
  1. void TI_USCI_I2C_transmit(unsigned char byteCount, unsigned char *field){
  2.   TI_transmit_field = field;
  3.   byteCtr = byteCount;
  4.   UCB0CTL1 |= UCTR + UCTXSTT;                 // I2C TX, start condition
  5. }

Az adat küldésnél az UCB0CTL1 -ben beállítjuk, hogy adat küldés lesz és kiadjuk a START parancsot ami újra kiküldi a slave címet.
Ha indítottam egy küldést a program lefutott és nem csinált semmit, illetve kiküldte a slave címet de adatot már nem küldött.
A CCS-ben megnéztem a regisztereket és a TI_USCI_I2C_transmit-ban történő beállításokat amiket az UCB0CTL1 ben kellen vérgehajtani, nem hajtotta végre. A UCTR és UCTXSTT regiszter 0 maradt.
Csak akkor hajlandó a program az adtatküldésre, ha a transmitinit részben engedélyezem ezt a két regisztert.
De miért? Nálam lehet a hiba?
A másik dolog amit nem értek az I2C busz ellenöző részben van:
  1. UCB0CTL1 |= UCTR + UCTXSTT + UCTXSTP;       // I2C TX, start condition
  2.   while (UCB0CTL1 & UCTXSTP);                 // wait for STOP condition

Nem értem, hogy ezt miért így írták meg, hisz itt a while ciklusból soha nem lép tovább a program.
Vagy én értek valami félre?
Következő: »»   138 / 138
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem