Fórum témák
» Több friss téma |
Ezt még át kell gondolnom rendesen, és utánaszámolnom. Először ezt a 4-5 félbehagyott projektet, kellene befejeznem, de az egyikből jött az óra ötlet,(van egy programom, ahol a proci elvégez egy pár mérést, megjeleníti lcd-n,és utána nem csinál semmit csak néha újra mér. gondoltam oda még elfér egy egyszerű óra. Egy másik projektbe, meg gyorsítani kéne az órát.) ezért vetettem fel a kérdést. Egyenlőre megpróbálok, 1Mhz, vagy nagyobb DCO frekiből, pontos 1Hz-et csinálni.
Köszönöm az ötleteket.
Sziasztok!
Kezdésnek egy nagyon egyszerű programmal próbálkozok és közben debuggolom CCS4-el. Néhány dolgot nem értek, ebben szeretnék segítséget kérni: Hiába írok a P1DIR-be és P2DIR-be 0xFF-et, debugkor a Watch ablakban 0x0022 ill 0x002A szerepel. Ha átállítom binárisra, akkor jobban látom a biteket. Viszont 16 bitesnek mutatja ezeket és a P1OUT regisztert is holott csak 8 bitesek. Az utolsó 8-at kell nézni? És a végén van a 0. bit? Binárisan, hogy adhatom meg az értéket? A 0b00000000-at nem fogadja el. A program szerintem működik, mert, ha az m változónak értéket adok, akkor a P1.6-on lévő ledet kapcsolgatja. Itt a kód:
Előre is köszönöm a válaszokat!
Közben megtaláltam icserny cikkében, hogy azok a címek. Megzavart, hogy az érték oszlopban vannak.
Akkor, hogyan láthatom a portok értékét a Watch ablakban?
Nyisd ki a "registers" ablakot. Azthiszem ott megtalálod.
Nem hagyott nyugodni az óra, ezért foglalkoztam vele egy kicsit és sikerült megcsinálni az 1Hz-et. A többit majd később...
Más. Az alábbi kis programmal szeretnék a PC hypertermilájával kommunikálni, de valamiért nem megy. Elméletileg ha 1-est küldök neki, akkor visszaküld egy 2-est.
Két g2553-as proci közöt megy vele a kommunikáció. Lehet, hogy valamit nem állítok be? Vagy a hyperterminál nem jó?
Spórolok a lábakkal
Találtam egy cikket, ahol leírják, hogy lehet 2 ledet egy lábra kötni: Bővebben: Link A leírás szerint, ha bemenet a mikrovezérlő lába, akkor egyik led se világít: Idézet: „Case 1: The uC pin is set as an input. In this case, neither LED will light. On AVRs, an input pin is 'high impedance', meaning it lets no current flow through the pin. That means that we can pretend that the pin isn't there and the circuit behaves as per diagram 2.1. Note: AVRs can have pull-up resistors on input pins. These can be thought of as a 30-50k resistor between the pin and Vcc. This can be ignored in this application as the tiny current flowing through this is unlikely to cause the LED to glow. If it does, the pull-ups can be turned off for that pin.” Tudom, ez AVR-re van. Gondoltam, működik MSP430G4552-vel is. Csak részben: Ha a láb kimenet akkor 0 esetén az A led, 1 esetén a B világít. Viszont, ha a láb bemenet, akkor mind a kettő halványan világít. A felhúzó ellenállásokat kikapcsoltam. Ennyire különbözik a két mikrovezérlő portja? Esetleg van valakinek ötlete, hogy tudom kikapcsolni egyszerre mind a két ledet? Sajnos nincs több láb amit használhatnék.
Próbáld ki, hogy lekötöd a PIC lábáról! SZerintem akkor is világítani fognak, ha a nyitófeszültségük összege kisebb, mint a tápfeszültség. A rajzon 3 V szerepel, te meg (gondolom) 3,5 V-ról járatod. Lehet más színű (pl. zöld) LED-del próbálkozni, aminek esetleg magasabb a nyitófeszültsége.
Baudrate, adatbitek száma, stop bitek száma, paritásbit van-e: ezek számítanak. S a Hyperteminálban azt válaszd, hogy nincs sem hardveres sem szoftveres adatfolyam-vezérlés.
Köszönöm a választ!
A LaunchPadról járatom. Ha lehúzom a mikrovezérlőről, akkor is világítanak halványan a ledek. Egy zöld és egy sárga ledről van szó. Én is gondoltam rá, hogy a magasabb feszültség miatt lehet. A kész áramkört 3V-os gombelemről tervezem járatni. Ki fogom próbálni azzal is. Már ki is próbáltam elemről: egyik led se világít
Akkor elméletileg jónak kéne lennie. Az UCAxCTL0 reg-hez nem nyúltam, és a FUG. szerint a 0 a default.
UCPEN 0 Parity disabled. UCPAR 0 Odd parity UC7BIT 0 8-bit data UCSPB 0 One stop bit UCMODEx 00 UART mode UCSYNC 0 Asynchronous mode A hyperterminálban meg: 9600/8/nincs/1/nincs, van beállítva. Keresek valami példaprogit hátha okosabb leszek, bár lehet, hogy a 64bites win7-nek nem tetszik valami. Más: Az óra 50 percenként késik 1 másodpercet, ha meleg van a lakásban (28Cfok).Hidegben még nem próbáltam. Pedig a szkóp szerint 1.002Hz a belállított freki.
A Launchpad kártya RX/TX átkötései keresztbe vannak kötve a G2553-hoz illően?
Nem. Símán ráraktam a jumpereket. A régi kártyán is meg kell fordítani? A két proci közötti kapcsolatnál megfordítottam.
Idézet: Hát persze! A hardveres UART-nál P1.1 az RX, P1.2 a TX. A Launchpad kártya pedig pont fordítva van behuzalozva - a szoftveres UART kezeléshez. „A régi kártyán is meg kell fordítani?”
Közben rájöttem. Most faraghatok egy kereszt jumpert.
Köszönöm.
Találtam régifajta jumpert, ami úgy néz ki mint egy csatlakozó, csak elvágom az összekötést, levágom a tetejét, és összeforrasztom keresztbe.
Hát nem volt egyszerű!
Egy kis érdekesség.
Játszottam egy G2231 DCO frekvencia beállításával. Ami ledöbbentett: A kalibrált 1Mhz nem igazán valós adat, de ha a TI álltal leírt toleranciák közül a nagyobb értéket nézzük (-3% +3%), akkor stimmel. Négy db. van itthon, és mindegyiknél, a kalib. érték 961-983kHz között mozgott. Gondoltam ha már itt van kipróbálom nagyobb frekivel. Itt is volt egy kis döbbenet, mert nem tudtam beállítani a kalibrált 8MHz-t, mert mindig hibát írt az IAR. Utána néztem, és láss csodát, nincs benne a fejfájlban a 8Mhz-es definíció, csak az 1MHz-é. Megnéztem a többi mikrovezérlő fájlait is,(pl.G2211) és nem mindegyikbe sikerült a gyártónak belerakni a kalibrációk definiálását. A CCS4-nél is ugyanez a helyzet. Kimaradt a 8, 12, 16MHz kalibráció definiálása. Érdekesség képpen megnéztem egy kalib. 8MHz-es beállítást, és beállítottam a G2231-et. Eredmény: 10.142Mhz, ami már nem fér bele a 3%-ba. Minden beállításnál a fesz: 3.01V, hő: 28Cfok. Végül sikerült egy közel 1MHz-es értéket beállítani, az RSELx = 6, DCOx = 5, MODx = 17-es beállításokkal. (1.012MHz) Ui.: Ha pontosságot akarunk, mindig ellenőrizni kell a frekit, és nem szabad hinni az adatlapnak.
Sikerült a kapcsolat a PC-vel, UART-on. Hálás köszönet a segítségért.
Lenne egy nem idevágó kérdésem: Processing 1.5.1 ba összedobtam egy kis programot, de nem igazán sikerül életre keltenem. A program soros kommunikációt valósítana meg, de állandóan hibát ír a soros portra. Idézet: „WARNING: RXTX Version mismatch Jar version = RXTX-2.2pre1 native lib Version = RXTX-2.2pre2” Nem nagyon akarom le Off-ni a topikot, ugyhogy nem is írnék többet róla. Tudnál segíteni ebben? Előre is köszönöm. Idézet: Ez nem hiba, csak figyelmeztetés. Valahol kétféle verziót talál az RXTX modulból, és ezek nem pontosan egyeznek meg. Megszüntetni úgy lehetne, hogy pontosan összeillő Java JRE és Processing verziót raksz föl, de én nem foglalkoztam vele. Elengedem a figyelmeztetést a fülem mellett. Végül is működik, nemde? „WARNING: RXTX Version mismatch” Idézet: Ez a kisebbik probléma. A nagyobbik az, hogy az adatlap szerint a mikrovezérlőben sincsenek benne a kalibrációs adatok. A G2231 csak 1MHz-re kalibrált. A G2452 és G2553 mikrovezérlő viszont tartalmaz kalibrációs adatokat 1, 8, 12 és 16 MHz-re.„Megnéztem a többi mikrovezérlő fájlait is,(pl.G2211) és nem mindegyikbe sikerült a gyártónak belerakni a kalibrációk definiálását.” A frekvencia nemcsak a hőmérséklettől, hanem a feszültségtől is függ, s az együttes (overall) bizonytalanságra már +/-6 %-ot mond.
Hát nem. Berakom a kódot. Találtam egy videó tutoriált, és a példákból szedtem össze a progit, és ezek alapján tanulgatom. Futtatható álományt még nem csináltam, (azt sem tudom, hogy kell) de simán a RUN parancsal is mennie kéne, nem?
Szerintem a Launchpad Temp GUI.pde példából indulj ki, az nálam működött. A futtatáshoz valóban elég a RUN-ra kattintani.
Tanuláshoz ezt a honlapot ajánlom.
Működik! Kiszedtem a programodból a számomra fölösleges dolgokat, egy kicsit hozzáraktam, és megy mint a karikacsapás. Szépen kommunikál a LaunchPad-al.
Köszönöm szépen ! Ui.: A linket is köszönöm. Én a jaboston.com honlapon lévő videókból tanulgattam.
Kissé összekeveredtem a g2553 flash memoria, és az 512b ram fogalmakban. Tehát, szeretnék egy (vagy több) 16 bites regiszter értékét elmenteni, (egy változó, ami a program futása közben, mindig új értéket kap) úgy, hogy mielött kikapcsolom a procit elmenti, és bekapcsoláskor (vagy amikor mondom neki) beírja egy adott változóba.
A flash-be menti a programot amit írok, a ram-ba pedig a változókat, akkor hova tudok egy ilyen regisztert elmenteni? És hogyan? Idézet: Az ún. Information Memory-ba! Ez esetedben 256 bájt (010FFh - 01000h címtartományban), de lapokra van szabdalva (talán négyre), s ebból az "A" lapon vannak a gyári kalibrációs adatok (DCO, ADC). Többet én sem tudok erről. „A flash-be menti a programot amit írok, a ram-ba pedig a változókat, akkor hova tudok egy ilyen regisztert elmenteni?”
Köszi. Megtalátam a FUG.-ban. Valóban négy lapra "Segment A-D" van szabdalva. Átnézem, és kipróbálom.
A msp430g2xx1_flashwrite_01.c mintaprogramot nézd meg! A write_SegC (char value) függvény pl. bájtonként írja a C lapot.
|
Bejelentkezés
Hirdetés |