Fórum témák
» Több friss téma |
Azt még nem értem, hogy az én példaképpen felhozott ciklusomba hogyan tudom beépíteni??Minden egyes __delay sor helyett egy ilyen ciklus kell??
Idézet: „Mi az "uint16_t", és hol találok róla több infót?” Ezeket az újmódi (fix szélességű) változótípusokat tudomásom szerint a C99 standard vezette be, a hordozhatóság érdekében. Használatukhoz a stdint.h fejléc állományt be kell csatolni.
Nem, a program elején definiálod a függvényt, ahogy beírtam. Ahol szükséges, ott pedig meghívod:
Szerintem a __delay_cycles()-nek is működnie kell (én használom is), de annak annyi hátránya van, hogy inline függvény és futás közben nem adható meg a paramétere (a fordítónak már tudnia kell, hogy hány ciklus lesz a várakozás).
Köszönöm.
Egyszerű hangkeltés a LaunchPad-al:
A D1 diódát azért raktam belem, mert ha nincs benne valamiért lereseteli a uC-t.
Javítok:
helyett:
Bocsánat. kicsit elkapkodtam.
Próbáltam keresni normális felbontásban a kapcsolási rajzot és a programot, de sajnos nem találtam. A kapcsolódó fórumban kis felbontásban van ugyan rajz, de azon nem látszik jól semmi. Ott egy ilyet is olvastam: "The project is not finalized, I will add schematic and board later on." Tehát ez így még sajna nem után építhető. Pedig jó kis project... Vajon mikorra várhatóak a végleges rajzok és program?
Szia! Jól mutat a kép, mivel csináltad ( kipróbálni most nem tudom ) ?
Steve
Fritzing-el. Az új verzióban benne van a LaunchPad is. Kiegészítőket egy fórumon lehet hozzá találni, de a címét nem tudom. Kicsit olvass vissza itt, icserny berakta a fórum címét is.
Valahogyan így gondoltad??
[ #include "io430.h" #include "intrinsics.h" #include "stdint.h" void main( void ) { void delay_ms(uint16_t delay) { uint16t_t i; for(i=0;i WDTCTL = WDTPW + WDTHOLD; P1DIR &= ~BIT4; //nyomógomb P1DIR |= BIT6; //LED while(1) { P1OUT = 0X00; while(~P1IN & BIT4) { P1OUT = 0X40; delay_ms(100); } } } } }] Mer sajna nem megy.Próbáltam több féle képen.Mert ha így jónak kellene lennie, akkor a gépem a felelős ezekért a furcsaságokért.Párszor kék halállal leállt, és csinált olyat is ,hogy az Avast egy része letörlődött.Adat visszaállítással sikerült javítani a hibát, de mi van ha az include állomány adatai is sérültek lettek??A fordító úgy nem igazán tud a kódokkal mit kezdeni.Már meg is rendeltem az új HDD-t a géphez.Csak szeretném ezeket a tanultakat gyorsan helyre rakni ,mi előtt a rossz verzió tudatosul bennem.>
Így próbáld:
Általában a "main" függvény elött kell legyenek, a definiált függvények, és a sorrend is fontos, de ha deklarálod a függvényt, lehet utánna is. Bár ez nem a potos megfogalmazás, mert Én is csak kezdő vagyok C-ben.
Még egy. A "delay_ms" függvényben nem javítottam ki a hibát, de próbáld meg úgy beírni, ahogy icserny írta!
Te:
Icserny:
Így sem működik.A for ciklusban a zárójelek nem megfelelően vannak szintaktikailag.(kettő van megnyitva, és egy bezárva) De mind ezek ellenére sem működik.Azt írja ,hogy az "uint16_t nincsen degradálva!Ezek szerint akkor a gépem a felelős!
Nézd meg, hogy megvan-e az "stdint.h" állomány. C:\xx\xx\IAR System\....
A programodban uint16t_t szerepel, ami elírás, uin16_t kell.
Azt nem is figyeltem.
Más. Szétdaraboltam az Lcd menüs programomat, az átláthatóság kedvéért. Csináltam egy "menu.c"-t és egy "menu.h"-t. Viszont arra nem tudtam rájönni, hogy a menu.c-ben vagy a menu.h-ban kell deklarálni a változókat? Mármint ami a menu.c-ben szerepel. Egész nap evvel küzdök, de csak hibákat ír az IAR.
Valaki elírta jó pár hozzá szólással ez előtt
De így sem jó.Ez az egyetlen hiba van benne a fordító szerint.És ott van az stdint.h a program könytárában is ,de ettől még lehet sérült az adatállománya.
Kipróbáltam, és hiba nélkül lefordította. A hiba az Ön gépében van. Próbaképp becsatoltam neked. Bár nemhiszem, hogy ezzel lenne a gond.
uin16_t helyett írhatod azt, hogy unsigned int. Ahhoz nem kell a stdint.h sem.
Ha a változót több helyről szeretnéd használni, akkor a header-ben extren-ként deklarálod, majd egy (de csak is egy) C fájlban definiálod.
Idézet: A .h fejléc állományba nem célszerű változót vagy végrehajtandó kódot tenni, mert egynél több fordítási egységbe (gyk. forrásfájl) is becsatolhatod, s akkor kétszer fordulna be... Tehát ha nem a főprogramban, akkor inkább a menu.c-ben deklarálj változót.„a menu.c-ben vagy a menu.h-ban kell deklarálni a változókat?” Ha máshonnan (másik fordítási egységben szereplő függvényből) is el kell tudni érni (pl. a main.c-ből), akkor ott is deklarálni kell a változókat extern módosítóval. Mindezt PIC tapasztalat alapján írtam, csak reménykedni tudok, hogy az IAR MSP430 C/C++ fordító is így tudja...
Az extren-el tisztában vagyok, de mivan akkor ha több C fáljban szeretném használni a változót? Pl. jelen programnál, van eddig 3db C fájl. (main.c, lcd4x16.c, menu.c) Ha a main.c-ben deklarálok egy változót, pl: extren unsigned int xy; a menu.c-ben ugyanez: unsigned int xy; és az lcd4x16.c-ben már nem tudom használni?
Nem biztos, hogy pont azt értem amit kérdeztél
Pl. így csinálnám: main.h
main.c
foo.c
Ez így jó!!! Nagyon szépen köszönöm.Már azt hittem be kell fejeznem a tanulmányaim amíg nem telepítem az új HDD-t fel.
Nem jó mindig csak hiba jön. Tehát, azt szeretném, hogy mind a három fájlba megjelenjen.
main.c:
menu.c:
lcd4x16:
Ez is egyfajta próba, de nem jó. Most nézem a IAR helpjét.
Érdekes, nekem fordul úgy amit én írtam, és úgy is ahogy Te írtad. Csatoltam a projektjeimet, bár én CCS-t használok.
Ha a projektet nem is tudod megnyitni, ha a .c és .h fájlokat kézzel hozzáadod egy IAR projekthez mi történik? Most már kíváncsi vagyok nagyon, mert eddig azt hittem értem amit csinálok
Milyen hiba jön? Nálam lefordul és működik is.
Megszületett. Tehát jó amit lentebb írtam (#1138214), csak figyelmetlen voltam.
A main.c = int xy; menu.c extern int xy; lcd4x16 extern char xy; . Ezt akartam ráerőltetni a fordítóra. Miután észrevettem, hogy az lcd4x16-ban "char"-t írtam. Így jó, hogy nem fogadja el. Köszönöm szépen mindenkinek a segítséget.
Amúgy a hiba: Warning[w6] .... external/entry "poz" in module main...
Mégegyszer köszönöm. |
Bejelentkezés
Hirdetés |