Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   217 / 1319
(#) Norberto válasza PetAd hozzászólására (») Máj 25, 2008 /
 
Azért kell bele végtelen ciklus, mert a programod legutolsó sora után is van még ugye szabad és "fölösleges" programmemória-szakasz. A mikrovezérlő ezt mind egytől egyig lefuttatja. Ez ugye nem jelent mást, azt hiszem, nop utasításoknak "nézi" az összes többi sort. Ha a programmemória végére ért, akkor viszont olyan cselt csinál, hogy elkezdi elölről futtatni a programmemóriát a legelejétől. Ez viszont teljesen fölösleges a te esetedben, ráadásul ebből később gondjaid is lehetnek, komolyabb és összetettebb programoknál.
(#) PetAd válasza potyo hozzászólására (») Máj 25, 2008 /
 
16f628A van kiválasztva 628-al is megpróbáltam akkor is ezt a hibát írja ki. Az égetőprogi biztos hogy jó, mert máskor is ezt használtam. Időközben megtaláltam a problémát. Az utolsó indításnál 12f509-re csináltam projectet és most csak simán csináltam egy új forrásfájlt. A hibaüzenetek közt írj is:
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p12F509 "led.asm" /l"led.lst" /e"led.err"
Most nincs hibaüzenet a winpic800-nál.
Kösz a segítséget.
(#) trudnai válasza PetAd hozzászólására (») Máj 25, 2008 /
 
Norbertot kiegeszitve meg olyan is elofordulhat, hogy a programod mogotti resz amire rafut a vegtelen ciklus hianya miatt nem NOP-okbol, hanem regebbrol visszamaradt programreszletekbol all, ami megjosolhatatlan modon befolyasolja a chip mukodeset.
(#) wazsi válasza szilva hozzászólására (») Máj 25, 2008 /
 
Igazából megszeretném megtanulni a PIC programozást és ez elég jó feladatnak tünik :yes:
(#) Thowra hozzászólása Máj 25, 2008 /
 
Üdv mindenkinek!
Még mindig nem sikerült törölni (formázni) a 627 es pic em ami 630 nak "képzeli" magát.
Létezik olyan törlés ami teljesen lenulláz mindent?
(#) Sendi hozzászólása Máj 25, 2008 /
 
Helló MIndenkinek.

Kezdő pickesként kisebb programokat próbálgatok és elemezgetek.
Egy kis programban az alábbi részt találtam:

latchset macro latchnum
; select the latch
movlw latchnum
movwf PORTA
; set the DF and DB data bits
movlw B'1000' ; C = high and G = low to set the latch. default DF and DB low.
btfsc buffF, latchnum ; check/set forwards bit
iorlw 1 ; DF is high
btfsc buffB, latchnum ; check/set backwards bit
iorlw 2 ; DB is high
movwf PORTC
endm

; step through the latch and set the front and back leds.
latchset 0;
latchset 1;
latchset 2;
latchset 3;
latchset 4;
latchset 5;
latchset 6;
latchset 7;

latch_done
bsf PORTC, 2 ; set it to memory mode ('11xx')

Timer1_End
; reset the timer
#ifdef TESTING
movlw 0x00
movwf TMR1H
movwf TMR1L
#else
movlw 0x00
movwf TMR1L
movlw 0xF6
movwf TMR1H
#endif

Kérdéseim:
A latchset az egy macro? És mit jelent akkor a latchset 0;

A másik: az assemblerben van IF utasítás?

Köszönettel.
(#) PetAd válasza Sendi hozzászólására (») Máj 25, 2008 /
 
Hello
Az assembly-ben nincs If utasítás. Itt Megnézheted hogy milyen utasítások vannak.
Bocs, de a többi kérdésedre nem tudom a választ, mert én is kezdő vagyok.
(#) Norberto válasza Sendi hozzászólására (») Máj 25, 2008 /
 
latchset az igen, egy makró.

Amikor a programban meghívod, pontosabban, amikor a programba belefordul, akkor az utána lévő szám az a makróhoz tartozó bemeneti értéket jelöli.

Példaként:

latchset 3

- azt jelenti, hogy amikor a makró lefordul, akkor a fordító a végén lévő számot behelyettesíti a következő helyre, méghozzá decimális érték formájában:

latchset macro latchnum
movlw latchnum
movwf PORTA
...
...
endm

Ez teljes értékűen olyan, mintha azt írtad volna, hogy:

movlw 3
movwf PORTA

Ugyanúgy a decimális 3 kerül ki az A portra.

Az assembly-ben nincs if utasítás. Hozzá hasonló van, feltételes ugrásnak szokták hívni. Az adott PIC adatlapjában biztos van rá példa is
(#) Sendi válasza Norberto hozzászólására (») Máj 25, 2008 /
 
Helló Norberto és PetAd

Köszönöm a gyors válaszotokat.
Az elsőt értem is, de az IF utasítást a MPLAB 'szó nélkül' lefordította. Ezért nem értem, hogy mi az ott.

Köszönettel
(#) trudnai válasza Sendi hozzászólására (») Máj 25, 2008 /
 
Bocsanat, hogy kozbe szolok, de PetAd nem jol irta le szerintem. Gondolom ugy ertette, hogy az MCU szamara nincs nativ IF utasitas, azonban az assemler ismeri ezt a direktivat.

Az IF forditas kozben ertekelodik ki, gyakorlatilag olyasmi mint egy makro, ha a feltetel teljesul akkor a blokk bele fordul a kodba, ha nem akkor nem fordul bele.

A Help / Topic / MPASM Assembler -ben a 'Directives' -t nyisd meg es ott vannak az assembler kulcsszavai.
(#) Norberto válasza Sendi hozzászólására (») Máj 25, 2008 /
 
Ahogy trudnai is jól írta, ez egy parancs-jellegű dolog. Parancs, de nem a PIC-nek szól, hanem kifejezetten a fordítónak (ami ugye a PIC számára emészthetővé teszi (HEX-re fordítja) az ASM fájlt). Méghozzá azt lehet vele megcsinálni, amit trudnai is írt, tehát fordítási időben kiértékelődik a feltétel, és ha "logikai igaz" a végeredmény, akkor az utána következő IF-es blokk belefordul az égetendő kódba. Ha "logikai hamis" az eredmény, akkor az egész IF-es kódrész kimarad a programból, tehát le sem fordul, nem lesz benne a PIC-be égetendő programban (HEX-ben).
(#) Sendi válasza Norberto hozzászólására (») Máj 25, 2008 /
 
Helló Norberto és Trudnai.

Köszönöm a válaszotokat, nagyjából értem is.
A program elején írta, hogy a teszteléshez (ez egy ledes áramkör) a TIMERT le lehet lassítani.
Ez szerintem az a rész. CSak, hogy tudom én, igazzá, vagy hamissá tenni ezt a feltételt?

Köszönettel
(#) trudnai válasza Sendi hozzászólására (») Máj 25, 2008 /
 
Ott latod azt az "#ifdef" -et, ez a C nyelveknel hasznalt preprocesszornal ismertte valt felteteles forditasi direktiva. "def", azaz a nevebol is kitalalhato, hogy valami definialassal kapcsolatos a dolog. "ifdef" - azaz "ha definialt"...

Ha beteszed azt a definiciot ez ele - mondjuk a program elejere erdemes valahova ezt betenni - hogy:

#define TESTING

akkor az

#ifdef TESTING

igaz lesz es a mogotte talalhato reszlet kerul be a fordito inputjaba, egyebkent pedig az

#else

resznel emlegetett kodreszlet kerul leforditasra (egeszen az #endif-ig...)

Kellene olvasgatni a direktivakat kicsit ott ahol mondtam (a help-en).
(#) Sendi válasza trudnai hozzászólására (») Máj 25, 2008 /
 
Helló Trudnai.

Köszönöm, most már értem.
Ilyennel még nem találkoztam.Tudom, mindig van egy első eset.

Köszönettel
(#) ecostar hozzászólása Máj 26, 2008 /
 
Hogy lehetne egy Tcn75-es hőmérőszenzortól kapot bináris számhoz hozzárendelni egy karaktertáblázatban levő decimális szám rajzát, ezt mivel lehetne megoldani? valahogy egy BCD átalakítóval? Amúgy egy 3310-es kijelzőre szeretném a hőmérsékletet ki írni.
(#) potyo válasza ecostar hozzászólására (») Máj 26, 2008 /
 
Google-ba beírod: pic bin bcd és találsz néhány mintaprogramot a bináris-->BCD konverzióhoz.
(#) watt válasza ecostar hozzászólására (») Máj 26, 2008 /
 
Nem a rajzát kell hozzárendelni, hanem azt a kódot(ascII) amit a kijelző kíván a megfelelő karakter megjelenítéséhez. A potyo által ajánlott megoldás a célravezető...
Ha a kijelző nem ismerti a karakterkódokat, akkor még a karaktertáblát is meg kell írd. Valamint a kijelző vezérlését is.
(#) ecostar válasza watt hozzászólására (») Máj 26, 2008 /
 
A 3310 kijelző pont mátrixos nincs benne karaktertábla a karaktereket már meg írtam hozzá már "csak" ezeket kellene hozzárendelni a hőmérszenzor értékeihez
(#) trudnai válasza ecostar hozzászólására (») Máj 26, 2008 /
 
Szamomra mindig dobbenetes mennyire nem kepesek emberek megfogalmazni a problemat - pedig enelkul igen nehezkes a valaszokat megtalalni...

Szoval az a kerdes, hogy letezik-e valahol egy kodreszlet ami 3310-re karaktereket tesz ki? Vagy egyaltalan az a problema hogyan lehet meghajtani ezt a kijelzot? Vagy BCD atalakitas nem megy?

Tenyleg nem tiszta - szamomra legalabbis - hogy mi az ahol elakadtal?
(#) watt válasza ecostar hozzászólására (») Máj 26, 2008 /
 
Akkor már kaptál útba igazítást. Találtál infót az átalakításra a megadott keresési kulccsal?

A karaktertáblát a szabványos ASCII kódokkal írtad meg?
(#) momomomo hozzászólása Máj 26, 2008 /
 
Sziasztok!

Tudnátok segíteni?

Nekem egy olyan kapcsolásra lenne szükségem ami 24 óránként bekapcsol egy szivattyút 1-30 percre.
(ha lehet PIC12F675-re egy példa programot)

Sziasztok!
Köszönöm!
(#) watt válasza momomomo hozzászólására (») Máj 26, 2008 /
 
Erre olcsón lehet kapni időzítős órákat. Feltéve, ha valóban szükséges és nem csak tanulni(játszani) akarsz...
(#) watt válasza ecostar hozzászólására (») Máj 26, 2008 /
 
Rákerestem, 2. találat:
32-bit Binary to BCD to ASCII
(#) momomomo válasza watt hozzászólására (») Máj 26, 2008 /
 
Szia watt!

Szükséges is lenne meg tanulni is szeretnék hogy hogy kell leprogramozni.
(#) ecostar válasza trudnai hozzászólására (») Máj 26, 2008 /
 
A kijelző meghajtás már megy, tudok rajta karaktereket megjeleníteni, a problémám az hogy adott egy hőmérő szenzor ami küld egy adott értéket ami alapján nekem megkéne hívnom az adott értékhez tartozó decimális számot tároló táblázatot, túlajdonképen egy Bcd átalakítást akarok megvalósítani, ez-az ami nem tiszta hogy kéne megvalósítani.
(#) watt válasza momomomo hozzászólására (») Máj 26, 2008 /
 
Akkor el kell döntened, hogy mennyi idő múlva szükséges! Példa progit nem fogsz kapni, hacsak véletlenül valaki nem írt már ilyet, de ennek minimális a valószínűsége.
A programozás megtanulásához viszont idő kell. Azt akkor sem fogod megtanulni, ha netán ad valaki egy kész programot.
Ha tényleg tanulni akarsz, akkor kezd Topi 3 részes cikkével:
Íme az első
Figyelmeztetés: JDM-et kerüld el, ah jót akarsz!
A többi nagyon hasznos, és értékes információ kezdőknek is!
(#) potyo válasza ecostar hozzászólására (») Máj 26, 2008 /
 
Mi nem tiszta? Már kaptál linkeket a bináris-->bcd átalakításra, helyetted nem fogjuk megírni.
(#) ecostar válasza potyo hozzászólására (») Máj 26, 2008 /
 
Oké, nézem! nem is várom el hogy megírja más helyetem
(#) Thowra hozzászólása Máj 26, 2008 /
 
Üdv mindenkinek!
Bosszantott a beteg pic em és elvittem egy ismerőshöz akinek van egy gyári égetője de nála is a 829 helyett 630 at ír ki rá. Az olvasásnál nincs gond de írni nála se lehetett.
Mivel használtan kaptam így nem tudom menyit lett gyilkolva előttem.
Lehet, hogy túl sokszor lett írva és az tett be neki?
Kb meddig "él" egy pic?
(#) trudnai válasza Thowra hozzászólására (») Máj 26, 2008 /
 
Speckoban ez is le van irva, de amugy ugy lehet szamolni olyan ezerszer lehet irni a flasht - ez azonban enm garancia! Viszonyt olyat meg nem lattam, hogy masnak ismerte volna fel a chipet... lehet gyarilag volt hibas vagy kapott forditott bekotest, vagy nagy feszt oda ahova nem kellett volna, vagy valami statikus kisules ment rajta at mondjuk mert manapsag ugye mar "nem szokas" foldelt csukloval dolgozni... hat ilyen eredmenyek is szarmazhatnak akar ebbol...
Következő: »»   217 / 1319
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