Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   432 / 1318
(#) rolandosss21 válasza MPi-c hozzászólására (») Márc 14, 2009 /
 
Hát köszi Én is remélem mert fontos lenne De ha nem jön össze akkor majd elviszem vmi programozóhoz vagy nem tom kihez
(#) trudnai válasza rolandosss21 hozzászólására (») Márc 14, 2009 /
 
OK, szerintem az LRAM_025 lesz az, es az elejen mikor felinicializalja 0x05 -tel azt kellene megvaltoztatni, de ez csak igy par perces ranezesre mondtam a vissza forditott HEX alapjan.

MPi-c -nek igaza van, a forras sokkal jobb lenne, mert abban konyebb bogaraszni es azt a par szoveget is konnyu lecserelni - joval konyebb mint a HEX-bol vissza forgatott dologgal vacakolni... es akkor tegyuk fel, hogy a vissza forditas jol mukodik - pl nem tudja ez a disassembler vissza nyomozni a bank beallitasokat es csak megjegyzesben irja neked oda, hogy ha mas a bank akkor mas neveket kellene hasznalni. Valoszinuleg igy is le lehet forditani, de warnngok tuti lesznek benne.

A Google amugy azert baromi jo, mert nemcsak keresoje meg levelezoje van, hanem forditoja is. Pl magyarra atforditva az oldal:

Bővebben: Link
(#) rolandosss21 hozzászólása Márc 14, 2009 /
 
Oké akkor csatolom az eredeti asm filet Viszon akkor ha megtennétek és átírnátok azokat a szavakat is amiket kell: hang, magas, basszus, kozep
Hogy melyik mi azt én nem tudom.
Előre is köszi a fáradozásotokat.

LCD.asm
    
(#) Jobbagyag hozzászólása Márc 14, 2009 /
 
Hi
Egy linkeres project EEPROM mentést végző részével vergődöm már egy ideje. Tudna valaki segíteni?
Csatoltam a projecthez tartozó forrásfile-t ami adatok elmentését végzi az EEPROM-ba.
A forrásfile hosszúnak tűnhet de ugyanaz ismétlődik: 11 byte EEPROM-ba kiírásáról van szó(tápfesz elvesztéskor) illetve visszaírásáról (ha áramszünet után a PIC újraindul).

Ha a file elején a ;++++++++ vonalak közti rész benne van tökéletesen megy minden.
Ha kiiktatom (vagy akár már az első byte elmentése utáni részre teszem az end-et) megbolondul minden.

Debug-olásnál:
MPLAB SIM :
CORE-E0001: Stack over flow error occurred from instruction at 0x00045f
Ez egy sima CALL utasitas a main.asm-ben aminek semmi köze az EEPROM dolgokhoz és kifogastalanul megy ha kiiktatom az eeprom_mentes_visszairast a fenti módon. (Van a meghívott ciklus után RETURN)

A program lefordul, de nekem úgy tűnik mintha linker ezzel a forrásfile-al már nem jól szerelné össze a dolgokat.

Nyílván valami banális "programozói" hiba lesz, de 2 napja próbálgatom mindenhogy.

Az MPLAB user guide szerint jól van az EEPROM mentés megírva csak annyi a változtatás, hogy már az elején letiltom az interruptot mert utána ugyis a MAIN-nél folytatom(software-es reset) amikor is minden újra az elejéről indul.
Kösz előre is!
(#) icserny válasza Jobbagyag hozzászólására (») Márc 14, 2009 /
 
Idézet:
„Debug-olásnál: MPLAB SIM : CORE-E0001: Stack over flow error occurred from instruction at 0x00045f”

Túlcsordult a hardveres stack (ha jól tudom, az fixen 8 mélységű).
(#) rolandosss21 hozzászólása Márc 14, 2009 /
 
Hali! Látom senkinek sem sikerült megcsinálnia azt a hex fáljt. Nah mind1 majd valahogy megcsináltatom vmi programozóval Azért köszönöm
(#) watt válasza rolandosss21 hozzászólására (») Márc 14, 2009 /
 
Miért, talán mondta valaki, hogy nekiállt? Kicsit el vagy tévedve! Valószínűleg nem tudod milyen az órabére egy prgoramozónak. Főleg, ha hexából kell visszafejteni egy kódot(tudom volt forrás is...).
Lényeg, hogy ilyet egy fórumon nem kér az ember!
(#) rolandosss21 válasza watt hozzászólására (») Márc 14, 2009 /
 
Szia! Amúgy ott az asm-is és ezt múltkor ugyan itt csinálta meg nekem egy srác 20 perc alatt csak akkor még csak az olyanokat kellett átírni magyarra mint pl: hang, basszus, kozep, magas, most meg csak annyit kellene csinálni, hogy a hang alapból 5-ről indul és ezt kellene leszedni 0-ra. Meg hogy ugyanúgy magyarúl írja ki. Egyébként meg az órabér az ami annyira nem érdekel, mert ezt hétfőre el kellene készítenem.
(#) brato válasza rolandosss21 hozzászólására (») Márc 14, 2009 /
 
Üdv!

Hogy meg tudd csinálni hétfőre, bejelöltem hol kell átírni és mire. ---> ilyen nyilakkal.

LCD-1jav.asm
    
(#) rolandosss21 válasza brato hozzászólására (») Márc 14, 2009 /
 
Köszi szépen Remélem meg tom csinálni, de ezzel most sokat segítettél
(#) watt válasza rolandosss21 hozzászólására (») Márc 14, 2009 /
 
Úgy látszik mindig találsz egy balekot! Egyébként mit röhögsz mindig? ( ) Nem gondolod, hogy idegesítő?
(#) brato válasza watt hozzászólására (») Márc 14, 2009 /
 
Nem balekságból csináltam, hanem azért, hogy legyen elfoglaltsága.
(#) Hp41C válasza Jobbagyag hozzászólására (») Márc 14, 2009 /
 
Szia!

Átolvastam a programodat, lényegesen egyszerűbb lehetne egy az adat EEPromba író szubrutin / eljárás felhasználásáva.

A hiba okárát a hozzászólás utolsó részében látom.

Azt írod, hogy a szoftveres resetnél a MAIN programmal folytatódik a működés. Ha a MAIN programba ugrás nem az alapprogram szintjéről történik, hanem már meghívott szubrutinból, akkor a verem minden a MAIN programba való ugrásnál csak egyre telik. Többször végrehajtva előbb-utóbb mind a 8 tároló betelik. Ekkor jön a hibajelzés.

A megoldás az, hogy az állapotot egy tárolóban eltárolni, visszatétni az alapprogramba (minden szubrutinból visszatérni), az tároló állapotát vizsgálni. Innen ugrani a MAIN-ra.

Remélem segített..

(#) watt válasza brato hozzászólására (») Márc 14, 2009 /
 
Nem akartalak megsérteni, elnézést!
(#) trudnai válasza watt hozzászólására (») Márc 14, 2009 /
 
Idézet:
„Miért, talán mondta valaki, hogy nekiállt?”


Hat en meg is csinaltam neki amit kert a vissza fejtett asm-jeben, mert csak 1 vagy max 2 perc volt, de meg arra sem vette a faradsagot, hogy kiprobalja. Na mindegy...
(#) skeletornb válasza rolandosss21 hozzászólására (») Márc 14, 2009 /
 
"ezt hétfőre el kellene készítenem"

Miért vállalsz olyan munkát, amit nem bírsz magadtól megoldani? Gondolom a határidő erre utal.
(#) Jobbagyag válasza Hp41C hozzászólására (») Márc 15, 2009 /
 
Koszonom a hozzaszólásotokat.
A helyzet súlyosabbnak tűnik. Igen, gondoltam a main hívás bezavarására, RETURN-nel visszatértem a subrutinból és a main-ből hívtam, sőt egyáltalán ki is iktattam a main hívást, semmi eredmény. Nem értettem a stack overflow problémát, mert nincsenek egymásba ágyazott CALL-ok, megszakítás lapon is csak bit állítás történik, nem felejtettem el a RETURN-öket.
A hibát a linkeres összeszerelésnél gyanítom.
A Program Memory-ban kotorászva érdekes felfedezést tettem: a main-ben egy sima szubrutin meghívásánál (CALL egyperc_vizsgalat) ez áll:
CALL 0 és valóban innentől a mainhez ugorva folytatja (érthetően stack overflow-t okozva). Ha az eeprom_mentes_visszairas-nál a ;++++ vonalak közti rész aktív (azaz mindjárt az elején ott az END), akkor minden ok a Program Memory a kívánt CALL egyperc_vizsgalat -ot mutatja. Biztos tudtok erre valamit, de nekem fogalmam sincs mi lehet. kb18 forrásfile-ból szerelődik a program össze, miért ezt az egyet nem csípi a linker? Az EEPROM-ba író szubrutin jó ötlet, a részletekre még visszatérünk.
(#) bbalazs_ válasza Jobbagyag hozzászólására (») Márc 15, 2009 /
 
A megszakitasbol ugye nem sima return-el tersz vissza?
(#) Rumcájsz hozzászólása Márc 15, 2009 /
 
Sziasztok!
Most teszem első lépéseimet a PIC világáan, mint egy csecsemő még csak szemlélem a világot.
Kaptam egy PICkit2 programozót a start panellal amelyen a 16F690 van.
Feltettem a PICkit2 programozót és a mikroC programot és itram rá egy nagyon egyszerű kis programot. Nos ez a program meg se nyikkan.
A kérdésem hogy a gyári próbapanelon ugye első lépésként egy 4 megás kavicsot kell a 2-3 lábak közé betenni ha külső órajelről akarom a cuccost járatni?
A mikroC-ben beállitom a FUSE-okat (még azt kell kigolyóznom hogy ott mi mit jelent). Alapból a TRIS 1 tehát bemenet. Kiválasztom melyiket akarom kimenetnek használni és átállitom azt 0-ra.
Ezek után ezekre a kimenetekre már tehetek LED-eket pl és azokat programból fogom tudni ki- be kapcsolgatni?

Jól látom a dolgokat vagy tévúton járok?
Várom valaki válaszát, amelyet előre is megköszönök!
(#) Norberto válasza Rumcájsz hozzászólására (») Márc 15, 2009 /
 
Jó úton jársz, igen.
(#) El_Pinyo válasza Rumcájsz hozzászólására (») Márc 15, 2009 /
 
Szia!
Tévúton nem jársz! Annyit tennék még hozzá, ha külső kvarcot használsz, akkor kell a két kondenzátor is (20-30 pF -> adatlap), de bőven megfelelő kevésbé időkritikus alkalmazásoknál a belső RC oszcillátor is (4/8 MHz). Ha LEDet kötsz a kimenetre, szükséges még áramkorlátozó ellenállás is. Egyébként valószínűnek tartom, hogy a firmwareben elmaradt a portok digitálissá állítása (ANSEL, ANSELH regiszterek kinullázása).
Tedd fel a programot amit írtál, úgy könnyebb lenne segíteni.

Üdv.
(#) Lozsa hozzászólása Márc 15, 2009 /
 
PIC24-el csinálnék diplomamunkát, amiben CAN kommunikáció is van az autóval. Azt nem tudom viszont, és sajna nem találtam rá igazából semmit, hogy kell-e szintillensztés vajon?

Mivel a PIC24 3.3V tápról megy így gyanús, hogy kevés lesz a jelszint a CAN busznak.

Vagy egyáltalán direktbe ráköthetem az OBD csati megfelelő lábaira a CANTX, és CANRX lábakat?
(#) watt válasza Lozsa hozzászólására (») Márc 15, 2009 /
 
Úgy tudom kell illesztő... pl (MCP2551)
- Itt a lényeg -
(#) kisszee válasza Rumcájsz hozzászólására (») Márc 15, 2009 /
 
Ha jól vettem ki a szavaidból, te most arra gondolsz, hogy azért nem tudod villogtatni a LED -eket mert nincs kristály a Low Pin boardon ? Mert ha igen, akkor nem kell tenned rá, a 16F690 -ben van belső oszcillátor és, ha csak gyorsan ki akarod próbálni a LED -ek villogtatását, elég, ha az "edit project" -ben beállítod kézileg a config biteket, majd megadod neki, hogy mekkora legyen az órajel. Legalábbis én ezt vettem ki az írásodból, a gyári próbapanelon az alapvető rutinokhoz semmit nem kell tenni. Ha valamit félreértettem, akkor elnézést.
(#) Jobbagyag válasza bbalazs_ hozzászólására (») Márc 15, 2009 /
 
Nem, RETFIE-vel, de a furcsa az, hogy ez egy több forráfile-ból álló több min 2000 soros program, ami tökéletesen működik minden részletében amíg az EEPROM mentés szakasz ki van iktatva. Minden hivatkozást kiiktattam tehát nem is fut rá a program, de ugy sem megy. Ami érthetetlen egy CALL subrutinnev sor a Program Memoryban CALL 0 -ként fordítódott le és innen mindig a program elejére ugrik. Ha kiiktatom az EEPROM mentő programsorokat jól fordul le.
Van ötletetek?
(#) Rumcájsz hozzászólása Márc 15, 2009 /
 
Sziasztok!
Köszönöm a helpet, nagyon rendesek vagytok!
Megvannak a fuse-ok, default-al mennek a demo-k.
Elkezdtem volna irogatni a kis tanulóprogramomat mikroC-vel.
A pickit 2 panelon van 4 db led RC0-3 és ezeket szeretném ki- be kapcsolgatni.
Egyenlőre ott tartok hogy nem tartok sehol, próbálgatom hogy hogy lehetne valamelyik lábat magas szintűre billenteni, de eredmény eddig semmi.
Ötlet? (Gondolom ezt rögtön vágni fogjátok)

teszt.txt
    
(#) kisszee válasza Rumcájsz hozzászólására (») Márc 15, 2009 /
 
LATC helyett inkább PORTC -t használd, és tedd bele végtelen ciklusba a a PORTC=0b0000001 -et, mondjuk for(; -al, vagy while(1) el stb...
(#) benjami válasza Rumcájsz hozzászólására (») Márc 15, 2009 /
 
nem ismerem a mikroC-t, de a C18-as a main végére is egy returnt-t fordít, amitől aztán a proci resetelődik verem alulcsordulás miatt. Egy while(1); utasítást írj a main vége elé, és akkor nem akar a main-ből a "semmibe" visszatérni.
(#) icserny válasza Rumcájsz hozzászólására (») Márc 15, 2009 /
 
A PICkit2 Starter Kit-hez kapott CD-n vannak mintaprogramok, de a Microchip oldaláról is letöltheted. Azokkal a példaprogramokkal a demókártya minden eszközét le tudod kezelni.

Természetesen kötelező olvasmány a PIC16F690 adatlapja!!!
(#) watt válasza kisszee hozzászólására (») Márc 15, 2009 /
 
Ha kimenetet akar kapcsolgatni, akkor pont a LATx kell!
Következő: »»   432 / 1318
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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