Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1017 / 1319
(#) icserny válasza Poostmaster hozzászólására (») Aug 20, 2011 /
 
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.
(#) kiskacsa2009 hozzászólása Aug 21, 2011 /
 
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!
(#) kiskacsa2009 válasza kiskacsa2009 hozzászólására (») Aug 21, 2011 /
 
A megszakítást megtaláltam:
  1. #int_EXT
  2. void EXT_T1() {
  3.     [...]
  4. }

És akkor még be kell állítani az INTCON-t, hogy a timer túlcsordulásra jelezzen...

[szerk]
bocsánat javítok T0
(#) potyo válasza kiskacsa2009 hozzászólására (») Aug 21, 2011 /
 
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.
(#) Attila86 hozzászólása Aug 21, 2011 /
 
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.
(#) lidi válasza Attila86 hozzászólására (») Aug 21, 2011 /
 
(#) Hp41C válasza Attila86 hozzászólására (») Aug 21, 2011 /
 
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...
(#) Attila86 válasza Hp41C hozzászólására (») Aug 21, 2011 /
 
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?
(#) Hp41C válasza Attila86 hozzászólására (») Aug 21, 2011 /
 
18F97J60 - External memory Bus
(#) Attila86 válasza Hp41C hozzászólására (») Aug 21, 2011 /
 
Köszönöm!
(#) vilmosd válasza Attila86 hozzászólására (») Aug 21, 2011 /
 
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.
(#) Attila86 válasza vilmosd hozzászólására (») Aug 21, 2011 /
 
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.
(#) Hp41C válasza Attila86 hozzászólására (») Aug 21, 2011 /
 
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.
(#) Attila86 válasza Hp41C hozzászólására (») Aug 21, 2011 /
 
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.)
(#) watt válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
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.
(#) kiskacsa2009 válasza potyo hozzászólására (») Aug 22, 2011 /
 
***
É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 ?
(#) icserny válasza kiskacsa2009 hozzászólására (») Aug 22, 2011 /
 
Idézet:
„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...”
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).
(#) kiskacsa2009 válasza icserny hozzászólására (») Aug 22, 2011 /
 
Még valamit nem értek igazán, hogy a "setup_timer_2"-nél az utolsó 2 argumentum mire való?
(#) Attila86 hozzászólása Aug 22, 2011 /
 
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:
  1. bsf             TRISA,2         ;RA2 bemenet
(#) watt válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
Ez alapból nem A/D bemenet?
(#) Attila86 válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
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á.
(#) El_Pinyo válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
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.
(#) Attila86 válasza watt hozzászólására (») Aug 22, 2011 /
 
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.
(#) Attila86 válasza El_Pinyo hozzászólására (») Aug 22, 2011 /
 
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.
(#) El_Pinyo válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
Akkor az ANSEL regiszter ANS2 bitjét kell törölnöd, hogy digitális legyen a portláb.
(#) Attila86 válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
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!
(#) Attila86 hozzászólása Aug 22, 2011 /
 
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.
(#) watt válasza Attila86 hozzászólására (») Aug 22, 2011 /
 
Ez elvileg megoldható, de biztosan sebesség rovására menne.
(#) zenetom hozzászólása Aug 22, 2011 /
 
Sziasztok!
18F-es PIC-eknél (konkrétan 18F1320) okozhat bajt MPLAB-ban ASM nyelven, ha nem törődök a bankokkal?
(#) watt válasza zenetom hozzászólására (») Aug 22, 2011 /
 
Nem, mivel csak Bank0 területen van RAM és az SFR területhez nem kell bankolni.
Következő: »»   1017 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem