Fórum témák
» Több friss téma |
Fórum
Megérkezett a legújabb verziós, címben megnevezett program AVR-ekhez!
Összeillesztés: WinRAR, vagy hasonló kaliberű tömörítő-programmal
Elméletileg hozzá sem kellene nyúlnod a TRISC regiszterhez, mivel reset után automatikusan bemenetként funkcionálnak a portok. Ekkor a TRISC értéke %11111111.
Ha mégis be akarod állítani: TRISC:=%11111111; TRISC:=255; // ugyanaz, csak decimálisan illetve, ha figyelembe veszed az IIC vonalakat, akkor a 4-es bit legyen 0, de az IIC_init függvény úgyis beállítja ezt. TRISC:=%11101111; Ennek lényege az, hogy miután az IIC_init-et meghívtad, már ne változtass a TRISC regiszter 4-es bitjén. A TRISC.3 bitet pedig a többi IIC függvény állítja be függően az adatiránytól.
Sziasztok
Egy olyan kérdéssel fordulok hozzátok hogy mikropascal-ban ha PIC16f877-re külső EEpromot teszek (RC.3, RC.4) a többi RC lábat digitális bementként akarom használni hogy kell megadni a TRISC utasítást. Esetleg mit kell még beállítani hogy működjön az EEprom is és a bemenetek is.
Címben megnevezett programhoz tartozó angol nyelvű leírások csatolva...!
Kitömörítés: WinRAR, vagy hasonló kaliberű tömörítő-programmal...
Ha nem a RA portokra akarok digitális bemenetet csinálni 16F877-re hanem pl: RC-re akkor gondolom nem kell "ADCON1:=6" utasítás, vagy ott is kell?
Bocs ha kicsit hülyeségeket kérdezek, de szertném megtanulni, nem tudom ezeket a PIC adatlapjában meglehet találni mikor mit kell csinálni?
Nem, mivel a 16F877 rendelkezik A/D konverter perifériával, így ott azt kell kikapcsolni az ADCON1:=6; utasítással.
Köszönöm a segítséget a CMCON:=0x07; beírása után már működik is a program!
Hiába... egy éve már AVR-el játszom...
Köszi a javítást! Üdv!
Azzal az utasítással, hogy trisa:=1; decimálisan írtuk be az értéket a regiszerbe. Ez megfelel 0x01-nek vagy 0000 0001-nek! Értelemszerűen, mivel nyolcbites regiszterről van szó, ezért deximálisan a legnagyobb kiküldhető érték 255(d)=1111 1111(b)=FF(h). Vagyis minden érték, amit nem definiálunk, hogy milyen számrendszerben van, mindig decimálisként lesz kezelve! Ez minden "normális" fodítónál így van.
Idézet: „ADCON0 := 0x07;” Helyesen: CMCON:=0x07; Vagyis, ahhoz, hogy bemenetként működjön a PORTA.0, ahhoz ki kell kapcsolni a komparátorokat a fenti utasítással.
Ok egy kicsit tényleg sántít, arra akartam rámutatni, hogy egy 8bites regiszternek adott értéket 1 bittel (csak egy kicsit furcsán jött ki
).Viszont az F628 tartalmaz komparátort az A porton (mint ahogy arra gozi kollega is utalt) Az ADCON0 regiszterben lehet kikapcsolni, ha jól emlékszem az alsó 3 bit aktív állapotában van kikapcsolva. ADCON0 := 0x07;
Azt hiszem, ez talán működni fog
A legújabb mikroPascalhoz(6.0.0.2) lenne szükségem gyógyításra, ha valaki tudna segíteni.
A mikropascal nem adott ki hibát a "trisa:=1;" utasításra hiba nélkül fordította, a pic tipusát igaz nem írtam mivel ezt egy menübe kell beállítani, egyébként 16F628-ról van szó.
A kimenetet szépen tudom kapcsolgatni ahogy akarom, csak adatot nem tudok beolvasni vele. Most ismerkedem a mikropascal-al, és próbálok rájönni hogy is működik. Sajnos most az elején már elakadtam egy ilyen egyszerű dolognál, mint az adat beolvasás valamelyik lábról.
A MikroPascal egyébként ezt elfogadja?
trisa:=1; trisb:=0; Mert számomra elég érdekesnek tűnik, hogy egy egész bájtnyi értéket így "definiálunk"...persze, ha ezzel nincs baja a fordítónak, akkor nincsen gáz... Azért kérdezem, mert nem tudom, hogy ez a megadás így helyes-e jelen programnyelv esetében Idézet: „A Te beállításodnál a csak porta 0. bitje bemenet, illetve csak a portb 0. bitje kimenet.” Ezt gondold át mégegyszer...
Itt inkább az lesz a probléma, hogy nem gondoltatok a többi periféria beállítására. Mivel a PIC típusa nincs leírva ezért általánosságban írom le a dolgokat:
16F-eknél a legtöbbször hiba a komparátor kikapcsolásának elmulasztása (CMCON regiszter). 18F-eknél pedig a portokat át kell kapcsolni digitálissá (ADCON1 regiszter).
Ok
Megpróbálom remélem működni fog. Sajnos most már vége a munkaidőmnek, most már nem tudom kipróbálni. Ha kipróbálom jelezni fogom hogy működik vagy nem. Köszi a segítséget
Akkor próbáld nagy betűkkel. Már vagy egy éve nem foglalkoztam pascal nyelvel, és ezzel a programmal sem, de megkerestem egy régebbi programom, és ott nagybetüket használtam.
TRISA TRISB PORTA PORTB stb....
Köszönöm a választ, de sajnos még most se akarja azt csinálni amit én szeretnék.
Úgy néz ki nem akarja olvasni a portot, már póbáltam másikra tenni de ott se olvas.
Ezt hexába add meg:
trisa:=1; trisb:=0; helyesen: trisa:=0xFF; trisb:=0x00; A Te beállításodnál a csak porta 0. bitje bemenet, illetve csak a portb 0. bitje kimenet.
Sziasztok
Nem akartam új topikot nyitni ezért ide írok. Most kezdtem el foglalkozni mikropascal-al, ebbe kérném a segítséget. Nem tudom hogy tudok olvasni bemenetet. Írtam egy ilyet de nem akar működni program pp; begin trisa:=1; trisb:=0; repeat begin if porta.0=1 then PORTB := 128 else portb:=0; end; until 0 = 1; end. az volt a tervem hogy az RA.0 portról olvasok ha az értéke 1 akkor az RB.7 -et bekapcsolja, de nem akar működni.
Ha megnézed a rajzot, akkor láthatod, hogy a pwm simán megoldható, mint ahogy meg is van benne oldva. Ez egy hobby cnc vezérlő kapcsolási rajza, ami léptetőmotorokat használ és pwm-ben hajtja őket.
A féllépés is megoldahtó.
de gondolom azzal nem oldható meg a féllépés, meg a pwm?
|
Bejelentkezés
Hirdetés |


).
