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   88 / 139
(#) szitko válasza szitko hozzászólására (») Nov 27, 2012 /
 
Hosszú kínlódás után, félig sikerült megoldani az i2c problémámat.

A megoldás egyszerű volt, kivettem az eeprom írást a megszakításból. Most szépen beírja az adatokat, időt, k_fok változót, és a v_fok változót is. Bemásolom az összes adatot egy tömbbe, és úgy írom ki az eepromba. Program részlet:
  1. P2IE &= ~INTRA;               // RTC interrupt forbid
  2.      i2c_setup();                  // i2c setup
  3.      slave_setup(E_24lc512);       // EEPROM slave address
  4.      delay_ms(20);                 // várunk kicsit
  5.      if(!(ram_addr & 0xff)){       // ha az eeprom 2 oldalt beírt, beírja az órát
  6.           tx_bytes[3] = min;       // perc tx_bytes tömbbe másolása
  7.           tx_bytes[4] = hour;      // óra tx_bytes tömbbe másolása
  8.           tx_bytes[5] = day;       // nap tx_bytes tömbbe másolása
  9.           tx_bytes[6] = month;     // hónap tx_bytes tömbbe másolása
  10.           tx_bytes[7] = year;      // év tx_bytes tömbbe másolása
  11.           tx_bytes[8] = 0x20;      // év tx_bytes tömbbe másolása
  12.           time = true;             // idő írás engedélyezése az eepromba
  13.      }  // if
  14.      if(time){
  15.           l_byte = k_fok;         // 16 bit reg -> alsó 8 bit
  16.           h_byte = k_fok >> 8;    // 16 bit reg -> felső 8 bit
  17.           tx_bytes[9] = h_byte;   // kazán hőfok felső 8 bit, tx_bytes-be
  18.           tx_bytes[10] = l_byte;  // kazán hőfok alsó 8 bit, tx_bytes-be
  19.          
  20.           l_byte = v_fok;         // 16 bit reg -> alsó 8 bit
  21.           h_byte = v_fok >> 8;    // 16 bit reg -> feslő 8 bit
  22.           tx_bytes[11] = h_byte;  // visszatérő hőfok felső 8 bit, tx_bytes-be
  23.           tx_bytes[12] = l_byte;  // visszatérő hőfok felső 8 bit, tx_bytes-be
  24.          
  25.           E_24lc512_tx_bytes(ram_addr, 12);  // EEPROM-ba írás
  26.           ram_addr +=13;                     // eeprom cím számláló
  27.           time = false;                      // idő írás ki
  28.      }else{                         // ha nincs idő írás, csak a két hőfok írás eeprom-ba
  29.           l_byte = k_fok;        // 16 bit reg -> alsó 8 bit
  30.           h_byte = k_fok >> 8;   // 16 bit reg -> felső 8 bit
  31.           tx_bytes[3] = h_byte;  // kazán hőfok felső 8 bit, tx_bytes-be
  32.           tx_bytes[4] = l_byte;  // kazán hőfok alsó 8 bit, tx_bytes-be
  33.          
  34.           l_byte = v_fok;        // 16 bit reg -> alsó 8 bit
  35.           h_byte = v_fok >> 8;   // 16 bit reg -> felső 8 bit
  36.           tx_bytes[5] = h_byte;  // visszatérő hőfok felső 8 bit, tx_bytes-be
  37.           tx_bytes[6] = l_byte;  // visszatérő hőfok alsó 8 bit, tx_bytes-be
  38.          
  39.           E_24lc512_tx_bytes(ram_addr, 6);
  40.           ram_addr +=5;
  41.      }  // else
  42.      if(!((ram_addr-0xfd)&0xff) && !0)
  43.           ram_addr +=3;
  44. .....

Berakok még két file-t. A "data.txt", a Processing által fogadott (uC -> bluetooth -> Processing), és elmentett adatok, a másikat a Saleae Logic-ba kell berakni.
(#) szitko hozzászólása Nov 28, 2012 /
 
Sziasztok.

Ha UART-on küldök adatokat, hogy jelezzem a PC-nek, hogy nem megy több adat?
Processing-ben próbáltam így:
  1. while(!(read == '\n')){
  2.         read = mybt.read();
  3. ....

de nem jó, mert ha az egyik adat "10" akkor megáll a fogadás. Van erre valami egyszerű módszer?
(#) kissi válasza szitko hozzászólására (») Nov 28, 2012 /
 
Szia!

Adatok végét nem tudod jelezni karakterrel ( ha előfordulhat, tehát nincs kizárva!).
Ilyenkor megadod pl. a darabszámot ( ez lehet előre megadott pl. fix 16 vagy változó, az adatsorozat elején megadva ) és annyi karaktert vársz ( időlimittel! ), végén CRC ellenőrzéssel!

Steve
A hozzászólás módosítva: Nov 28, 2012
(#) szitko válasza kissi hozzászólására (») Nov 28, 2012 /
 
Köszi!

Ettől féltem! Most mindkét programot (uC, PC) át kell variálnom. Nem lesz egyszerű.
(#) icserny válasza szitko hozzászólására (») Nov 28, 2012 /
 
DOS konvenció szerint ASCII szövegfolyamnál a Ctrl-Z kód a fájlvége jel. Ha szöveges információt küldesz, akkor ilyen máshol nem lesz benne, tehát használhatod a kívánt célra.
(#) icserny hozzászólása Nov 30, 2012 /
 
Az MSP430G2xx3 gyári mintapéldák (slac485a.zip) C alkönyvtárából hiányzik a Readme lista. Itt küldök egyet, amelyet a forrásfájlok fejlécéből generáltam.


!Readme.txt
    
(#) szitko hozzászólása Dec 1, 2012 /
 
Sziasztok.

Egyszerűen belehülyültem a típuskényszerítésbe, illetve, hogy egy tömbből az adatokat kiírassam a képernyőre a Processing-gel.
Tehát, a g2553 elküld egy rakás adatot a PC-nek, melyeket rögtön elmentek egy file-ba. Ha kellenek az adatok, akkor behívom a file-ból, és berakom egy átmeneti tárolóba, tömbbe, ami (int) típusú (inbytes). Ebből a tömből kellene kiíratni az adatokat a képernyőre, de már teljesen belebonyolódtam.....
Ha így iratom ki, akkor kiírja,
  1. text("Eredmény: " + inbyte[0] + inbyte[1] + (char)inbyte[2] + inbyte[3], 850, 90);

de nekem nem kell a szöveg. Az csak a próbák alatt kellett.
Ha viszont kiveszem a szöveget, akkor természetesen összeadja a tömb adatit, és kiírja az eredményt.
  1. text(str(int(inbyte[0]) + (int(inbyte[1])) + (char(inbyte[2])) + (int(inbyte[3]))) , 850, 90);

Hogy tudnám ezt megoldani?
(#) moderboy válasza szitko hozzászólására (») Dec 1, 2012 /
 
  1. text("" + inbyte[0] + inbyte[1] + (char)inbyte[2] + inbyte[3], 850, 90);
  2.  
  3. vagy
  4.  
  5. text("inbyte[0] + inbyte[1] + (char)inbyte[2] + inbyte[3]", 850, 90);


probáltad? elég gányolásnak tűnik, meg nem is ismerem a nyelvet, de én így probálnám
(#) szitko válasza moderboy hozzászólására (») Dec 1, 2012 /
 
Köszi.

Az 1. sor eszembe sem jutott, az 5. sor meg azt írná ki ami az " " -jelek között van.
Időközben megtaláltam a Processing "help"-jében a megoldást.
Rosszul használtam az "str"-t. Egyenlőre (próbaképp) lemásoltam az ott közölt mintát, és azzal szépen működik,
  1. String tt_1 = str(inbyte[0]);
  2.     String tt_2 = str(inbyte[1]);
  3.     String tt_3 = str((char)inbyte[2]);
  4.     String tt_4 = str(inbyte[3]);
  5.     String temp_text = tt_1+tt_2+tt_3+tt_4;
  6.     text(temp_text + " °C", 830, 90);

de majd ezt is át kell írjam ha több adatot kell feldolgozni.
(#) icserny hozzászólása Dec 3, 2012 /
 
Pihent agyú emberek MSP40 Launchpadon bitbillegtetéssel működtetett USB kommunikáció összekalapálásán dolgoznak. Bővebben: Link
(#) Bojan01 hozzászólása Dec 6, 2012 /
 
Sziasztok!
Szeretnék segítséget kérni! Adott egy SAGA RF távirányító amiben egy MSP430F149 vezérlő van, a kérdésem az volna, hogy milyen eszközzel tudnám csatlakoztatni Pc-hez. Ugyanis, létezik hozzá gyári interfész kábel és szoftver ebből a szoftver az meg van, de a kábelt horror áron adják, ezért kellene valamilyen okos megoldás.
Megköszönném ha valaki tudna segíteni!

P1050630.JPG
    
(#) exorcist válasza Bojan01 hozzászólására (») Dec 6, 2012 /
 
Hello!
Esetleg ha van kedved építeni egyet: Bővebben: Link
(#) Bojan01 válasza exorcist hozzászólására (») Dec 6, 2012 /
 
Szia!

Kedvem az van csak nem tudom melyik lenne a jó megoldás , ha mondjuk ezt megépíteném akkor hogyan tudnám csatlakoztatni a távirányítóval? Mivel annak csak 6 tűs csatlakozója ("J4 to writer") adatott:
1.: DVSS/AVSS
2.: P1.1/TA0
3.: --- ?
4.: RST/NMI
5.: DVCC/AVCC
6.: TCK
Ezek vannak kivezetve a csatira.
A hozzászólás módosítva: Dec 6, 2012
(#) icserny válasza Bojan01 hozzászólására (») Dec 6, 2012 /
 
A kérdőjeles kivezetés nem a P2.2 lábhoz csatlakozik véletlenül? Ha igen, akkor a Boostrap Loader (BSL) jön számításba. Bővebben: Link
(#) Bojan01 válasza icserny hozzászólására (») Dec 6, 2012 /
 
Igen odamegy, átnéztem még egyszer a rajzot. Ezt találtam nem rég : MSP430 BSL Programmer . Igazából kész cucc is jó lenne csak ne lenne nagyon drága.

(#) icserny válasza Bojan01 hozzászólására (») Dec 6, 2012 /
 
Szerintem erre a célra bármelyik 3,3 V-os jelszintű USB-UART(TTL) protokol konverter megfelel, amelyiken kivezették a leírásodban feltüntetett "modemvezérlő" RTS és DTR jeleket is. Pl. CP2102, PL2303 vagy FTDI kábel. Bővebben: Link
(#) Bojan01 válasza icserny hozzászólására (») Dec 7, 2012 /
 
Köszi , akkor megpróbálom valamelyiket beszerezni!
(#) icserny válasza Bojan01 hozzászólására (») Dec 7, 2012 /
 
Az olcsóbbak közül a mellékelt képen látható CP2102 típust ajánlom, ezen kétoldalt minden fontos vezérlőjel ki van vezetve. Figyelem: az RST nem tévesztendő össze az RTS-sel! Az RST jel a CP2102 moduloknál a CP2102 lecsatlakoztatására való!

Elegánsabb (és valamivel drágább) az FTDI TTL-232R-3VR kábel, ami elsősorban akkor ajánlható, ha a csatlakozó tüskesor mérete és a jelek sorrendje illeszkedik a kábel hüvelysorához.

cp2102.jpg
    
(#) Bojan01 válasza icserny hozzászólására (») Dec 7, 2012 /
 
A TXD és RXD kimenetek passzolnak az MSP430 P1.1 és P2.2 lábaihoz? ( bocs ha hülyéket kérdezek de nem vagyok otthon ebben a témában )
(#) icserny válasza Bojan01 hozzászólására (») Dec 7, 2012 /
 
Meg kell nézni a MSP430F149 adatlapját, meg az áramkörödet, hogy mekkora tápfeszültséget használ. Feltételezem, hogy a 3,3 V körüli jelszintet szereti. Az itt belinkelt képen látható UART-TTL átalakítóval az a gond, hogy nincs rajta sem az RTS sem a DTR jel kivezetve.
(#) szitko hozzászólása Dec 7, 2012 /
 
Sziasztok.

Már az idegösszeomlás szélén/benne vagyok. Két hete vacakolok a 24lc512-es EEPROM normális írás/olvasásával, ami végre sikerült is. Én voltam a figyelmetlen , és nem olvastam el rendesen az adatlapot, emiatt az adatok össze-vissza íródtak az EEPROM-ban.
Most, hogy végre jó, beütött egy olyan hiba, amire nem találok magyarázatot.
Az EEPROM-ból kiolvasott adatokat, "egyből" elküldöm az UART-on a PC-nek, de valahonnan??? az UART küldésbe megjelenik egy bájt (255), és nem tudom honnan kerül oda!
Az adat küldés:
  1. void xy(){
  2. ....
  3. eeprom_addr_count++;               // Ennyi adat kerül elküldésre UART-on
  4.      l_byte = eeprom_addr_count;        // 8 bit-be alakítás
  5.      h_byte = eeprom_addr_count >> 8;   // 8 bit-be alakítás
  6.      while (!(IFG2&UCA0TXIFG));         // UART a TX buffer?
  7.      UCA0TXBUF = h_byte;                // felső 8 bit
  8.      while (!(IFG2&UCA0TXIFG));         // UART a TX buffer?
  9.      UCA0TXBUF = l_byte;                // alsó 8 bit
  10.      eeprom_addr_count--;               // eredeti cím !!
  11.      E_24lc512_rx_bytes(address, eeprom_addr_count); // EEPROM, adat küldés UART-on
  12. }
  13. void E_24lc512_rx_bytes(uint16_t address, uint16_t byte){
  14.      char h_byte = 0, l_byte = 0;
  15.      l_byte = address;
  16.      h_byte = address >> 8;
  17.      UCB0CTL1 &= ~UCSWRST;
  18.      UCB0CTL1 |= UCTR + UCTXSTT;              // I2C TX, start
  19.      while (!(IFG2 & UCNACKIFG));             // ACK-ra vár
  20.      UCB0TXBUF = h_byte;                      // address felső 8 byte küldése
  21.      while (!(IFG2 & UCNACKIFG));             // ACK-ra vár
  22.      UCB0TXBUF = l_byte;                      // address alsó 8 byte küldése
  23.      while (!(IFG2 & UCNACKIFG));             // ACK-ra vár
  24.      UCB0CTL1 |= UCTXSTP;                     // I2C stop
  25.      while (UCB0CTL1 & UCTXSTP);
  26.      IFG2 &= ~UCB0TXIFG;
  27.      UCB0CTL1 &= ~UCTR;          // adat fogadás, i2c rx
  28.      UCB0CTL1 |= UCTXSTT;        // start
  29.      unsigned int RX=0;          // fölösleges !!!!!!
  30.      for(int i=0; i<byte; i++){
  31.           RX = UCB0RXBUF;        // i2c adat másolása UART TX be
  32.           while (!(IFG2&UCA0TXIFG));
  33.           UCA0TXBUF = RX;             // UART TX bufferbe RX
  34.      }
  35.      while (!(IFG2&UCA0TXIFG));
  36.      UCA0TXBUF = '\n';                // utolsó adat, fogadónak kell!!!!
  37.      UCB0CTL1 |= UCTXSTP;             // I2C stop
  38.      while (UCB0CTL1 & UCTXSTP);      // Stop kész?
  39.      IFG2 &= ~UCB0RXIFG;              // RX flag törlése
  40. }

A lényeg: Elsőnek elküldöm UART-on, hogy hány bájtot fogok küldeni, utána az I2C-n kapott adatokat másolom az UART bufferbe. (Az RX változót, csak próbának raktam be.) Ez a programrészlet és a fogadó program is szépen működik, de miután elküldöm a küldendő bájtok számát (2 bájt), valamiért még egy bájt kerül küldésre, aminek az értéke 255. De honnan? Miért?
A két kép: "eeprom_1" (i2c SDA) kiküldi a beolvasandó oldal címét, és szépen elkezdi az olvasást, ahol az első bájt értéke 0x15. "eeprom_2" (UART uC TX) 0x01,0x01 a küldésre kerülő bájtok száma (257) -> 0xff ??? ezt nem értem, hogy kerül ide? -> 0x15 az i2c-n beolvasott első bájt.

Bocs a hosszú hsz.-ért.
(#) icserny válasza szitko hozzászólására (») Dec 7, 2012 /
 
A 27. és 31. sorok közötti részben elindítod az I2C olvasást, de nem várod meg, hogy beérkezzen az adat. Lehet, hogy ebből jön a hülyeség (255 vagy akármi). A második bájttól kezdve ez akár jó is működhet, hiszen a kiírás lassabb, mint az olvasás, de a ciklus elején garantáltan rossz az időzítés.

Mellesleg célszerű volna készíteni egy uart_putc(), egy i2c_write() és egy i2c_read() függvényt, kiegészítve az összes várakozással, hibalehetőség vizsgálatával és lekezelésével, s akkor nem kellene ezzel foglalkozni minden egyes karakter kiküldésekor vagy beolvasásakor.

Tegnap próbáltam ki az első I2C programomat, s ne tudd meg, mit szenvedtem, mire rájöttem, hogy a felhúzással van a baj (a boltban 4,7 k Ohm helyett 4,7 Ohm-osakat csomagoltak, emiatt egy bivaly sem bírta volna lehúzni a buszvonalakat alacsony szintre).
(#) szitko válasza icserny hozzászólására (») Dec 7, 2012 /
 
Köszönöm szépen.

Megnéztem debugg módban a Register/Special Function alatt az UCB0RXIFG-t, és valóban később billen be 1-be. Beraktam egy 1ms-os késleltetést, de nem itt volt a baj! A helyzet annyiban változott, hogy nem 255-öt küldött, hanem mást. A fő gond, nem értem, hogy miért, a 9. sor után volt, illetve oda kellett berakjak egy 5ms-os késleltetést. Tehát, kiküldök az UART-on két bájtot, várok, és csak ezután indítom el az i2c műveleteket. Az analizátor adataiból kiderült, hogy azt a bizonyos két bájtot nem rögtön küldi el, hanem később, és szerintem ebből lett a galiba.
  1. .....
  2.      UCA0TXBUF = l_byte;                // alsó 8 bit
  3.      eeprom_addr_count--;               // eredeti cím !!
  4.      delay_ms(5);
  5.      E_24lc512_rx_bytes(address, eeprom_addr_count);

Így nem rak be egy fölösleges bájtot sem. Viszont az i2c olvasás indítása utáni 1ms-os késleltetést nem látom (eeprom_2 kép). A PC által fogadott adatok a "data.txt"-be kerültek, végre minden adat a helyére. 1-6. adat, idő/dátum, ami 128 bájtonként ismétlődik, a többi hőmérséklet érték 2 bájtban elmentve. ("progi kép" a félkész PC program)
Idézet:
„Mellesleg célszerű volna készíteni egy uart_putc(), egy i2c_write() és egy i2c_read() függvényt,”

Az biztos, hogy szebb, jobb, takarékosabb, és célravezetőbb lenne, de ehhez sajnos az én tudásom még nagyon a béka "hátsórésze" alatt van.

Egyébkén a két hetem arra ment rá, hogy több bájtot küldtem egyszerre a 24lc512-nek, és csak a 256. bájtot figyeltem, és ezután volt csak STOP. Ezért a 128. bájt küldése után elkezdte felülírni az első bájtokat, addig míg nem jött egy STOP. Azt a részt nem olvastam az adatlapban, hogy minden lap végén kell egy STOP. Pedig már itt is elhangzott.
(#) s3toraph hozzászólása Dec 17, 2012 /
 
Sziasztok!

Ismét segítséget kérnék, mert nem jutok 1-ről a 2-re:
Hiába googlizok, nem találok C nyelvű mintát, de még parancsot sem, ami jó lenne IAR-hoz arra, hogy kommunikáljon az MSP430G2553 és egy közvetlenül rákötött DS18B20, ami a panelról kapja az áramot, de nem parazitában.
Azt már tudom, mit hova kell kötni, meg ha minden igaz, meg is van a hőmérséklet kiolvasásának a menete, csak éppen nem tudom ezt C-ben megfogalmazni, mert nem tudom hogyan lehetne 1-wire-ben kiküldeni a hőmérőnek a parancsot (pl. CC), majd visszaolvasni, ugyanazon a porton/tüskén(az adatlábán) keresztül. Mert ugye van egy adatláb, amin kétirányú kommunikáció zajlik felváltva. Most akkor menet közben állítgassam hogy a panel lába amire a hőmérő adatlába csatlakozik, az bemenet vagy éppen kimenet? Már itt gondban vagyok. Aztán, hogyan kérdezem meg tőle, mi a 64 bites egyedi azonosítója, majd erre a válaszát hogyan tudom visszaolvasni?
Állítólag nem is lehet 1-wire-ban megoldani, másvalaki szerint viszont meg lehet.
Szóval, nem megy, parancsok vagy mintaprogram kellene nekem. Milyen paranccsal, hogyan definiáljam és paraméterezzem? rx_byte, tx_byte kell hozzá? Vagy más?
Vagy tényleg nem lehet? Akkor mit csináljak? Térjek át másik protokollra, mondjuk UART vagy SPI? Vagy váltsak IAR-ról CCS-re? Utóbbiban úgy olvastam, van definiálva 1-wire.
Mit javasoltok?
A hozzászólás módosítva: Dec 17, 2012
(#) icserny válasza s3toraph hozzászólására (») Dec 17, 2012 /
 
Idézet:
„Most akkor menet közben állítgassam hogy a panel lába amire a hőmérő adatlába csatlakozik, az bemenet vagy éppen kimenet?”
Hát persze! Enélkül nem megy a kétirányú kommunikáció egy vezetéken.

Ez a leírás például megfelel?
A hozzászólás módosítva: Dec 17, 2012
(#) szitko hozzászólása Dec 17, 2012 /
 
Sziasztok.

Egy program szervezés/felépítéssel kapcsolatos kérdésem lenne.
Rövid programelőzetes: Egy régebbi projektemet szeretném kiegészíteni, egy plusz funkcióval. A program egy egyszerű hőmérő, ami két analóg szenzor által mért értéket jelenít meg egy nokia lcd-n. Ebben a programban/projektben, "számomra" csak annyi a különlegesség, hogy az egész hardver, egy 1,2V 2200mA-es AAA akksiról megy, amit egy 2V 500mA-es napelem tölt, és ezt a uC felügyeli.
A kijelzés nem állandó, csak akkor mutatja a hőmérsékletet, ha "megnyomunk egy gombot" (ami nem gomb).
A mikrovezérlő, ha nem kell kijelezni a hőmérsékletet, LPM4-es módban van (tehát mélyen alszik).
Azt szeretném megvalósítani, és ebbe a programba beépíteni, hogy ha "jelzés" érkezik, akkor SW UART-on küldje el az aktuális hőmérsékleteket.
A mikrovezérlő egy g2452-es. Az elgondolásom: SW UART fogadás, a Timer_A Capture modul segítségével, ami megszakításban felkelti a uC, vagy nem kelti fel? Ezt a részt nem igazán értem! A lényeg az lenne, hogy nem kellene teljesen felébreszteni a uC-t, mert nem kell a kijelzés, csak az ADC, és a SW UART RX TX. Az ADC használja a megszakítást, ezért nem tudom, hogy ha Capture modult használom megszakításban, akkor abból mehet az ADC megszakítás?
Remélem érthető, mert már én sem értem , hogy mit is írtam.(pedig nem is iszom alkoholt)
(#) s3toraph válasza icserny hozzászólására (») Dec 17, 2012 /
 
Köszönöm!
Ezt a leírást én is megtaláltam, csak nem értem a következőket benne:
- Az onewire.h hivatkozható IAR-ban, tehát benne van és szépen működik?
- Hol találok arról leírást, hogy a belinkelt példánál, mi alapján paraméterezi fel a függvényeket? Pl. onewire_write_byte(&ow, 0xcc); Valamint, honnan tudja hogy ha az &-el az ow-ra hivakozom, akkor neki input vagy output lesz az irány? Minden parancsot onewire_write_byte-al ad ki és ezzel is olvassa be, nem kéne lennie beolvasó függvénynek, pl. onewire_read_byte?
A hozzászólás módosítva: Dec 17, 2012
(#) szitko válasza s3toraph hozzászólására (») Dec 18, 2012 /
 
Szia.
Idézet:
„Az onewire.h hivatkozható IAR-ban, tehát benne van és szépen működik?”

Nem. Ezt a függvényt be kell csatolni a programodba. A függvények helyét is megadta a szerző!
Amúgy szerintem nagyon jól fel van kommentezve a program.
(#) s3toraph válasza szitko hozzászólására (») Dec 18, 2012 /
 
Köszi! Ezt hogy nem vettem észre eddig... . Úgy látom, van read függvény is, szóval ezt is benéztem, kell nekem álmosan kódokkal foglalkozni. Átbogarászom, jónak tűnik így elsőre blikkre.
Viszont elég hosszú a kód, meg lehet ezt írni ennél rövidebbre?
(#) icserny válasza szitko hozzászólására (») Dec 18, 2012 /
 
LPM4 módban nincs órajeled, tehát a Timer Input Capture módjának sincs sok értelme. De egy átalános célú I/O lábbal is ébresztheted a mikrovezérlőt, nem kell hozzá semmi trükközés, csak engedélyezni kell a megszakítást és be kell állítani, hogy le- vagy felfutó élre működjön.
Idézet:
„A lényeg az lenne, hogy nem kellene teljesen felébreszteni a uC-t”
Hát a szoftveres UART-ot akkor ki fogja megcsinálni?
Idézet:
„az egész hardver, egy 1,2V 2200mA-es AAA akksiról megy”
Ez hogy fér össze a min. 1.8V-os tápfeszültség specifikációval?
Következő: »»   88 / 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