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   137 / 139
(#) kleinie válasza flaci76 hozzászólására (») Jan 21, 2018 /
 
Első körben próbapanelen összerakott kis áramkörökkel szeretnék gyakorlatozni. Műveleti erősítős, A/D konverter, egy kis PWM, valami kijelzőt vezérelni, stb. Lehet az célszerűbb lenne, amit te linkeltél, ha véletlenül letüzelem rajta a kontrollert, akkor ott tudom cserélni.
Most éppen a forrasztó állomásom kapcsolási rajzát fejtegetem vissza. Szerintem jó gyakorlat, van benne A/D, PWM. Abban Atmega8L van, de szeretném összerakni egy MSP430-al próbapanelen, aztán ha sikerül, akkor lehet megépítem.
(#) szitko hozzászólása Feb 8, 2018 /
 
Sziasztok.

Szeretnék az Enregiához új MCU-t hozzáadni. Elég ha a "board.txt"-ben megadom a paramétereket? Vagy több beállításra is szükség van?
(#) uv142 hozzászólása Okt 28, 2018 /
 
Sziasztok!
G2553 a fejlesztői környezetben üzemel, fe ha átrakom egy próbapanelon összedugott kapcsolásba, akkor nem hajlandó elindulni.
az RST láb egy 10K-s ellenállással 3,3V- on van.
Mi lehet még, ami a hibát okozhatja?
(#) icserny válasza uv142 hozzászólására (») Okt 28, 2018 / 1
 
100 nF a VDD és a GND láb közé. Esetleg további szűrés (10 µF - 100 uF) a tápfeszültségre.
(#) uv142 válasza icserny hozzászólására (») Okt 28, 2018 / 1
 
Köszi, de már megvan!
Volt egy szakad kábelem...
(#) icserny válasza uv142 hozzászólására (») Okt 29, 2018 /
 
(#) röntgen hozzászólása Jan 15, 2019 /
 
Sziasztok. Lehet off egy kicsit. Jobb helyet nem tudok ahol kérdezhetném. A Texas CC2530-ról lenne szó, ami zigbee mesh hálózatra képes 8051 magú kontroller. Valakinek van tapasztalata vele? Ha USB-s kis modult beszerzek belőle, akkor megoldható, hogy PC-ről konfiguráljak több másik eszközt is? Okos otthon témakörben alkalmaznám/ismerkednék vele.
A hozzászólás módosítva: Jan 15, 2019
(#) JOCO10 hozzászólása Dec 13, 2019 /
 
Sziasztok.
Adottegy msp430g2452 proci , LanuchPad 1.5 verzio, Energia 1.8.7 E 21 soft.
Soros portot szeretnék használni, hardwereserial nincs ezen a procin.
A softserial a mintapéldákból forditásnál hibát ad . Van valakinek müködő kódja?
(#) icserny válasza JOCO10 hozzászólására (») Dec 14, 2019 /
 
MSP430G22452 esetén:
- A beépített Serial osztályt kell használni, majd az tudja (a 2452 beállításból), hogy nincs hardveres UART és automatikusan úgy kezeli, ahogy kell

- Serial.begin(1200); legyen az inicializálás (semmiképp sem 9600!)

- A Lauchnpad kártyán a jumperek SW állásban legyenek, nem HW állásban!
(#) Zsolt32 hozzászólása Dec 23, 2019 /
 
Sziasztok!

Linux operációs rendszer alatt milyen fejlesztői környezettel lehet dolgozni? Egyáltalán létezik linuxra ilyen?
(#) Lucifer válasza Zsolt32 hozzászólására (») Dec 23, 2019 / 1
 
CCS van Linuxra is, én ARM fejlesztést toltam vele régebben, szerintem van MSP430 compiler is mögé, de erre nem veszek mérget. Általánosan nekem az volt a benyomásom, hogy jobban össze volt rakva mint az MPLAB X vagy az akkori ST-s hulladék IDE-k (STM32Workbench - CubeIDE).
(#) neogeo2 hozzászólása Dec 25, 2019 /
 
Üdv,

Nagyon amatőr kérdéssel fordulok hozzátok, de sajnos most nagyon elakadtam.
A cél egy BCD óra lenne, ami nagyjából már működik is. Amin elakadtam, az a gombkezelés ami a beállításhoz szükséges. A gombkezelést megszakítással szeretném megoldani. Ezt úgy képzeltem, hogy a port megszakításban egy a nyomógombhoz tartozó boolean tipusú változót billentek csak be, majd a main függvényben kezelem azt le.

Íme a félkész kód (a fordítás: msp430-gcc-4.6.3 -Os -mmcu=msp430g2553 -Wall -o main.elf main.c):
  1. #include <stdbool.h>
  2. #include <msp430.h>
  3.  
  4. #define delayckl 0x007F
  5.  
  6. volatile int hours = 12;
  7. volatile int mins = 34;
  8. volatile int secs = 56;
  9. volatile bool buttonA = false;
  10. volatile bool buttonB = false;
  11. volatile bool buttonC = false;
  12. volatile bool buttonD = false;
  13.  
  14. void delay(unsigned int d) {
  15.         while(d--) {}
  16. }
  17.  
  18. void display() {
  19.     P1OUT ^= BIT0;
  20.     P2OUT = hours/10;
  21.     delay(delayckl);
  22.     P1OUT ^= BIT0;
  23.     P2OUT = 0;
  24.  
  25.     P1OUT ^= BIT1;
  26.     P2OUT = hours%10;
  27.     delay(delayckl);
  28.     P1OUT ^= BIT1;
  29.     P2OUT = 0;
  30.  
  31.     P1OUT ^= BIT2;
  32.     P2OUT = mins/10;
  33.     delay(delayckl);
  34.     P1OUT ^= BIT2;
  35.     P2OUT = 0;
  36.  
  37.     P1OUT ^= BIT3;
  38.     P2OUT = mins%10;
  39.     delay(delayckl);
  40.     P1OUT ^= BIT3;
  41.     P2OUT = 0;
  42.  
  43.     P1OUT ^= BIT4;
  44.     P2OUT = secs/10;
  45.     delay(delayckl);
  46.     P1OUT ^= BIT4;
  47.     P2OUT = 0;
  48.  
  49.     P1OUT ^= BIT5;
  50.     P2OUT = secs%10;
  51.     delay(delayckl);
  52.     P1OUT ^= BIT5;
  53.     P2OUT = 0;
  54. }
  55.  
  56. int main(void) {
  57.         WDTCTL = WDTPW | WDTHOLD;   // Stop WDT
  58.         BCSCTL3 |= XCAP1 + XCAP0;       // Enable internal capacitor
  59.     TACCR0 = 32768;             // Compare value -> 1 Hz Toggle frequence
  60.     TACCTL0 = CM_0 + CCIE;      // C/C Register settings: no Capture; compare mode;
  61.     TACTL = 0;                  // Timer A setiings: Source = ACLK; Upmode; Interrupt enabled
  62.     TACTL = TASSEL_1 + MC_1;
  63.  
  64.         P1DIR = ~BIT7;              // P1.7 input, all others output
  65.     P1OUT = BIT7;               // Select Pullup resistor for P1.7
  66.     P1REN = BIT7;               // Enable Pullup/down for P1.7
  67.         P1IES |= BIT7;              // P1.7 negative edge triggered
  68.         P1IFG &= ~BIT7;             // Clear P1.7 IFG
  69.         P1IE |= BIT7;               // Enable interrupt for P1.7
  70.  
  71.         P2DIR = 0b11111111;         // P2.x output
  72.  
  73.         __enable_interrupt();       // Global interrupt enable
  74.  
  75.         while (1) {
  76.         if (buttonA) {
  77.             display();
  78.             if (++hours > 23) hours = 0;
  79.             buttonA = false;
  80.         }
  81.         display();
  82.         }
  83. }
  84.  
  85. // Timer A0 interrupt service routine
  86. void __attribute__ ((interrupt (TIMER0_A0_VECTOR))) TIMER0_A0_ISR(void) {
  87.         _BIC_SR_IRQ(LPM3_bits);
  88.         if (++secs > 59) {
  89.                 secs = 0;
  90.                 if (++mins > 59) {
  91.                         mins = 0;
  92.                         if (++hours > 23) {
  93.                                 hours = 0;
  94.                         }
  95.                 }
  96.         }
  97. }
  98.  
  99.  
  100. void __attribute__ ((interrupt (PORT1_VECTOR))) Port_1(void) {
  101.     buttonA = true;
  102.         P1IFG &= ~BIT7;            // Clear P1.7 IFG
  103. }


A gondom az, hogy a gombnyomás "dupláz". Tehát lenyomáskor és felengedéskor is léptet egyet az órák számán. Logikám szerint nem így kellene lennie, hiszen a programban be van kapcsolva a P1.7-hez tartozó felhúzó ellenállás és a megszakítás a lefutó élre van beállítva. Nem értem a dolgot. Kérlek segítsetek, hogy mit rontok el!
Köszönöm ha rá szánsz néhány percet és rávilágítasz a hibára!

Mellékeltem a kapcsolást is.

kimenet.pdf
    
(#) jefflynn válasza neogeo2 hozzászólására (») Dec 25, 2019 / 1
 
Prelleg a kapcsoló. Ezt ki kell védeni hardveresen vagy szoftveresen.
(#) neogeo2 válasza jefflynn hozzászólására (») Dec 25, 2019 /
 
A program 77. sorában van egy display() függvény hívás, ami tulajdonképpen emiatt került be oda. Ennyi időnek elegendőnek kell lennie a prellmentesítéshez. Bár jobban belegondolva a gomb felengedéskor is lehetséges néhány lefutó él, ami így nincs lekezelve. Most nincs ötletem, hogyan tudnám ezt megoldani. Holnapra megálmodom. Köszönöm a tippet!
(#) benjami válasza neogeo2 hozzászólására (») Dec 25, 2019 / 1
 
A bemeneti láb jelváltozás megszakítás szerintem tökéletesen alkalmatlan nyomógomb feldolgozásra mert a nyomógomb prellje miatt minden gombnyomást néhány 10 nagyságrendű lenyomásnak és felengedésnek fog érzékelni. Helyette nekem teljesen bevált az időzítéssel történő másodpercenként 30 körüli beolvasás (hogy ezt megszakításból, vagy megszakításban generált jelzés alapján a főprogramhurokban végezzük el az már lényegtelen). Ezzel a módszerrel remekül meg lehet oldani, hogy elkülönítsük a rövid lenyomást a hosszútól, megoldható a bizonyos ideig történő lenyomás után az ismétlés (mint ahogy a számítógép billentyűzetnél is van), sőt még a dupla 'kattintás' is könnyen detektálható.
(#) neogeo2 válasza benjami hozzászólására (») Dec 26, 2019 /
 
Másképpen ugyan, de sikerült megoldani. Köszönöm a tippet. Később még jó lehet ez a megoldás is.
(#) fakóló hozzászólása Máj 7, 2020 /
 
Üdv
Került hozzám egy ecotechnics klímatöltő gép pcb-je. A lapon a feszültségek most már stimmelnek. A lap azonban nem indul el, a 20x4-es lcd kijelző első és harmadik sora bekapcsoláskor tömör kockákat jelenít meg aztán egy pár másodperc után elalszik és időnként ez a két sor felvillan (az lcd háttérvilágítása megy), egy msp430f149-es mikrovezérlő van benne. A mikrokontrollert j-taggal ki lehet olvasni és programozni is.
Mi okozhatja a hibát?
(#) kaqkk válasza fakóló hozzászólására (») Máj 7, 2020 /
 
Nagy a valószínűsége hogy a kontroller programja sérült , de még egy próbát megérne a kvarc és a mellette lévő pici kondik cseréje. Ha a kvarc cserétől nem jön rendbe akkor keresni kell bele való hex et ,nehéz lesz mert a gyárból nem jut ki és a kontrollerből nem lehet kiolvasni még ha találnál jó áramkört akkor sem (olvasásvédett )
(#) fakóló válasza kaqkk hozzászólására (») Máj 7, 2020 /
 
Az smd kondikra gondolsz? A kontrolernél az adat memóriában lévő sérült vagy a program memóriában lévő tartalom. Kiolvasni kiolvasta j-taggal mindkettőt persze nem tudom hogy helyes e?
(#) kaqkk válasza fakóló hozzászólására (») Máj 7, 2020 /
 
Elvileg minden kontrollernél van-lehet kvarc időalap (általánosságban mondom) én piccel nyomulok csak találgatok ... Az hogy kiolvasható a program csak egy dolog , ha a tápfeszekkel baj volt akkor bárhol bármelyik része hibás lehet a programnak-a kontrollernek is .
(#) fakóló válasza kaqkk hozzászólására (») Máj 7, 2020 /
 
Próbáltam másik kijelzővel (kisebbel, 16x2), de ugyan azt produkálta. A kontrollert kicseréltem és az új kontrollerre felírtam a kiolvasott tartalmat és így ugyan azt produkálta, mint az ori kontrollerével.
(#) fakóló válasza kaqkk hozzászólására (») Máj 7, 2020 /
 
A hex file visszafejthető valahogy?
(#) Bakman válasza fakóló hozzászólására (») Máj 7, 2020 /
 
A tömör négyzetek a kijelzőn azt jelzik, hogy maga a kijelző elindul de még nem kapott vezérlést. Ha ez időnként villog úgy, hogy a tápfeszültség folyamatosan jelen van, akkor nagy valószínűséggel a kontroller időnként újraindul. Lehet, hogy valamelyik bemeneten nincs meg az a jelszint, amit vár.

Első lépésként a tápfeszültségeket monitorozd valahogy. Ha azok rendben vannak két villanás között is, lehet tovább lépni.
(#) fakóló válasza Bakman hozzászólására (») Máj 7, 2020 /
 
Az AVcc és a DVcc feszültség is stimmel és állandó a kontrolleren.
(#) usane válasza fakóló hozzászólására (») Máj 8, 2020 /
 
Hiányos ASM fájl-á visszafejthető, és isteni tudás kell hozzá, hogy azt helyrekupáld.
Egyszerűbb ha írsz egy újat.
(#) Bakman válasza fakóló hozzászólására (») Máj 8, 2020 /
 
Akkor már "csak" a bemenetek és kimenetek ellenörzése van hátra.
(#) fakóló válasza Bakman hozzászólására (») Máj 8, 2020 /
 
Feltételezem a mikrokontroller program file-ban van hiba, mivel abban ha változtatok és visszaírom a kontrollerre akkor mindig mást csinál. A hex file-t nem tudom kijavítani és sajnos firmware sincs, megpróbálni azzal helyrerázni. A forgalmazónak írtam hátha rendelkezásre bocsátja a hex file-t (egy próbát megér)
(#) fakóló válasza usane hozzászólására (») Máj 8, 2020 /
 
Sajnos az én tudásommal sem egyik sem másik megoldás nem megoldható, de ha valaki megpróbálkozik az átnézésével, javításával, szívesen elküldöm a hex file-t.
(#) röntgen hozzászólása Feb 13, 2021 /
 
Üdv. Hol kereshetek már megírt, gyakran használt periférikus eszközökhöz C könyvtárakat? IAR-t használok.
(#) icserny válasza röntgen hozzászólására (») Feb 13, 2021 / 1
 
Legfeljebb Energiához találsz, a 43oh.com fórumán találsz, azután megpróbálhatod átírni IAR-hoz.
Következő: »»   137 / 139
Bejelentkezés

Belépés

Hirdetés
XDT.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