- Bit 0 = Idle state
- Bit 1 = Erase Reset
- Bit 2 = Illegal command
- Bit 3 = Communication
- Bit 4 = Erase sequence
- Bit 5 = Address error
- Bit 6 = Parameter
- Bit 7 = Always 0
Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Lefordítottam CC5X fordítóval a már fentebb említett programot, de nem tudja értelmezni az elejét.. Mi a hiba benne? Nekem elsőre ezek a sorok tűnnek (eredetileg [64] volt, de ez a pic ahhoz túl kicsi,h.tudja) #pragma rambank 1 char sector2[20]; Köszi
Elfelejtetted megírni, hogy milyen opciókkal futtattad a fordítót, s hogy mi volt a hibajelzés.
Az eredeti programot le tudtad fordítani? Ha azt sem, akkor ne a forráskódban keresd a hibát!
Idézet: „Az eredeti programot le tudtad fordítani? Ha azt sem, akkor ne a forráskódban keresd a hibát!” Ill. ott keresd a hibat, marmint lehet masik forditora lett ez az egesz irva es a pragmat nem tudja ertelmezni, vagy nincs elegendo hely, vagy csak nincs bank 1 azon a PIC-en, vagy nem inkludaltal be valamit amit be kellett volna... Tenyleg nem viccbol irjuk, hogy mikor van egy hibauzenet akkor jo lenne azt is beidezni
Rendben, köszi srácok későn volt már és elfelejtettem, ha az otthoni gépemnél leszek, akkor majd elküldöm és csatolom a progit is!
Amúgy a bankok nem tetszettek neki, amire emlékszem. Idézet: „lehet masik forditora lett ez az egesz irva” Ez már a "másik fordító"! "A programban világosan benne van az útmutató: cc5x fordítóval kell fordítani." Idézet: „„lehet masik forditora lett ez az egesz irva” Ez már a "másik fordító"! "A programban világosan benne van az útmutató: cc5x fordítóval kell fordítani."” Ja, akkor csak en nem kovettem az esemenyeket a 7vegen Tanulsag: vissza kell olvasnom, mielott irkalok
Sziasztok!
Fordító hibaüzenete ez volt: Idézet: „Error mmc.c 268: No space for global variable 'sector4' (Too few RAM locations (within a specific bank or shared) are available. #pragma rambank or bank type modifiers (bank0 ..) can be used to move variables to another bank)” Ami sztem 16F690-es RAM-jának hiánya miatt adódott. Átírva a sorokat és a hozzá kapcsolódó műveleteket már lefordult. #pragma rambank 0 char sector1[64]; Fordítót úgy használtam, ahogy le volt írja a kódban. De ezeket kijavítva még mindig nem teljes jól műkszik a progi. CS a 16F690-ben melyik pin?? És ez mit jelent a program végén?? [/quote]i &= 0b.0001.1111; if (i != 0b.0000.0101) {[quote] Köszi
Idézet: „CS a 16F690-ben melyik pin?” Ezt az adatlap jobban tudja, mint én. Idézet: „i &= 0b.0001.1111;” másképp: i = i & 0x1f; (& = AND) Idézet: „if (i != 0b.0000.0101)” Ha i nem 5... Idézet: „ De ezeket kijavítva még mindig nem teljes jól műkszik a progi.” Egy okos ember (talán Dijkstra?) szerint ha kijavítunk egy programhibát, attól még nem hibátlan a program, csupán a következő hibát lesz nehezebb megtalálni!
Szia!
Azt vágom,h.a C parancs mit jelent, de hogy azzal a programban mit akartak vele kifejezni, miért akkor ír ki hibát, azt nem értem?? Idézet: „Ezt az adatlap jobban tudja, mint én.” Az biztos én az adatlapból a RC6-ra tippelek, de mondom,h.ellentmondásos dolgokat olvastam ezekkel kapcs. és várok a megerősítést,h.akkor az-e és tényleg nem vagyok benne biztos!
A CS-re a program elején van megadva, hogy az RC6 láb. Bár elég érdekesen néz ki, én inkább úgy adtam volna meg, hogy #define CS PORTC.6
Pl. ez az részlet egyáltalán nem illik a struktúrált programozáshoz:
C-ben ennek valahogy így kell kinéznie:
De ha nem használnál felesleges és értelmetlen rövidítéseket, és ha elmondanád azt, hogy mit csinál a program, akkor talán érdemben is tudnánk segíteni...
Csak a programodban kell szetnezni szoveg keresessel
En ezt talaltam abban a C programban amit csatoltal: #pragma bit CS @ PORTC.6 // output pin for chip select (MMC) Namost mar csak az a dolgod, hogy ellenorizd a kovetkezoket: 1. Van-e az adott PIC-en amire a programodat atirod PORTC (ill annak van-e 6. bitje) 2. Milyen egyeb funkciok csatlakoznak hozza amik esetleg a masikban nem, avagy milyen funkciok hianyoznak amik a masikban meg vannak - magyaran hogyan kell a PORTC-t az adott eszkozon felinicializalnod, es ennek megfeleloen az inicializalo reszt atirnod ha szukseges A C operatorokat nezd amugy at a Kernighan and Ritchie konyvben (K&R neven is szoktak emlegetni). Ott (is) le vannak irva az operatorok '&=' ill a '!=' is. A 0b.... megadasi mod ott nincs leirva mert az nem eredeti es nem szabvany - azt csak a CC5X-ed (ill lehet par masik embedded C) tamogatja csak.
Sziasztok!
Én csak ezt a programot fel szeretném használni (icserny linkje alapján) és alkalmazni a saját kontrolleremre, mivel nem sikerült, ezért kértem a tanácsotokat,h.mi hibázhat. Amit írtatok kipróbáltam és még mindig ezt adja vissza: Idézet: „PIC online MMC: write error 2” köszi
Idézet: „h.mi” Potyo ezekre a felesleges rövidítésekre gondolt!
Idézet: „Az biztos én az adatlapból a RC6-ra tippelek” A helyzet az, hogy a Chip Select helye csak slave módban rögzített, akkor RC6 (/SS, aktív állapotban alacsony). Master üzemmódban, ahogy te is használod, tulajdonképpen mindegy, hogy melyik szabad lábat használod. Az if-es kérdéseidre visszatérve: azt vizsgálja, hogy a blokk írás után visszaolvasott egybájtnyi adat alsó 5 bitje 00101 vagy sem. Hogy ennek mi értelme van, azt az MMC leírásából lehet kideríteni. Idézet: „Amit írtatok kipróbáltam és még mindig ezt adja vissza: „PIC online MMC: write error 2”” Nézd, találtunk neked egy projektet az Interneten,ami vagy működik, vagy nem. Te önkényesen megváltoztattad a hardvert (nem is tudjuk, hogy mire). Hályogkovács módszerrel átirtad a programot is. Ezekután az lenne a csoda, ha működne.... Ilyen alapvető dolgokat kellene tisztázni, hogy megfelelő sebességgel kapja-e az adatot az MMC? Szereti-e a beállított CKE/CKP üzemmódot? Nem keverted-e össze az SDO/SDI vezetékeket? (talán nem, ha már a Write error 2-ig eljutottál!) Mit csinál a program,ha kikommentálod az alábbi sorokat? (kihagyva a hibajelzést)?
Sziasztok
szeretnék egy kis segítséget kérni. volt egy működőképes Pic12c508A MCU egy éve volt használva utoljára most előkerült és nem csinál semmit sajnos annyit irt ki mikor megpróbáltam olvastatni icproggal. no oscillator calibration value found. én annyira nem értek a pikekhez de ezt azt jelentheti hogy nincs jól beállitva az oszcillátor? kérem aki tudja mi lehet vele a probléma kérem szóljon Üdv
Jól látom, hogy ez csak egyszer írható mikrovezérlő?
Az oszcillátor kalibrációs értéke a memória végén helyezkedik el (ha jól tudom, egy RETLW nnn utasítás, tehát a W-ben tér vissza a kalibrációs konstanssal).Programozás előtt el kellett volna menteni, és a programmal együtt vissza kell(ett volna) írni a memória végére. Ha hiányzik, az sem baj, feltéve, ha a beírt program nem akarja meghívni a kalibrláshoz. Ha van kedved olvasgatni, akkor küldök egy kis olvasnivalót.
Igen, a kalibracios ertek hianyzik. A Baseline-oknal nem RETLW van, hanem MOVLW, es az az erdekessege a dolgoknak, hogy a firmware POR-kor a program memoria legmagasabb cimen indul el. Itt normal esetben a MOVLW-vel a W-be toltodik a kalibracios ertek. A PC atcsordul 0-ba miutan ez az utasitas vegre hajtodott, igy kerul a vezerles a reset vektorra. A W-ben azoban mar ott lesz a kalibracios ertek amit majd manualisan kell bemasolni az OSCCAL-ba.
Namost amiert mindez fontos: Ha azon az utolso helyi erteken valami szemet van, akkor akar mukodeskeptelen is lehet az eszkoz. Azaz pl egy GOTO $ oda fagyaszthatja - de hat ott barmi is lehet Masik dolog amit tudnunk kell meg a baseline-okrol, hogy nemelyik tipusnal a clock out-ot szinten az OSCCAL-lal lehet allitani. Vegeredmenyben az also (0.) bit ha magas akkor van clock out. Ebbol fakad, hogy ha egy hibas ertek, de MOVLW utasitas all a kalibracios helyen, akkor akar azt is hihetnenk minden redben, azonban lehet veletlenul kirajkjuk az FOSC/4 -et a clkout-ra. Ez 508-nal nincs meg szerencsere, de pl 10F-eknel igy van. Az egyetlen elfogadhato megoldas, hogy mielott kitesszuk az OSCCAL-ra barmit is, maszkolnunk kell!
Ha a mondatok elejét nagybetűvel kezdenéd, talán el is olvasnám amit írsz!
Az mmc.c program alábbi részletében nem értem, hogy miért pont az i == 5 teljesülése a jó nekünk (ha i != 5 , akkor jön a hibajelzés):
Mindenestre a válaszkódok (egy másik forrásból beszerezve) így néznek ki: A hibajelzés kiíratása helyett tehát tesztelési és pedagógiai célzattal a visszatérési kódot kellene kiíratni valamilyen olvasmányos formában!
Ha senki sem mondja, akkor kénytelen vagyok megválaszolni magamnak: az 0x05 érték egy nyugtázójel.
Találtam itt egy másikmintaprojektet, s ez tisztázott 1-2dolgot.felmerült viszont egy újabb kérdés Szigetiván programja kapcsán:
Itt van két Send(0xFF), ami a fenti linkről származó ábrához képest többlet. Kellenek ezek ide egyáltalán?
Szia!
Igen, érdekes észrevétel, már rajta vagyok! Köszönöm a segítséget!!!!
Hali!
A 16F628A-ban van ilyen kalibrációs érték? Megnéztem az adatlap oszcillátormódokról szóló részét, de nem találtam róla infót, valamint a memória utolsó programszava is 3FFF gyárilag.
Igen, ezek mar gyarilag be vannak kalibralva es nem szukseges (es nem is lehet) allitgatni az orajat.
Tegnap mar nagyon faradt voltam, szoval reggel vissza olvasva a valaszomat nem egyertelmu (az igen az amolyan kotoszo Szoval a
Idézet: „A 16F628A-ban van ilyen kalibrációs érték?” kerdesre a valasz: Nincs ilyen kalibracios ertek, ezekben a PIC-ekben mar nem kell kulon betoltogetni az OSCCAL regiszterbe, az gyarilag belulrol megtortenik es kivulrol hozzaferes nincs is mar ehhez a regiszterhez. Ily modon megoldottak a veletlenul letorolt kalibracios ertek/utasitas orokos problemajat. Vannak olyanok is, ahol ugyanigy mar gyarilag be van kalibralva az oszcillator, azonban van lehetoseg a hangolasra - valami +-12% remlik. Ez pl jol johet ha pl soros kommunikaciohoz kellene mas alap freki. Amugy amit leirtam a Baseline es a MOVLW stilusu kalibracios dolgokkal kapcsolatban, nevezetesen, hogy egy hibas ertek ott hibas mukodeshez vezethet ha pl az utasitas nem MOVLW, ez igaz a RETLW-s megoldasra is, hiszen ha a firmware-bol CALL-lal meghivjuk azt es ott nem RETLW hanem veletlen szeru utasitas van akkor az ugyanugy kiszamithatatlan hibajelenseget okozhat.
Sziasztok!
Szükségem lenne valamilyen rádiós kommunikációs modulra. Jó lenne max 1km-es távolságig valami olcsó, de működőképes megoldás. Az egyik egység mindenképpen PC-hez lenne kötve, a másik meg egy kis pic18-as egységhez. Tudnátok valamit ajánlani? Köszi Idézet: „Tudnátok valamit ajánlani?” Talán a Hírközlési Felügyelet jogi tanácsadó szolgálatát, ha már ápr. 1. van! Viccen kívül: ez az 1 km távolság necces, főleg ha más telkén halad át a jel. Nem értek hozzá, de félek, hogy ez esetben nem csak elektronikus problémáról van szó...
És ha mondjuk csak néhány 100m-es távolságot szeretnék biztonsággal áthidalni?
|
Bejelentkezés
Hirdetés |