Fórum témák
» Több friss téma |
Hali!
Köszi az infót, a buffer törlésére milyen lehetőség van? Üdv.
Keresgéltem visszafelé,de nem találtam.Van úgy hogy nem látni a fáktól az erdőt.
Szia!
- A vételi buffereket csak induláskor, vagy menet közbeni újrakezdéskor kell törölni. Addig kell olvasni az RCREG -ből ill. a getsUSBUSATR() függvénnyel, amig a RCIF jelez ill. a visszaadott karakterek száma 0 lesz. Az ürítés alatt vett karaktereket el lehet dobni. - Egy másik megoldás, ha egy saját buffert hozol létre. A vételi rutinok ebbe a saját bufferbe teszik a vett karaktereket. Akkor törlöd a tartalmát, amikor kell. - További lehetőség, hogy egy protokoll szerinti táviratokat küldesz, fogadsz. a táviratok felépítését az avó és a vevő oldal is ismeri. A vevő az adatok vétele kezdetén egy távirat kezdetet vár, ha megjött veszi a távirat további részét, a végét felismeri. Ekkor újra a távirat kezdetet várja. Az esetlegesen vett de nem távirat kezdetéhez tartozó adatokat eldobálja. Ha a távitat értelmezése során hibára fut a vevő, megintcsak a távirat kezdetét várja. - Adási puffer a programozó kezében van, akkor törli, amikor óhajtja. Idézet: „Ezzel a mintával az MPLAB SIM nulláza a PC felső bájtját, és oda ugrik, ami az alsó bájtban van.” Egy 8 bites rendszerben max 8 bitet tudsz egyszerre kezelni, ezert a tobbi bitet mashonnan kell feltolteni. A Microchip ezt ugy oldotta meg, hogy egy PCLATH es PCLATU nevu regiszterekben tarolja a tobbi bitet, de azok csak akkor toltodnek at a PCH es PCU reszekre, mikor a PCL-t irod (hisz ha korabban tenned, akkor a program szal azonnal elvandorolna Gyorbol Kiskunfelegyhazara...) Tehat elobb a PCLATU : PCLATH -t kell feltolteni, majd mikor irod a PCL-t, akkor a PCU : PCH : PCL teljes tartalma fog valtozni. Ezt szerintem az adatlap targyalja, de az a minta amit emlegetsz az elegge leegyszerusitett es nem is mukodik ahogy arra mar rajottel, mivel sem a PCLAU : PCLAH -val nem foglalkozik, sem pedig a laphatar kezelessel. Ha teljesen korrektul szeretned megvalositani, akkor igy kellene megcsinalnod (bar az a pelda 18F-re van irva, kis modositassal 12F/16F-en is mukodik): Bővebben: Link
Hali!
Köszönöm, azt hiszem értem. Viszont azon (biztos egyszerű) dolgot, hogyan lehet törölni a létrehozott saját buffert, nem tudom. Ehhez kérek segítséget. Üdv.
Szia!
Minek az egyes adatokat törölgetni?
Helló!
Most foglalkozom először 18-as picel, egész pontosan PIC18F1320-al, és nem tudom írni az i/o-kat! Nem tudok semmit kitenni a lábakra, és így nem megy az LCD-sem róla. Valaki meg tudná nézni? Illetve olvastam erről a LAT-regiszterről, tehát, ha olvasom a PORTA-t mondjuk akkor LATA-t kell helyette, de írni tudom közvetlen? Vagy hogy van ez? Köszi előre is!
Hello! Megmértem a feszültséget a VUSB kivezetés és a VSS pontok között, és nincs feszültség, (itt kellene 3,3V nak lennie?) a kondi pedig ott van és nem látszik rajta sérülés. Zárlatok nincsenek, egyébként, és az oszci jó.
Szia!
Az I/O lábaknál ha írni akarsz a kimenetre, akkor a LATx-re kell írni (pl.: BSF LATB,2), ha pedig a portlábat akarod beolvasni, akkor PORTx regisztert kell olvasni (pl.: MOVF PORTA,W). Itt részletesen le van írva mi-hogy van: Az I/O portok vezérlő regiszterei. A "A PORTx regiszterek" alatti szövegben van a lényegi rész.
Szia!
Ekkora sebességnél nem számít, hogy a LAT vagy a PORT regisztert írjuk... Egy helyen nem mindegy:
Itt sem az a baj, hogy egy port különböző bitjét írjuk, hanem az, hogy nem tartod be az adatelőkészítési időt. Idézet: „Data set-up time tDSW 195”
Megnéztem, átírtam, hogy minden írás latx-re minden olvasás portx-re menjen, és a PIC-et is kicseréltem egy másik ugyan ilyenre hátha az a rossz, de semmi.
Talán a konfigurációm rossz.
Az MCLR láb fel van húzva 10k ohmmal tápfeszültségre?
Az alul/felülcsordulási reset (STVR) be van kapcsolva, ha nincs rá szüksség, akkor kapcsold ki! Szerk.: az RA4 Open Drain kimenet, vagyis nem tud tápfeszültséget kiadni, csak testre tudja lehúzni a kimenetet!
igen fel van húzva, ra4-re raktam szintén 10kohmot a vdd-re, hogy a + is megjelenjen, stvr-t kikapcsoltam, de sajnos még mindig nem megy, raktam egy LED-et ra0-ra, és az inicializálás után be kapcsolom, de nem világít.
Kapcsold ki még a PWRT-t és a BOR-t is.
Ha most ismerkedsz a 18F-es PIC-ekkel, akkor az elején könnyebb programokat csinálj, mert könnyű elveszni a rengetegben. Fel töltenéd a LED kapcsolós programot?
Kikapcsoltam, persze feltöltöm!
PIC-el 3 éve foglalkozom, csak eddig 16-osokkal, ez az 1. 18-asom, egy labortápnak lenne a kijelzője egyébként.
Nem jól konfigoltad az A/D-t.
Ezzel a kóddal az RA1-et állítottad analóg porttá, alatta pedig az ADCON0-ba az RA0 van beállítva analóggá. Szóval az ADCON0-ba ezt kell betölteni, ha az RA1-et akarod analóggá állítani:
Próbáltad az MPLAB SIM-et? Azzal elég jól le lehet szimulálni a programot lépésről lépésre.
Igen, azt tudom, 2 csatornán fog mérni, és ra0 és ra1 is analóg lesz, csak most a led-et ráraktam ra0-ra, azért állítottam vissza.
Néztem az MpLab SIM-et, és szerinte is működnek a lábak... Sajnos a valóságban nem kapcsol fel semmi.
Na de még ez sem megy rajta!
IDO MOVLW .255 MOVWF DeLAY1 IDO2 MOVLW .255 MOVWF DELAY2 IDO3 DECFSZ DELAY2,F GOTO IDO3 DECFSZ DELAY1,F GOTO IDO2 RETURN CIKLUS bsf lata,0 call ido bcf lata,0 call ido goto ciklus
Idézet: Igen. „Megmértem a feszültséget a VUSB kivezetés és a VSS pontok között, és nincs feszültség, (itt kellene 3,3V nak lennie?)”
De a LED az elején a LATA0-n van, ami egyben az analóg csatorna is, tehát ha az analóg csatorna van bekapcsolva, a LED nem fog világítani.
Elég nagy a program, ezt külső szemmel átbogarászni nagyon sok időbe telne.
visszakapcsoltam digitális kimenetre.
Nem is kértem, hogy az egészet nézd át, de nem is hiszem, hogy a progi rossz lenne, mert a szimulációban fut, csak olyan, mintha nem indulna el az oszcillátora. Már az elején nem csinál semmit.
de ez a progi sem megy:
Hali!
Köszi. A vételi buffert azért akarom törölni mert folyamatosan figyelem egy eszköz által küldött adatokat és azt szeretném elérni, ha az eszköz nem küld adatot a buffer is üres legyen. Mert a vett adatokat tovább küldöm a PC-nek és próbálom megfejteni a küldeményt. (az eredeti vevő meghibásodott és a kütyüt meg nem akarom eldobni) Üdv.
Nálam ez működik proteusban, bár nálam mivel megkülönbözteti a kis-nagybetűket az MPLAB, átírtam a regisztereket nagybetűsre.
Viszont szerintem szerencsésebb a kódban beállítani a konfigbiteket, mert az tuti ott lesz.
Sziasztok. Kezdésnek melyik mplab-ot ajánljátok? Múltkor írtátok itt a fórumon hogy a legújabb verzióinak ilyen-amolyan hibái vannak. Melyik az a verzió amelyikkel nincsenek olyan nagy gondok?
Proteusban nálam is, de az igazi PIC-en nem megy!
|
Bejelentkezés
Hirdetés |