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   134 / 139
(#) hotau hozzászólása Nov 26, 2015 /
 
Szép estét!

Abban szeretnék segítséget kérni, hogy szeretnék egy olyan programot írni Energia környezetbe ami ledet működtet de a ledet csak akkor kapcsolja be amikor kétszer megnyomom a gombot egymás után.
Vagyis megszámolja a gomb lenyomásának számát és ha az egyenlő kettővel akkor fölkapcsolja .

Ehhez írtam egy kódot és le is fut de nem működik (egyáltalán nem világít a led második lenyomás után sem.)

kód:

  1. const int buttonPin = PUSH2;    
  2.  
  3. int buttonState = 0;        
  4.  
  5. void setup() {
  6.  
  7.   pinMode(P1_6, OUTPUT);      
  8.  
  9.   pinMode(buttonPin, INPUT_PULLUP);    
  10. }
  11.  
  12. void loop(){
  13.  
  14.   buttonState = digitalRead(buttonPin);
  15.  
  16.   int eredmeny = 0;
  17.  
  18.   if (buttonState == HIGH) {    
  19.      
  20.     eredmeny++;  
  21.                            }
  22.   else {  }
  23.  
  24.   if (eredmeny == 2) {    
  25.      
  26.     digitalWrite(P1_6, HIGH);  
  27.   }
  28.   else {
  29.    
  30.     digitalWrite(P1_6, LOW);
  31.   }
  32.  
  33.  
  34. }


Tudna-e valaki segíteni, hogy miért nem működik.

A segítséget előre is köszönöm.
Üdv. Olivér
(#) Ádám123 válasza hotau hozzászólására (») Nov 26, 2015 /
 
Hali!
Szegény sosem fog felkapcsolni így, mert a loop kör elején mindig nullázod az eredmény változód.
Ez az Energia kód úgy fut le, hogy amit a setup () részbe írsz az csak egyszer fut le, amit a loop()-ba az folyamatosan, lefut majd újra kezdi és az ilyen rövid kód esetén ezt 1s alatt több ezerszer megteszi. Az eredmény változód a setupban kéne felvenned

Üdv.
(#) icserny válasza hotau hozzászólására (») Nov 27, 2015 /
 
Nem volt világos a szándékod, hogy a kikapcsolást mi váltsa ki, ezért úgy vettem, hogy két nyomás bekapcsol, újabb két nyomás kikapcsol.

Az if (buttonState == HIGH) { eredmeny++; ... stb} azért nem jó, mert állandóan pörögne a számláló. Szerintem nem a nyomógomb állapotát, hanem az állapotváltásokat kell számlálni (amikor az új állapot különbözik az előzőtől). Ebből azonban 4 db esik egy kétlenyomásos ciklusba: két lefutó és két felfutó él.

Az extra "if(lastate)" feltétel használatával csak a lefutóéleket (a lenyomásokat) számláljuk, a felengedéseket nem.


  1. const int buttonPin = PUSH2;    
  2. int lastState = 1,
  3.     newState = 1,
  4.     counts = 0,
  5.     ledState = 0;
  6.  
  7. void setup() {
  8.   pinMode(GREEN_LED, OUTPUT);  
  9.   digitalWrite(GREEN_LED,0);  
  10.   pinMode(buttonPin, INPUT_PULLUP);    
  11. }
  12.  
  13. void loop(){
  14.   newState = digitalRead(buttonPin);
  15.   if(lastState != newState) {
  16.     if(lastState) counts++;    
  17.     lastState = newState;
  18.   }
  19.   if(counts == 2) {    
  20.     ledState = !ledState;
  21.     digitalWrite(GREEN_LED, ledState);
  22.     counts = 0;
  23.   }
  24.   delay(20);  
  25. }
A hozzászólás módosítva: Nov 27, 2015
(#) czibo hozzászólása Jan 5, 2016 /
 
Sziasztok!
Olyan problémám van, hogy az energia 16 és 17 verziókat nem tudom megnyitni. error occured while starting the application hibaüzenetet ír ki. Windows 8.1 van a gépen.
előre is köszi a válaszokat
A hozzászólás módosítva: Jan 5, 2016
(#) icserny válasza czibo hozzászólására (») Jan 6, 2016 /
 
Nekem már a 15 verzió is ezt csinálta. Ha átnevezed a Dokumentumok/Energia mappádat (ahol a korábbi projektjeid vannak) és egy üreset hozol létre, akkor valószínűleg beindul, de sok köszönet nincs benne...

Én leggyakrabban még mindig a 10-es verziót használom, helyenként megfoltozva (az újabbak újabb hibákat hoztak...).
A hozzászólás módosítva: Jan 6, 2016
(#) czibo válasza icserny hozzászólására (») Jan 6, 2016 /
 
köszi a gyors választ akkor maradok a 13-as -nál, az ugyanis jól működik. Még egy kérdésem lenne egy 595-ös schift regiszterrel próbálok meghajtani egy ULN2003-on keresztül egy 12V-os 7 segmenses kijelzőt szegmensenként 20mA. A processzor launchpad-ban van tápja a számítógép usb-je erről a tápról 3,3V hajtom a shift regisztert. A 12V kapcsi táp ULN2003 erről megy, negatívok összekötve, kilövi a spi-t. előtte ULN 2003 nélkül tökéletesen működött. Utánna már így sem müködött.
(#) mechanika hozzászólása Jan 13, 2016 /
 
Sziasztok!

MSPG2452 uc
__delay_cycles(???); parancsába mi az a legnagyobb érték ami írható?

65536
Ha nagyobbat írok mi történik?

Előre is köszi!
(#) icserny válasza mechanika hozzászólására (») Jan 13, 2016 /
 
Idézet:
„__delay_cycles(???); parancsába mi az a legnagyobb érték ami írható?”

Fordítóprogramja válogatja...
- IAR C/C++ esetén biztosan használtam már így: __delay_cycles(250000);
Ez szerepel az első projektemben is. Bővebben: Link
- Úgy emlékszem, hogy az mspgcc fordító csak kisebb számokat tolerált.
- TI MSP430 Optimizing C/C++ Compiler "unsigned long" a paraméter típusa.
- Rowley CrossWorks esetében is "unsigned long" a paraméter típusa.

Idézet:
„Ha nagyobbat írok mi történik?”

Jobb esetben figyelmeztet a fordító. Rosszabb esetben szó nélkül csonkíthatja a megadott számot...
A hozzászólás módosítva: Jan 13, 2016
(#) mechanika válasza icserny hozzászólására (») Jan 14, 2016 /
 
Köszi a választ!

Közben találtam:
itt: 3_3. lista: A dco_16mhz.c program listája

25. __delay_cycles(160000000);

úgy látszik még ez is belefér.

Egyébként hetente egy alkalommal kéne felélesztenem az uc-t.
(#) mechanika hozzászólása Jan 16, 2016 /
 
Jó estét!

A 2453-mal egy arduinot kéne felébresztenem néha. Külön áramforrásról ketyegne mindkettő.
A 2453 két AA-ról menne, az arduino 9v vagy 12v-ról. Mivel érdemes a két áramkör között a kapcsolatot létrehozni? Optocsatoló vagy relé, vagy...
Esetleg lehetne egy áramkör?
Tudom, hogy nem teljesen passzol ebbe a topic-ba, de máshol nem kaptam választ és hát az idő sürget.
Előre is köszi!
(#) SBahadurD válasza mechanika hozzászólására (») Jan 17, 2016 /
 
Én az optocsatolót találom a legegyszerűbb és biztonságos megoldásnak. Teljesen szétválasztja a két áramkört, de egyszerű a használata.

Egyébként, ha lehet biztosan garantálni, hogy az Arduino adott lába nem hajtja meg a kimenetét, akkor lehet egy áramkör is. Mert tudtommal az MSP430 3,3V-os jelét már magasnak veszi az az Arduino 5V-os logikája.
Visszafelé viszont az MSP430 nem tolerálná az 5V-os jelet.
(#) mechanika válasza SBahadurD hozzászólására (») Jan 17, 2016 /
 
Köszi!

Az optocsatolóval az arduino tápellátását kapcsolnám ki be.
A mellékelt rajz szerinti kapcsolás rendben van?
R1 értékét honnan tudhatom meg?

Köszi!
(#) SBahadurD válasza mechanika hozzászólására (») Jan 18, 2016 /
 
Jó lehet, de mondjuk jobb szeretem a kollektor körbe tenni a fogyasztót.
Oda kell figyelni még, hogy elég áramot el tudjon viselni az optocsatoló.

Az R1 értékét úgy tudod meghatározni, mint egy sima LED-nél. A LED paraméterei az optocsatoló adatlapjában vannak.
(#) szitko hozzászólása Jan 25, 2016 /
 
Sziasztok!

Két kérdésem lenne.
1: Leszedtem a netről két ds18b20 programot. Az egyik CCS-ben írodott, a másik Energia környezetben. Látszólag teljesen egyformák, de az Energia program nem működik. Mindkettőt g2553-al, 16MHz-en próbáltam. A CCS program működik.
Mi lehet az oka, hogy az Energia program nem megy?

2: Az AT parancsot nagy betűvel kell írni, vagy küldhetem kisbetűvel is (at+xyz vagy AT+XYZ)?
(#) icserny válasza szitko hozzászólására (») Jan 26, 2016 /
 
1. Az Energia programot honnan vetted? Többféle adaptációt láttam, s talán ez a "leghivatalosabb" (mármint a #4 hozzászólásban levő javított kiadású melléklet. Kipróbálni nem tudom, mert nincs ilyen hőmérőm.

2. AT: Tudtommal nagybetűvel kell írni - de ez nyilván az értelmező eszközön is múlik...
(#) szitko válasza icserny hozzászólására (») Jan 26, 2016 /
 
Az Energia program, egy Arduino adaptáció.

Egy sim900a GSM modult szeretnék munkára bírni kisebb-nagyobb sikerrel. A gond az, hogy a modul csak úgy hajlandó elindulni, ha elsőnek kiadom az "AT" parancsot nagybetűvel, majd ezt követően csak kisbetűs AT parancsokat hajlandó elfogadni. Mindezt a Putty programmal próbáltam.
(#) mechanika hozzászólása Jan 28, 2016 /
 
Sziasztok!

Ahogyan korábban írtam:

Idézet:
„A 2453-mal egy arduinot kéne felébresztenem néha. Külön áramforrásról ketyegne mindkettő.
A 2453 két AA-ról menne, az arduino 9v vagy 12v-ról.”


Ha 8AA elemet sorba kötök és két elemnél leveszem a 3V-ot (az msp-nek) az összesnél pedig a 12V-ot (az arduinonak) az rendben van?
(#) szitko hozzászólása Jan 31, 2016 /
 
Felraktam az Energia 01xxxxy16-ot, Win10 x64-re.
Ha rádugom a Launchpad-et a serial beállítás, és a serial monitor egyszerűen használhatatlan mert annyira lelassul a program.
A gép többi USB csatlakozójába, csak egy egér és egy bill. van bedugva.
Mi lehet a lelassulás oka?
(#) szitko hozzászólása Feb 7, 2016 /
 
Sziasztok.

Energia, softwareSerial, 19200 baudrate, folyamatosan hibás adatokat fogad.
AT parancsokat küldök ki egy eszköznek. Az elküldött parancsok helyesek, de a visszajövő infót a szoftveres serial nem tudja értelmezni.
Mi lehet a gond?
RXD:
  1. while(sSerial.available())
  2.     {
  3.       char in_Char = (char)sSerial.read();
  4.       in_String += in_Char;
  5.       if(in_Char=='K')
  6.       {
  7.         S_ok=true;
  8.         Serial.println("S_ok : ");
  9.        }
  10. ...
  11. if (S_ok) {
  12.     Serial.println(in_String);
  13.     in_String = "";
  14.     S_k = false;
  15.   }

A logikai analizátor szerint helyes adatokat küld vissza az eszköz, de a serial monitor szerint, csak egy katyvasz az egész.
(#) Hp41C válasza szitko hozzászólására (») Feb 7, 2016 /
 
Idézet:
„Energia, softwareSerial, 19200 baudrate”

De a serialm.jpg bal alső sarkában 9600 olvasható.
(#) szitko válasza Hp41C hozzászólására (») Feb 7, 2016 /
 
Az a hardveres UART.
Az eszköz és a uC között szoftveres UART kapcsolat van, a uC és PC között hardveres. Ez utóbbi 9600 baud.
(#) Hp41C válasza szitko hozzászólására (») Feb 7, 2016 /
 
  1. S_k = false;

helyett nem
  1. S_ok = false;

kellene?
(#) szitko válasza Hp41C hozzászólására (») Feb 7, 2016 /
 
De igen, valószínű elírtam, de sajnos a helyzeten nem változtat.
(#) alberton válasza szitko hozzászólására (») Feb 7, 2016 /
 
Egyáltalán mennyi esély van arra, hogy egy telefonból kicsákányozott kamera normál funkcióban video jelet adjon?
(#) SBahadurD válasza szitko hozzászólására (») Feb 7, 2016 /
 
Valószínűleg a szoftveres UART miatti pontatlanság lesz az oka. Valamiért a vevő már nem tud pontosan működni ezen a sebességen.
Sokat segítene, ha lehetne látni a hexa kódját a kiírt adatnak és bitenként össze lehetne hasonlítani a kapott és a várt adatot.

Amúgy ez a szoftveres UART valamennyi hardveres támogatást azért ad? Pl. timer, külső jelváltozásra okozott megszakítás, stb? Mert ha nem ad semmit, akkor nem mernék 19200-ig elmenni vele...
(#) szitko válasza SBahadurD hozzászólására (») Feb 7, 2016 /
 
Igen, menet közben rájöttem, hogy valószínű a "gyári" szoftveres uart könyvtárral lesz a baj.
Kisebb sebességen megy szépen.
(#) hotau hozzászólása Feb 11, 2016 /
 
Szép napot!

Abban szeretnék segítséget kérni, hogy hogy lehet azt megcsinálni MSP430-al Energiába, hogy két programot futtok rajta egy időben (ha egyáltalán ilyet lehet).

Például villog a P1_0 lábra bekötött piros Led eközben ha megnyomom a P1_3 ra bekötött gombot el kezdjen világítani a P1_6 lábra bekötött zöld Led úgyhogy nem zavarják be egymást.

A segítségeket előre is köszönöm.
(#) mechanika hozzászólása Feb 12, 2016 /
 
Sziasztok!

Energia indításakor kapom a lenti hibaüzenetet, meg tudja valaki mondani, hogy pontosan melyik szoftvert kell telepíteni, gondolom innen: innen
32 bites win 7 van a gépemen.
(#) mechanika válasza mechanika hozzászólására (») Feb 12, 2016 /
 
ez lemaradt
(#) mechanika válasza mechanika hozzászólására (») Feb 13, 2016 /
 
Megoldódott:
A Java telepítése után sem indult asztalra másolt parancsikonnal, de az eredetileg kicsomagolt könyvtárból elindult.
(hátha valakinek segít)
Következő: »»   134 / 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