Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Számos projekt létezik az Interneten PIC mikrovezérlő és SD/MMSC kártya illesztésére. Könnyebb az élet, ha 3,3 V-os mikrovezérlőt választatsz. Ha a fájlrendszert is kezelni kell, akkor a FATFS vagy méginkább a PETIT FATFS használata ajánlott. Bővebben: Link
Az USB pendrive kezelése USB host képességű mikrovezérlőt (PIC24F, PIC32) és USB + fájlkezelésre alkalmas szoftvert igényel. Egyébként nem a "mikrovezérlőre küldöd" róluk az adatot, hanem a mikrovezérlő mint intelligens eszköz, leolvassa róluk az adatot (tehát nemcsak bemeneti, hanem kimeneti láb is kell). A memóriakártya SPI slave eszközként viselkedik, tehát a PIC lesz az SPI master.
Sziasztok!
Egy órát szeretnék összehozni, nagyjából már sikerült, de mivel egy kicsi gondom van az időzítéssel, ezért át szeretnék térni a Timer1 használatára... Namost, hogy tudom azt megcsinálni, (16 v. 20 MHz, inkább 20) hogy a Timer1 1 másodpercenként megszakítást végezzen? (HI-TECH C)? Valahol olvastam a megszakításról, hogy ez lehetséges, és hogy hogy lehet egy függvényhez hozzárendelni a megszakítást... (Azt hiszem) Ennek még utána nézek, de a T1-es témákban csak tapogatni tudok a sötétben... Tehát ebben kérném segítségeteket... Köszönöm!
A megszakítást megtaláltam:
És akkor még be kell állítani az INTCON-t, hogy a timer túlcsordulásra jelezzen... [szerk] bocsánat javítok T0
Adatlapot nézd át, hogyan működnek a Timerek. Én inkább a Timer2-t javasolnám, mert annál a PR2 regiszterbe meg lehet adni, hogy meddig számoljon, illetve lehet adni neki utóosztást. Pl. adsz neki 1:16 arányú előosztást, PR2-be 250-et írsz, és adsz egy 1:10 arányú utóosztást, akkor 20MHz-es órajelről (ha jól számoltam) pontosan 8ms időnként billen be a TMR2IF bit. Kell még egy szoftveres osztó, amivel tovább nyújtod az időszakot 1 másodpercre.
Amúgy a Timerek és a megszakítások nincsenek mereven egymáshoz kötve, nem muszáj a Timert megszakításból kezelni. Azt #int_EXT nem a külső megszakítást jelenti véletlenül? Bár lehet, hogy így is jól működne a firmware, de ez csak azért, mert nem használod a külső megszakítást. Neked inkább #int_TIMER2 vagy valami ilyesmi kellene szerintem.
Csak egy gyors elméleti kérdésem lenne:
A/D-vel szeretnék mintákat venni és eltárolni majd visszaolvasni. Viszont a PIC adatmemóriájába ezres nagyságrendű mintát tudok eltárolni, de hogyan lehet mondjuk több százezer vagy akár egymillió körüli mintát tárolni? Hogyan szokták ezt megoldani, milyen memóriával? Nem kell kikapcsolás után emlékeznie rájuk, szóval nem EEPROM-ra gondolok.
Szerintem valami ilyesmi jó lehet neked: http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en539039
Szia!
- Külső statikus RAM, dinamikus RAM, stb. Van 18F -ben is olyan, amihez külső memória is illeszthető. - Streaming paralell port -ra lehet memóriát illszteni. - 24F, 30F kontrollerek között van 8 - 64 K RAM -os példány is. - Ekkora memóriaigényű feladathoz nem feltétlenül a PIC a legjobb választás...
Szia!
Idézet: „Van 18F -ben is olyan, amihez külső memória is illeszthető.” Hogyan keressek ilyen 18F-ekre rá? Jól gondolom hogy ez nem sima SPI buszos memória?
Lehet sima paralel SRAM hasznalataval is csinalni ilyet. Peldakat talasz a 8085 (8051) memoria kezeleseknel. Ott van egy 8 bites adatbusz, ami lehet a cimbusz also fele. Egy masik port adja a cimbusz felso felet. 74573 regiszterekkel lehet tarolni a cim also felet. Esetleg 2 74573 egy porton eloallithato a komplett cimtartomanyt egy hagyomanyos SRAM-nak. SRAM van sok meretben, es nem nehez a kezelese.
Köszönöm de igazából csak kíváncsi voltam hogyan, mivel lehet ennyi adatot eltárolni. Ma kipróbáltam a PICkit2 logikai analizátorát de sajnos folyton lefagy. Rögtön elkezdett járni az agyam hogy hogyan lehetne építeni egy PC nélküli logikai analizátort és ekkor jött a gondolat hogy vajon hogyan oldják ezt meg az okosak pl egy tárolós digit szkópnál vagy logikai analizátornál.
A nagy sebességhez nem mikrokontroller kell, hanem FPGA. OpenBench Logic Sniffer
Nem fagy le, csak a magas szintet nem érzékeli rendesen. A CH1 és Ch2 -n a 4k7 lehúzásokat figyelembe vetted? A CH3 -at használd triggernek. Esetleg alkalmazhatod a buffert, amit a furatszerelt klónnál leírtam.
Hűű, ettől én még nagyon-nagyon messze vagyok...
Ch3-at használom bemenetnek. Azt szeretném látni hogy a PIC mit küld az RF modulnak (RTFQ1), de érdekes módon ha rádugom a PICkit2-t akkor semmi nem történik. Bekötöttem a VDD-t is, azóta már megkapja az adatokat az RF modul, de a PICkit2 Logic Tool lefagy sajnos. (Onnan tudom hogy mégis kiadja a PIC az adatot hogy van egy LED is rákötve az RF modullal párhuzamosan és így az felvillan egy pillanatra. Ha nem kötöm be a PICkit2 VDD-jét akkor még fel se villan.)
Igazából elég sebességfüggő, hogy mit kell használni. Nagy sebességeknél(1...100MSPS) párhuzamos gyors SRAM+CPLD,FPGA, lassabb sebességnél(1...100kSPS) a PIC+SPI SRAM is jó. Már 1kSPS-el is igen jó műszer építhető, ami még nem digit szkóp, de nagyon hasznos. Itt még SRAM sem kell, mert pl. USB-n át lehet küldeni folyamatosan az adatokat mentésre. Ha PC függetlenül akarnád hosszú távon menteni az adatokat ilyen kis sebeséggel, akkor SD kártya a megoldás.
***
És a szoftveres utó-osztást úgy csinálom meg, hogy minden megszakításkor növelek egy változót, és ha az eléri a 125-öt, akkor nullázom, és egy másik változót (secs) növelem, és ezzel megvan az 1 mp... nem is rossz ötlet... Köszönöm! * Kérhetem a borzalmas aham mellőzését ?
Idézet: A Timer1 használatára akkor érdemes áttérni, ha az átlagos kvarcoknál pontosabb/stabilabb 32 kHz-es órakvarcot használsz hozzá (a Timer1 rendelkezik egy saját oszcillátorral is). „Egy órát szeretnék összehozni, nagyjából már sikerült, de mivel egy kicsi gondom van az időzítéssel, ezért át szeretnék térni a Timer1 használatára...”
Még valamit nem értek igazán, hogy a "setup_timer_2"-nél az utolsó 2 argumentum mire való?
Most PIC18F14K22-ről van szó. INT2 megszakítást szeretnék generáltatni, de hiába adok H szintet az INT2 lábra, nem lép be a megszakításba. A megszakítás jól van beállítva mert ha a Watch ablakban az INT2IF bitet 1-be állítom akkor belép a megszakításba.
Megmértem, H szint van az INT2 lábon (a levegőben van, semmi sincs rákötve). Gondoltam a felhúzó-ellenállás miatt de kikapcsoltam és továbbra is H szint mérhető rajta. Szóval szerintem valamiért nincs jól konfigurálva a láb vagy valamilyen periféria be van rá kapcsolva. Én csupán ennyit tettem a lábbal:
Megnéztem:
CM1CON0, C1ON -> nulla tehát a komparátor kikapcsolva CM1CON0, C1OE -> ez is nulla úgyhogy C1 komparátorkimenet tiltva SRCON0, SRLEN -> szintén nulla, így SR lach is tiltva SRCON0, SRQEN -> nulla, lach Q kimenete nincs rákapcsolva az RA2 lábra Más funkció nincs a lábon ami kimenő jelet tehetne rá.
Szia!
Alapértelmezetten a Reset után be vannak kapcsolva a porton levő felhúzó ellenállások. A WPUA regiszter WPUA2 bitjének törlésével lehet kikapcsolni az RA2-n levő felhúzó ellenállást.
Gondoltam erre is és szerintem igen, annak kellene lennie. De akkor meg nem szabadna H szintnek lennie rajta. Viszont nem találtam a PIC14K22 adatlapjában leírást hogy hogyan tudom a lábakat beállítani analógra/digitálisra. Más típusoknál, pl a legutóbb általam használt PIC18F25K80-ban az ANCON-regiszterek vannak erre a célra. Ebben viszont nincs ilyen.
Watch ablakban kikapcsoltam, mégis ott a H szint. Szerintem az lehet a gond hogy analóg a láb, de egyszerűen nem találom mely regiszterben lehet ezt beállítani.
Szerk.: Megvan: ANSEL! Miért nem lehetett az A/D fejezetéhez írni... Na mindjárt kipróbálom.
Akkor az ANSEL regiszter ANS2 bitjét kell törölnöd, hogy digitális legyen a portláb.
Persze, az ANSEL regiszter ANS2 bitjét kellett 0-ra állítani, így mindjárt más.
Köszönöm a segítséget!
A régebbi pl PIC18F2423-nál sokkal primitívebben lehetett beállítani az analóg-digitális lábak eloszlását. Például vagy AN0-AN2 analóg és AN3-AN11 digitális vagy AN0-AN5 analóg és AN6-AN11 digitális stb.
Az újabbaknál meg szerencsére már lábanként be lehet állítani hogy mi mi legyen. Jó ez az irány, kitalálhatnák egyszer azt is hogy minden funkció, minden periféria minden kivezetése egyenként beállítható lenne hogy mely fizikai lábra kapcsolódjon.
Ez elvileg megoldható, de biztosan sebesség rovására menne.
Sziasztok!
18F-es PIC-eknél (konkrétan 18F1320) okozhat bajt MPLAB-ban ASM nyelven, ha nem törődök a bankokkal?
Nem, mivel csak Bank0 területen van RAM és az SFR területhez nem kell bankolni.
|
Bejelentkezés
Hirdetés |