Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Bocs, az előbb elírtam, nem 1-et hanem 0-át ad vissza a port szintjétől függetlenül. A CMCON=0b00000111-nél a rajz szerint mindig 0-át ad vissza. És ez így is van. CCP2CON-t már én sem értem
Mivel DS1820 van rákötve, ezért külső 4k7 felhúzó ellenállás van rákötve. ha kimenetnek konfigolom, le tudom húzatni a szintet. Elvileg kizártam mindent amit az agyam kiadott, ezért is fordultam ide, hátha a tapasztaltabbaknak van valami ötlete. A konfigszavas beállításon mit értesz?
Mutasd meg a kódodat, amivel nullát olvas mindig.
Mégiscsak valami hardverhiba lesz. A felhúzó ellenállás dacára földközeli potenciálon van a láb.
Ha kiveszem a pic-et, minden rendben. Tehát maga pic húzza le a szintet. Már az egész progit kiheréltem de így sem jó.
void main (void) { // UP_INIT(); // LCD_INIT(); // RESET_DQ(); TRISA=1; TRISB=0; ADCON1=0x0F; CMCON=0b00000111; while(1) { if (PORTAbits.RA1 == 1) {LATBbits.LATB3=1;} else {LATBbits.LATB3=0;}
TRISA=1, vagyis kimenetté állítottad az RA1 lábat.
Üdv!
Valaki foglalkozott már a microchip MCP79410-es I2C buszos RTC IC-jével? Lábkiosztása olyan mint a PCF8563, Más a címe, és van benne battery switchover,de amúgy egész egyformák. A gondom, hogy nem tudom elindítani az oszcillátorát: Azt írja az adatlap,hogy a 0x00 regiszter, ami a másodperc regiszter is (BCD-be), a 7.bit az ST (azaz Start),hogy 1-re állítom elindul a számolás. Visszaolvasom a regisztertartalmakat, ez egyesen is van ,de nem indul el... Lenne valakinek valami ötlete? Köszi előre is!
S valóban. Vélhetőleg félreértelmeztem egy másik programot. Abban az állt hogy: TRISA=0; kommentben meg utánaírva hogy ez megfelel a TRISA=0x00-val vagy a 0b00000000-vel. Ez így is van de akkor ezek szerint a TRISA=1 nem egyenlő a TRISA=0b11111111-al.
Viszont a helyén rendesen írtam és ennek dacára sem működik. void RESET_DQ (void) { TRISB=0X00; LATBbits.LATB3=0; TRISAbits.TRISA1=0; LATAbits.LATA1=0; delayus(480); ADCON0bits.ADON=0; ADCON1=0x0F; TRISAbits.TRISA1=1; delayus(50); if (LATAbits.LATA1 ==0) {LATBbits.LATB3=1; } Hiába húzom földre a B3 mindig aktív
Olvasas nem a LAT-bol tortenik, az irasi puffer. Azt csak akkor erdemes hasznalni, ha irod a portot, de egy kulso cucc elhuzhatja a PORT tenyleges erteket.
Szoval a PORT-ot olvasd.
Hálás köszönet! ELindult!
Idézet: Hát persze, hogy nem!„ezek szerint a TRISA=1 nem egyenlő a TRISA=0b11111111-al.” TRISA=0 megfelel TRISA=0b00000000-nek TRISA=1 megfelel TRISA=0b00000001-nek TRISA=2 megfelel TRISA=0b00000020-nek .... TRISA=255 megfelel TRISA=0b11111111-nek (azaz 0xFF) De a számtan órát ne itt tartsuk!
Es akkor meg nem beszeltunk a root-rol, amivel (legalabbis assemblyben) allatiakat szivtam. Beirtam, hogy 10, de a root hexa volt es ez csak hosszas hajtepes es koromragas utan lett egyertelmu
Azota nem keverem. Csak tisztan hexa. 2A eves vagyok Am ne vezessuk felre lelkes, ifju baratunkat, legyen a 'TRISA=2 megfelel TRISA=0b00000010'
Ez jó! Én 0b00101011
Icserny mester viszont bevezette a kettes számrendszerbe a 2-es számot is!
Sziasztok!
Egy PIC16F877A-t használok Hi-tech C fordítóval. Elég rejtélyes dolgokat produkál: Bizonyos esetekben ha bekapcsolom, akkor teljesen jól működik (LCD-t hajt meg és hőmérsékletet szabályoz/időt mér). Néha viszont amikor bekapcsolom, akkor elkezdi ész nélkül pörgetni a változókat. Pl. az óra, perc, mp változók folyamatosan pörögnek felfelé (ezt ugye látom az LCD-n is). Mi a fenétől lehet ez? -Kontakt hibákat átnéztem, elvileg nincs gond. -A program elvileg oké, meg néha ugye lefut normálisan minden. -Az oszcillátor oké, amikor működik, akkor jól mér időt is Talán a megszakítások lekezelésével lehet gond? Vagy lehet, hogy túl sok a függvényem? Figyelmeztet a fordító "hardware stack overflow"-ra. Esetleg "haldoklik" már a proci? Köszi előre is a válaszokat!
Az a hardware stack overflow mindenképpen probléma. Át kell szervezni a programot, hogy ne legyen annyi egymásba ágyazódó függvényhívás. Pl. rövid függvény makróvá alakíthatsz, hogy inkább építse be a kódba hívás helyett. Nem a függvények száma a probléma, hanem az egymásba ágyazódásuk.
Szemtelen! Viszont én már többször kaptam ajándékot!
Idézet: „"hardware stack overflow"” Ez nagy baj, ez az ok... Idézet: „Icserny mester viszont bevezette a kettes számrendszerbe a 2-es számot is!” Miert, nem ezert hivjak 2-es szamrendszernek? Amugy azt az osregi viccet biztosan ismered, hogy miert unnepli a programozo oktober 31-en a Karacsonyt?
Én viszont nem ismerem, és már nagyon felcsigáztál vele, mert vagy egy órája nézem a fórumot, hátha válaszolsz rá...
Szóval miért?
Szerintem okt31 = dec25.
Az elso oktalis (8-as szrsz), a masodik decimalis.
Sziasztok!
A problémám a következő: 16f628A-ról van szó és annak a PORTA,4 lábáról. Kimenetként van beállítva és a CMCON-ba 0x07-et írtam. Ezek után szerintem "normálisan" kimenetkánt kellene viselkedni, pedig bármit próbálok, mindig 0 van rajt. Egyébkánt az egész PORTA kimenet és azok rendesen működnek. Próbáltam azt is, hogy semmi más nem volt programban, mint, hogy kiírattam minkét PORT-ra 0xFF-et, de akkor is 4-es lábon 0 volt. Megjegyezném még, hogy szimulátorban megfelelően működik, csak gyakorlatban rendetlenkedik. Mi lehet a probléma? Előre köszi!
Én is törtem a fejem, de erre nem jöttem rá! Gratulálok, ha erre magadtól jöttél rá!
Ugye az adatlap az sokat segít(33.oldal), bár ezt "mi" már csuklóból vágjuk.
Nos a PORTA,4 nyitott drain kimenetű(Ha tranyó lenne ott, akkor nyitott kollektornak nevezhetnénk, ha ez többet mond neked.). Tehát mi a teendő ilyen esetben? (Aki elárulja, kap egy feketepontot! )
Ezer hála és köszönet. Természetesen néztem én is az adatlapot,de ezt nem vettem észre.
Kösz mégegyszer!
Szívesen! Azért, még ha természetes is, kérlek válaszolj, mi a megoldás!
Jó Tápra kell húzni egy ellenállással. Nagyságrendileg 10K-val.
A C18 fordítónál #error "szöveg" direktívával lehet hibaüzenetet kiíratni, fatális hibák esetén. Tudtok-e olyan módszert, amivel figyelmeztető kiírást lehet produkálni fordításkor (ami nem állítja le a fordítást)?
A C30-nál van #warning direktiva is, a C18-nál azonban nem találtam hasonló lehetőséget.
Köszi! Annyit tennék hozzá, hogy ha nem elég gyors, vagy bizonytalan lenne a jelátvitel, akkor akár 1k-ig, sőt 470ohm-ig is le lehet menni. Persze ilyenkor a fogyasztás is nő, ha valahol ez számít.
|
Bejelentkezés
Hirdetés |