Fórum témák
» Több friss téma |
Pl. a dupla egyenlőnek az az értelme, hogy megkülönböztethető a szimpla egyenlőtől. A matematikában feltételben és "értékadásban" (hozzárendelésben) is általában az egyenlőségjelet használják (persze, van olyan is, ahol a hozzárendeléshez inkább a := formát szeretik). A C-ben mindkettő egy-egy operátor, valahogy meg kellett különböztetni, mert minden kifejezésben felhasználható mindkettő, nyilván más-más jelentéssel.
De ha már itt tartunk, az "EQ" mivel lenne jobb, "matematikaibb" az "=="-nél, ha ilyet és olyat sem használunk a kézzel írott matematikában? Az pedig miért furcsa, hogy egy számítógépes programozási nyelvben olyan operátorok is megjelennek, amik az algebrában nem szokásosak? Pl. hogy értelmeznél a hagyományos algebrában egy olyan kifejezést, amiben logikai (boole) operátorok is vannak, vagy hogy jelölsz az algebrában egy bitenkénti logikai műveletet? Azon is kár szerintem rugózni, hogy a különböző számrendszerekben leírt konstansokat hogyan kell a fordítónak megfogalmazni. Ezt is egyszer kell megtanulni, mint ahogy annak idején megtanultuk pl. a tizedes törteket vagy normálalakot elolvasni és értelmezni.
Szerintem ne csak mára. Ha nem érted a C-t, akkor olvasd el a netről ingyenesen letölthető Programozzunk C nyelven című könyvet az elejétől fogva. Legközelebb megkérdőjelezed, hogy a német nyelvben miért a második helyen áll az ige, mekkora hülyeség? Ha nem tetszik a C nyelv, ne foglalkozz vele, de én úgy érzem, mintha irigység fogna el, hogy nem érted, nem tudsz benne programozni, és inkább le akarod húzni a sárba, ezzel elrejtve/kisebbítve a saját hibádat. De ezzel csak magadat nyugtatod meg, aki elolvassa a hozzászólásod, látja miről szól az egész.
Ez a párbeszéd így értelmetlen. Programoztam már delphiben, php ben keveset C ben, java scriptben, De kis eltérésekkel, kevés szintaktiai különbségekkel mind így épít fel gy kódot.
A javaslatom azt, hogy maradj az assembly nél. Háta az neked jobban tetszik, és ez a topik tisztán megmarad annak amire szánták. C nyelvben segítség kérésére illetve segítség nyújtásra a tanulni vágyóknak.
Idézet: Ki mondta, hogy nem lehet ?!„Miért nem lehet ezt így írni? Z=Z+1” Az előnye az, hogy rövidebb. SMS-nél és chat-elésnél használják a fiatalabbak az általad leírt rövidítéseket, pl. a "vok"-ot, sokan értik, de nem tilos az eredeti "vagyok"-at sem leírni, de hosszabb ( én sem használom a rövidebb alakot!)! Egy nyelvet ( programozási nyelv, jel nyelv, beszélt nyelv vagy egyéb ), ha megalkotnak, akkor az alkotók döntik el a szabályokat a tapasztalataik és a céljaik függvényében, ha más is szeretné használni, akkor eldönti, hogy veszi-e a fáradtságot a megismeréséhez...! Szerintem kiveséztük a témát, gondold át és dönts, de ne fikázz egy milliók által jól használható nyelvet csak azért, mert nem vagy hajlandó megtanulni!
Csak magamnak írom, mert az érdekelt nem is reagál arra, amit írok.....
++ / -- művelet értelme: Tegyük fel, hogy egy nagy programban egy függvénynek átadnak néhány jókora tömböt és még felhasznál egy rakás lokális változót is. (Aki már elakadt itt, olvassa el a már belinkelt BRIAN W. KERNIGHAN – DENNIS M. RITCHIE A C programozási nyelv könyvet - ingyenes és nem túl hosszú.) A függvény a feldolgozás során egy tömb elemeit a felhasználás után megnöveli. Réges régen, amikor a C -t definiálták nem volt minden fordítóban optimalizálás...
A fordító kiszámolta az a[index] címét, kiolvasta az étéket és áttette a rendeltetési helyére. Aztán megint kiszámolta az a[index] címét, kiolvasta az étékét, hozzáadott 1 -et, aztán megint kiszámolta az a[index] címét és visszaírta...
A fordító kiszámolta az a[index] címét, kiolvasta az étéket és rögtön alkalmazhatta a növelést... Összevetve nem kellett kiszámolnia többször a keresett objektum címét. A hozzászólás módosítva: Aug 26, 2016
Szamomra egyertelmu hogy csak trollkodik, teljesen felesleges torni magad.
Kettő lehetőség van.
1. Trollkodik 2. Nem ért semmit abból, amit írsz, pedig abban van a lényeg, ezért minden másra reagál, ami lényegtelen és nem arra vezet, hogy megértse a nyelvet. Véleményem szerint az egészet majdnem offnak lehet tekinteni és törölni kellene, de lexa... Üdv!
Mi kérünk elnézést, hogy megsértettünk..
Attól tartok lemaradtam valami jó kis buliról!
![]() ![]() Pedig már bíztam benn, hogy végre elkezdődik valami aminek a végeredménye, hogy létrejön egy programozóbarát nyelv.
Ott van a Comenius Logo, magyar nyelvű, magyar nyelvű parancsokkal. Csak hát szinte semmit nem tudsz benne megírni. A komplikáltabb programok pedig ott is ugyanolyan nehezek, elég, ha csak megnézed a néhány beépített "játékot". Bővebben: Link Ezért kell használni azt, ami jól van dokumentálva, hozzáférhető, és elterjedt, legyen az bármelyik programozási nyelv.
Na, jó ... asszem a második mondatom végére is kellett volna tennem valami szmájlit!
![]() Alapjában véve azért én örülök a C-nek! Szoktam szidni ... de a végén mindig rájövök, hogy én voltam a hülye! ![]() Vannak feladatok amiket simán megoldok vele, miközben asm-ben fogalmam sem lenne, hogy álljak neki...
Sziasztok!
Két PIC között SPI-vel szeretnék kommunikálni, de sajnos nem jön össze, pedig látszólag nagyon egyszerű. Egyelőre a Master által küldött tetszőleges üzenetre válaszként küldené el a slave az "50"-et, de valamiért debug üzemmódban azt látom, hogy a visszakapott üzenet: "31" Mi lehet a gond? Master:
Slave:
Azt mindenképp meg kellene várni míg megérkezik az adat kiolvasásánál.
Esetleg próbáld meg ezzel a függvénnyel kezelni az spi-t:
Az uint8_t típus az unsigned char-al egyenlő.
Van a programmemóriában egy struktúratömböm, így néz ki:
Ez a projekt egyik c fájljában van. Egy másik c fájlban pedig hivatkozom rá:
Ugyan ebben a c fájlban szeretnék számolgatni a struktúratömb méretével (szeretném megtudni hogy hány eleme van):
Viszont erre a sorra a fordító hibaüzenetet ad: Idézet: „error: invalid application of 'sizeof' to incomplete type 'const struct MenuPont_type[]'” Miért? Rémlik hogy van valami korlátozás a sizeof operátor használatára de nem emlékszem... ![]()
Csak abban a file-ban fog ez mukodni, ahol a tombot inicializalod, hiszen csak abban a file-ban tudja a C fordito, hogy hany elemu a tombod. Az extern hivatkozas mar csak egy memoria cim, semmi tobb.
ha1drp & cross51: Köszönöm a válaszokat.
Valamit nagyon elrontok, nem akar működni... Ha jól gondolom, ezzel a sorral valósul meg az, hogy megvárom az adat megérkezését: while( !PIR1bits.SSPIF ); Sajnos így sem jó, és a fenti függvénnyel sem. Vagy a küldött adatot olvassa vissza, vagy mást...vagy volt már olyan is, hogy helyesen működött, de ugyanazt a hex-et mégegyszer felprogramozva már megint nem volt jó. ![]() Lemaradtak a PIC típusai: Master: PIC16F1938 Slave: PIC16F1824
Köszi! Közben megoldottam hogy működjön: A struktúratömbböt egy h fájlba tettem amit beinklúdoltam a c tetejébe.
SPI vezetékelése max 10cm és akkor már nem lehet túl gyors(10-20kHz).
Bőven 10cm-en belül van a vezetékelés. A sebességet lentebb vettem egy kicsit (Fosc = 4MHz, SPI clock: Fosc/64), de továbbra sem működik.
![]()
Most nézem:
erre írd át:
Nálam ez okozta a problémát 32 biten az SD kártyánál, hátha nálad is. A hozzászólás módosítva: Szept 20, 2016
Köszi, közben az errata-ban megtaláltam, hogy miért kell így használni és át is írtam. Viszont így sem akar működni. Több napos próbálkozás után még mindig nem tudok átvinni egy számot SPI-n...
![]()
Próbáld meg master SDO-t master SDI-re, küldünk egy bájtot és megnézzük mi van az SSPBUF-ban, ha az amit küldtél akkor vagy akkor jó eséllyel a kapcsolásban van, hiba. De még mindig meg lehet, hogy sw hiba.
Nem tudom, de esetleg nézd meg, hogy mindkét PIC-ben ugyanolyan SPI modul van-e, ugyanúgy kell-e beállítani. Az biztos, hogy az SPI pofon egyszerű, ennek helyes beállítás mellett működnie kell. Csak beállítási hibát lehet sejteni (kivéve, valami bagatel hibát, amit nem tudunk úgy se kideríteni)...
cross51:
Kipróbáltam, ebben az esetben az van az SSPBUF-ban, amit küldtem. Én valami sw hibára gyanakszom, a hw-ben nem nagyon lehet elrontani semmit. Wezuv: Az adatlap alapján nem látok különbséget a két SPI modul között. Beállítási hiba is előfordulhat. Most az történik, hogy ha elindítom az áramkört, elkezdenek kommunikálni és azt olvassa ki a master az SSPBUF-ból, amit küldött. Viszont ha a Slave-ről leveszem a tápot, majd vissza adom, akkor átjön a kívánt adat. Első induláskor viszont sosem. Ez már biztató. ![]()
...azt tapasztaltam, hogy ha a slave pic már fut amikor a master elindul, akkor a master SDO lábán invertálva jelenik meg a jel(mintha a magas szint lenne az idle állapot). A slave újraindítása után rendbe jön a jel, és működik a kommunikáció.
Sziasztok!
Olyan problémám lenne hogy kb 100usec-ként fut egy megszakítás és a megszakításon kívül a main függvényben írogatni kellene egy LCD kijelzőt. A kijelzőt fix késleltetéssel használnám, de problémák vannak amikor megy a megszakítás. C18 fordítót használok és a Delay1KTCYx függvényt. A leírásban az szerepel, hogy ez a függvény DelayCounter1 és DelayCounter2 nevű változókat használ amiket menteni kellene a megszakításkor. #pragma interrupt Timer_ISR save=DelayCounter1, DelayCounter2 viszont ennél sornál hibát ír ki az mplab szerint nincsenek ilyen változók, akkor hogy lehetne ezeket menteni és visszaállítani? Nem találtam erről leírást.
Ha egy fájlon belül van a megszakítás, akkor mást nem kell tenni, ha nem, akkor globálissá kell tenni.
Ez egy kicsit tudnád részletezni?
"fájlon belül van" Ezt hogy kell érteni?
Hali!
Nem világos a delay függvényt hol használod? Ha az interruptban nem használod, csak a main-ben akkor miért kellene menteni? Ha mindkettőben használnád akkor írd meg mégegyszer új néven, új változóhasználattal a késleltetést, és nincs összeakadás. |
Bejelentkezés
Hirdetés |