Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
watt. Tisztelem a tudásod, de aki nincs olyan magas szinten mint te, az néha hülye kérdéseket is feltesz. Én sem szeretném az oldal dilettánsá fajulását, de nagyon örülnék ha észrevennéd hogy te ebben nagyban segítesz. Sosem akartam személyeskedni, és elismerem hogy a füledben a gitár legmagasabb húrját eszetlenül pengetik, de aki akar az válaszol. Aki meg lenéz az a király, és azthiszem segíteni vagyunk itt egymásnak. Köszönöm.
Ezek a kérdések nem ide valók! Keress olyan topicot, ami a színvonaladnak megfelelő! pl. Ez: Bővebben: Link
Üdv Mindenkinek!
Problémám akadt az UART Receive Interrupttal egy PIC24FJ128GA010-en. A programom maga úgy néz ki, hogy a fő ciklusban fut egy UART küldés, és interrupttal van kezelve az UART vétel. Csak sajnos ez utóbbi nem működik, egyszerűen nem tudom elérni az interruptot a PICen, pedig a megfelelő lábra megérkezik a soros porton a jel, de mégse történik semmi. Maga az UART küldés megy frankón, azt külön kipróbáltam. Ha esetleg valaki észrevenné a hibát a kódomban, vagy tudna adni valami javaslatot, hogy mi lehet a hiba, azt nagyon megköszönném. Üdv: András
Egy a megszakítás lekezeléséhez elhelyezett LED vezérléssel detektálni kéne, hogy a megszakítás megtörténik-e. Vagy most honnan tudod, hogy nem? Lehet, hogy a LATA6 pont egy LED?
A 24F-eknél törölni kell a megszakításjelző bitet? Nem a vételi regiszter kiolvasása törli, mint a 18F-eknél?
Igen, a LATA6ra egy LED van kötve, azt pont a diagnosztika miatt raktam be. Én úgy tudom a PIC24-eknél le kell törölni a flaget.
Az a kérdés, hogy melyiket, melyikkel, és milyen helyen akarod alkalmazni.
Milyen perifériát használsz a programodban, mennyi memória kell?
Szia!
A következőket kell figyelembe venni: - A/D konvertert és a komparátor le kell tiltani, - A memória kiosztása eltér, a 12F629 ugyan azt a memórát éri el a 0x20-0x5F és a 0xA0-0xDF címtarományban, míg a 12F683 -ben a 0x20-0x7F és 0xA0-0xBF címen levő memória blokkjai függetlenek. A 12F683 -ban a 0x70-0x7F és a 0xF0-0xFF címtartományon van közös terület. Ha az eredeti program nem használja ki, hogy az 1.bankban is ugyan azokat az adatokat érheti el, mint 0. -ban, akkor az A/D és a komparátor kikapcsolását kell csak beletenni.
Nem anyira értek a PIC programozáshoz . Ezt a kapcsolást szertném megépíteni Bővebben: Link ebbe kellene valamit módosítani?
A 629 olcsóbb, a 683 drágább, de többet tud. Miért akarod helyettesíteni?
Mindenképpen át kell írni 683-ra, és úgy kell fordítani. A CMCON helyett CMCON0 van a PIC12F683-ban. OFF Szerintem inkább a "PIC kezdőknek" topikban kellett volna kérdezned. ON
Helyettesíthető, miután mindent tud amit a 12F és annál többet is. Az más kérdés, hogy ehhez módosítani kell a programot. Ha nem tudod módosítani, akkor nem tudod vele helyettesíteni.
Még annyit, hogy egy 12F629 165...180ft+áfa. Egy ilyen progam átírása minimum 1 óra. Tudod mennyi egy óra munkadíja egy proramozónak?
Jó mindegy akor inkább nemfoglalkozom vele , veszek inkább 12F629 est ugy egyszerűbb szesz.
Szia!
Ha jól emlékszem, már feltöltöttem egy olyan forrást, amiben a program már át van írva 16F629 mellett 12F675, 12F683, 16F627(A), 16F628(A) kontrollerekre is...
Sziasztok!
Lehet, hogy egy kicsit off ebben a támában... Az MpLab programmal szeretnék 24FC512, 24FC1025 EEProm tartalmat "fordítani": a mintában címeket számoltatni, makrózni, stb. Ami ment az MpLab 5.7 -tel, mért nem megy a 8.63 -mal?
Ezt csak konvertárom .hex be felégetem a pic be és mennifog??
Helló. Írtam egy hőmérő programot melynek érzékelője egy NTC ellenállásból és egy sima ellenállásból alkotott feszültségosztó. Viszonylag pontos mivel csak az egész fokokat jelzi ki. A program működik de szeretném ha átnéznétek és az esetleges hibákat vagy észrevételeket leírnátok a programmal kapcsolatban. A processzor PIC16F877A 4MHz-es külső oszcillátorral. A kódot HITECH C-ben írtam. A segítségeteket és észrevételeket előre is köszönöm.
Szia!
Projectet kell készíteni neki, beállítani a kontroller típusát, abszolut kódot kell fordítani Release módban. A keletkező hex beprogramozható...
Pár dolog van, amit én másképp csinálnék:
1. Ha olyan regisztert állítasz, aminek bitenként van értelme, akkor talán érdemesebb a 0bxxxxxxxx formát használni a jobb áttekinthetőség miatt. Pl. ADCON0=0b01000001; 2. A GO=1 részt másképp érdemes csinálni, valami ilyesmi:
A lényeg, hogy a belső blokkra csak akkor fut rá, amikor a konverzió készen van. Amíg nincs készen, addig felesleges az egyes és tizes változókat újraszámoltatni, hiszen úgyis ugyanaz maradna bennük, tehát ezzel gyakorlatilag spórolunk a számítási teljesítményen (persze ha a feladat csak a hőmérés, akkor mindegy). A másik, fontosabb, hogy nálad folyamatosan ráfutott a GO=1 sorra, emiatt megtörténhetett, hogy amíg az a=adc_mert%10; sor és a GO=1; sor között futott a kontroller, az idő alatt a konverzió elkészült, te viszont újra elindítottad, még mielőtt kiolvastad volna az eredményét. Persze ez nálad most nem történhetett meg, hiszen a __delay_us(50); alatt mindenképpen elkészült a konverzió, csakhogy ez a várakozás felesleges. A várakozás akkor kell, ha konverzió előtt analóg csatornát váltasz, konverzió indítása után ez már nem kell. Az a és b változók feleslegesek, bár ezeken épp nem múlik semmi sem. 3. van egy olyan dolog, hogy megtörténhet, hogy akkor esik be a timer megszakítás, amikor már az egyes változó új értéket kapott a tizes változó pedig még nem. Ekkor a kijelzőn egy ciklusig rossz érték is megjelenhet. Mivel ember olvassa le a kijelzőt, jelen esetben ez nem probléma, viszont más helyen akár problémát is okozhat. Több lehetőség van ennek kivédésére: - csak az adc_mert értéket mented el a főprogramban, és az egyes, tizes változókat a timer megszakítási rutinban számolod ki. Ezen módszer hátránya, hogy sokáig fog futni a megszakítási rutin, valamint szintén problémás lehet, ha az adc_mert változó több bájtos. - az AD konverzió is megszakítást okoz, és ott csinálsz mindent, ekkor az adc_mert több bájtos volta már nem okoz problémát, viszont továbbra is hosszú marad a megszakítási rutin - a kijelző frissítését sem megszakításból oldod meg, hanem a főprogramban figyeled a T0IF bitet, és ha bebillent, akkor lefuttatod azt, ami most a megszakítási rutinban szerepel - kikapcsolod a megszakítást az egyes változó számítása előtt, és visszakapcsolod a tizes számítása után - biztos van még valami, ami nem jut eszembe, majd más ideírja 4. az XTAL_FREQ résznél én nem tenném a #define-t #ifndef-#endif közé, mert ha itt meg akarod adni az órajelet, akkor máshol nem szabad, hogy meg legyen adva. Ha viszont mégis megvan adva, az szerintem hiba, és akkor emiatt szólna a fordító, hogy kétszer van definiálva az _XTAL_FREQ. 5. Olyasmit nem ellenőriztem, hogy van-e nem használt láb bemenetté állítva, de erre figyelj, hogy a nem használt lábak sose legyenek lebegésben hagyva. Vagy fel/le kell húzni kívülről, vagy pedig kimenetté kell állítani a használaton kívüli lábakat. 6. a PIC az kontroller, nem processzor.
Köszönöm az útbaigazítást. A lábakra figyeltem és az órajel sincs máshol megadva. Még egyszer köszönöm.
Természetesen az MpLab V8.70 feljesztőkörnyezettel.
Helló közben átjavítottam a programot. Sokkal kisebb lett a program mérete és működik is.
Arra már rájöttem, hogy az IDE felületről hiába választom ki a 24FC512 -t, az MPASM csak paramcssori kapcsolóval fordítana a 8 illetve 16 bites EEEProm -okra. A /PEEPROM8 -at nem érti meg, a /PEEPROM16 fordít, de a 0x3fff -nél nagyobb kódokra azt írja "Truncated to core size", ráadásul a byte-ok sorrendjét megfordítja..
A "README FOR MPASM ASSEMBLER.HTM" 7. pontjában leírtak szerint "Two "processor" selections are provided to generate byte data - EEPROM8 and EEPROM16." Az MpLab V5 probléma nélkül lefordítja..
Sziasztok
PIC programozásból nagyon-nagyon kezdő vagyok még. PIC Simultor IDE nevű programba próbálkozom, egy 16F628A szóra bírni. A felállás a következő, leszimulálva nagyon szépen csinálja azt amit kell, viszont ha a kapott hex fájlt beírom a PIC be akkor az meg se mukkan. Lehet, hogy valamit kihagytam a programból vagy rosszul csináltam, csatolom a .bas fájlt, meg a hex-et esetleg valaki ránézne? Előre is köszönök mindent. Üdv: Zoltán
A konfigurációs bitekkel mi a helyzet ( ha a szimuláció megy, akkor ilyen típusú problémád lehet vagy táp ! )?!
Steve
A szimuláció fut szépen!
Itt van róla kép, én jónak találom, bár, mondom még ilyennel nem volt dolgom. A tápfesz tuti megvan
A beállítások az áramkörrel együtt érnek valamit ( remélem, hogy jó, de ha nem vagy biztos benne, akkor mellékeld a rajzot potyo kolléga felvetésének megfelelően! ) !
Steve |
Bejelentkezés
Hirdetés |