Fórum témák
» Több friss téma |
Helo.Lehet,hogy nem tudja kezelni a 16F628-at?No device found,és a listában sem találom.
Kezdjük az elején, mert sok a bizonytalan információ. Milyen panelbe ültetted a kontrollert? Melyik programmal próbálkozol? Az előbb még megismerte a PIC-et (valami), de már nem. Hogyan van összekötve a PIC és a PICKit2?
Hali!
Ezen táblázat szerint teljesen rossz adatot küldesz ki neki. L1:L0 legyen 01 ez passzol a 8bit-es interfészhez. LSBF-el pedig a bit kiléptetés irányát határozod meg MSB First, Vagy LSB First. Nem pedig a kiolvasni kívánt érték alsó, vagy felső bájtját. Valahogy így kellene:
A hozzászólás módosítva: Feb 17, 2019
Bocsánat L1:L0-t 11-re kellene állítani (16bit), így lesz meg a 2 teljes bájtod az olvasáshoz. 8bit-es módban eldobja a maradék 4bit-et.
A vezérlő bájt után kell a várakozás, amíg elvégzi a konveziót az IC.
Ja igen, az elmaradt. Vagy az EOC lábat kell figyelni. Én be szoktam rakni egy kis delayt a CS-hez is kezdetekben. Az adatlap szerint is van 1.425us Setup time, mielőtt beléptetné az órajellel az adatot.
Mivel a hexet nem én írtam csak a PICkit programot használnám ahogy mutattad import,írás.Csakhogy automatikusan nem ismerte meg a pic-et,próbáltam megkeresni de nem is ajánlotta föl ezt a típust.Teljesen véletlen valahol találtam manuális keresést azt kipipálva már megtalálta az ic-t,majd import,írás és képen látható az eredmény.Ez egy nixie óra lenne aminek a paneljét itt vettem a HE-n.
Az a panel nem alkalmas annak a kontrollernek az írásához. 4, 14 és 20 lábú PIC-et lehet vele programozni, teljesen máshol vannak az adatvezetékek, mint ahova a 18 lábú kéri. Mutattam már egy képet mit, mivel és hogyan kell összekötni, aszerint cselekedj pl. egy dugdosós próbapanelen.
Köszönöm mindkettőtöknek a segítségeket.
Valami még nem kerek, próbáltam ez szerint amit írtok (ha jól értem)
A második byte beolvasásába elakad ha kitörlöm az egyik "spiRead();" sort akkor az első byte-t megvan de ha mindkettő sor bent van akkor nem lép tovább a programom. EOC-t figyelni már nem tudom nincs több szabad port a PIC-en. Egyenlőre itt tartok.
Egyszer már belefutottam ebbe csak elfelejtettem.Gyártottam is hozzá másik panelkát és azzal úgy néz ki föl is szaladt a progi.Kipróbálni ma már nem tudom.Nagyon köszönöm a segítségedet.
Próbáld így:
Megszűnik az órajel szkóppal mérve a második kiolvasásnál, de közben kipróbálom amit írtál.
Az utolsó verzióban már az első byte sem érkezik meg
Áá! Nem túl jó az SPI kezelés, ki kell léptetned egy üres byte-ot, hogy venni tudd az adatot.
Csak vár, de a bemeneti puffer sosem lesz tele így. Az első azért jó, mert a beírt adat kiléptet valamit, de az sem a mért érték lesz, mert az akkor még nem került bele.
Azon is túlestem már de az sem jó.
Ha a két olvasás között kiléptetek 8db 0 bitet akkor az eredményem a második olvasáskor mindig 0 lesz ha viszont kiadom neki az első (0b00001100) adatot akkor ugyan az lesz az eredmény mindkét változóban tehát az 1. byte.
Esetleg így. Ennek így elvileg mindig az előző mérést kellene visszaadnia.
Ezt is kipróbáltam már korábban, ha az AD-nek kiküldöm a nullákat a két olvasás közben akkor mindkét mérés csak 0 byte-os változókat eredményez..
Akkor passz, mert elvileg így jónak kellene lennie. Talán másik SPI beállítással jó lesz.
Idézet: „The next falling edge of I/O CLOCK drives DATA OUT to the logic level corresponding to the next MSB/LSB, and the remaining bits are shifted out in order. ” Ha jó a matekom, akkor neked ez kell: CKP = 0 CKE = 1 SMP = 1
Azt hiszem jó lett a matek, Megérkezett a második byte.
Már csak egy kérdés: A második byte-nak csak az első 4 bitje lényeges ezért hogy azt kapjam meg el kell toljam balra 12bitet unsigned int esetén vagy 4 bitet ha char változóba van? Így 0 bitek kerülnek a felesleges 4 bit és a maradék eltolt üres helyre.
Ha biztosan 0 szeretnél látni valahol akkor inkább AND eld össze egy olyan változóval amiben 0 szerepel az adott bit helyeken.
Alsó 4 legyen biztosan 0 akkor pl xF0 (11110000)b Változo = Valtozo AND xF0 Ha a felső 4 bit biztos 0 legyen akkor meg x0F el AND (00001111)b Valtozo = Valtozo AND xF0 Minden paros bit 0 legyen akkor meg xAA kell AND elni ... (1010 1010)b Ekkor biztos 0 lesz ott attól függetlenül , hogy mi történt vele előtte.
Válaszd az LSB First opciót, úgy nem kell majd semmit tologatni.
Sziasztok!
A gond a következő: pic18f46k80 piccel mérném DS18B20 hőmérőszenzor hőmérsékletét. A mikroc onewire függvényeit használnám, de nem hajlandó kommunikálni. A példaprogram pic16f887-íródott. Lehetséges, hogy a 18f46k80-at nem tudja kezelni a mikroc onewire függvényei? A hozzászólás módosítva: Feb 19, 2019
Nem valószínű. Valami beállítási hiba lesz. órajel, IO-pin stb.
Szerk. Leggyakoribb hiba. Analóg funkciókat kikapcsoltad? A hozzászólás módosítva: Feb 19, 2019
Ezt több helyen is láttam már alkalmazni viszont nem értem.
Jelenleg az van, hogy van egy változóban (char H) 8 bitem és van egy másik változóban (char L) 8 bitem aminek csak az első négy bitje kell és mindezt szeretném egy (unsigned int LH) változóban látni. Lényeg hogy egyszerű legyen a 12bites DAC értékeit szeretném egy változóban tudni tehát a 4095 értéket. Viszont ez jelenleg két részben van...első 8 bit és a maradék 4 + szemét..
Könnyen értelmezhetően:
A korábban írt kód
ha a shiftelések értékeit összeadod, látható hogy ezzel egyenértékű. fent: high 8 balra majd 4 jobbra, low 4 jobbra lent: high 4 balra, low 4 jobbra A hozzászólás módosítva: Feb 19, 2019
|
Bejelentkezés
Hirdetés |