Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia! Szerintem valami beállítási probléma lesz. Ez a működés hibásnak tűnik, ahogy te is gondolod. Nézz bele az erratákba, hátha van valami erről!
Ott még nem tartok, hogy működjön. Csak az adatlap nézegetés szintjén vagyok...
A példám nem RS485 -re készült, hanem RS232 -re. Itt mehet a válasz, amikor már van belőle karakter. Full-duplex RS485 -re is jó. Egyébként egy teljes üzenet vétele után kerül csak sor a válasz összeállítására és a karakterek bufferbe pakolására. Így RS485 -re is jó lehet.
Két apró módosítással lehet még javítani: ISR: Ha most engedélyeztük az adást, két karakter is beírható közvetlenül egymás után (ha van kettő a bufferben). Beírás: Ha le volt tiltva az adás, csak a második karakter után (ha lesz kettő) engedélyezni a megszakítást. Szerintem csak bonyolítja a programot.
Van olyan DAC ami FRAME módban működik (pl. DAC8311) , de szinte az összes audio DAC is ezt a protokollt használja.
DAC8802: Mivel a cs felhúzása is lehet impulzus szerű, a FRAME mód használható lenne a felhúzására, probléma csak az, hogy ez az impulzus a szabvány szerint a keret elején van. Ez nálad azt jelenti, hogy akkor jut érvényre a kiküldött adat, mikor a következő adat küldése elindul. (Az FRMDLY értékét is valószínű 1-re kell állítani). Sajnos, ha nem működik le kell mondani a DMA átvitelről, marad a megszakításos megoldás.
Én is gondoltam arra, amit írtál és majdnem jó is. Az a baj, hogy frame módban, az órajel folyamatosan megy, a D/A pedig az utolsó x bitet veszi be, így sajnos nem, hogy később jön a felfutás
Viszont a DAC8311 akár jó is lehet első ránézésre. Köszi szépen! Egyébként, hogy tudsz rákeresni arra, hogy ilyen frame-es SPI-jal működjön?
Most néztem, a 16F887-hez mit szólsz? Azt tudom mikro C-ben programozni, meg az ára is jó.
16F887 : 40 láb, 8kword Program memória, 384 byte RAM, 256 byte EEProm: 510Ft+Áfa
16F1939: 40 láb, 16kword Program memória, 1k RAM, 256 byte EEProm: 560Ft+Áfa 18F46K20: 64kbyte Program memória, 3968 byte RAM, 256 byte EEProm: 630Ft+Áfa A hozzászólás módosítva: Máj 28, 2014
Idézet: „Egyébként, hogy tudsz rákeresni arra, hogy ilyen frame-es SPI-jal működjön?” Nem tudtam rákeresni, csak az első próba pont ilyet dobott ki.
Ha már a "jó ár" szóba került, csak az érdekesség és összehasonlítás miatt:
- Nuvoton NUC100 széria hasonló árfekvésben kapható, csak 32 bites, 50 MHz-es (és nem Fosc/4 az utasításciklus!), akár 128 kB flash és 16 K RAM, s a NUC120 vagy 140-ban USB is van. Nem utolsó szempont, hogy 3,3 V-on és 5 V-on is megy (egyszerűbb az illesztés). Ráadásul gyárilag belecsinált bootloadere is van (USB-n vagy soros porton). Bővebben: Link - Cypress akció: CY8C4245AXI-483 PSOC4 mikrovezérlő (44 láb, 32 bites, 48 Mhz, 32 kB flash, 4 kB RAM (át)programozható logikai és analóg áramkörökkel most 1 dollár (~230 Ft), ingyenes házhozszállítássa!!! Bővebben: Link Ebben sajnos, nincs bootloader, de elég jól dokumentált a programozása. Kellemes, hogy ez is megy 3,3 és 5 V-on is, és átprogramozható, hogy mi hol menjen ki. Van 28 lábú tokozásban is (SSOP, azaz 0,65 mm lábtávolsággal). Érdemes tehát körülnézni a nagyvilágban típusválasztással kapcsolatos keresgélések kapcsán. A hozzászólás módosítva: Máj 28, 2014
Idézet: Az "ikertestvére" (PIC18F46K22) megy 5V-ról is (VDD = 1,8 - 5,5 V). „18F46K20 ...csak ez már 3Voltos.”
Sziasztok!
Szenvedek a PK3-al. MPLAB 8.92, Debugger módban minden rendben. Átváltok Programmer módra és nem fut a kód, csak ritkán, pár reset le-fel után, de akkor jól. Aztán még pár reset és megint nem fut. (Beakad a magas priorítású megszakításba a soros küldés után, de elkad a CCP megszakítása is, nem tudom hol akad el, miután debugger módban nem csinálja.) Nincs ötletetek mi okozza? (18F87J94)
A másik probléma az RTCC elindítása. Nem jövök rá, miért nem elég, ha bekapcsolom! Írni kell, majd reset, utána ketyeg. Áramtalanítom, nem ketyeg, csak ha újra írom és reset. A külső oszci jól működik, ellenőriztem. Ha beteszem az elemet, és egyszer elindítom ,akkor nem áll le, de néha, debuggolás után, ha nem váltom vissza nem fut, de ezt még elnézném neki...
Ez utóbbira megtaláltam a választ.
Ha az RTCWREN nincs bekapcsolva a fenti módon, akkor nem veszi figyelembe az RTCEN-re vonatkozó beállítást. Az érdekesség, hogy ennek ellenére volt, amikor elindult!!! A hozzászólás módosítva: Máj 31, 2014
Ez is kiderült... A PIC-ben hibás a PLL! 96MHz-en nem indul stabilan. 80MHz-re visszavéve stabil.
Az Errata -ban az első pont a megkerülés módja.
A hozzászólás módosítva: Jún 5, 2014
Próbáltam, de vagy nem jól értem amit akarnak, vagy nem működik. Ha segítenél értelmezni, megköszönném!
Ha jól értem, akkor azt mondja, hogy ne használj kétsebességű indulást (tehát hogy másik, gyorsabban induló oszcillátorról indul a chip, és csak amikor a PLL stabilizálódik, akkor kapcsol át erre), ne használj Fail-Safe clock monitort, és ne kapcsolgasd az órajelet az FRC500kHz kivételével a többi órajelforrás és az FRCPLL között. Tehát ha jól értem, akkor a CONFIG2L IESO bitjét tedd nullára, FSCO biteket állítsd 011-be, CONFIG3L FSCM biteket tedd 1x állásba, POSCMD-t pedig 10 vagy 01-be, attól függően, hogy milyen kvarcot használsz. És persze a CONFIG2H PLLDIV bitjeit is állítsd a kvarcnak megfelelőre.
A hozzászólás módosítva: Jún 5, 2014
Szia! Köszönöm a megerősítést!
Beállítás 20MHz: POSCMD = HS, FOSC = PRIPLL, PLLDIV 5-ös, IESO=OFF, FSCM = CSDCMD Jelenség, bekapcsolás, vagy hardver reset után nem mindig indul el rendesen. Ilyenkor a watchdog nem okoz resetet! Érdekesség, hogy az óra megszakítások működni látszanak, de a fő szál nem fut. A program holt egyszerű, nem okozhatja, csak két LED az indikáláshoz egy az óra megszakításban, egy a fő loop-ban... Ha átteszem a PLLDIV-et 6-ba, minden hibátlan lesz! A debugg mód azért nem mutatta a hibát, mert addig el sem indult a folyamat, amíg nem rázódott helyre a PLL. Szerencsére nem kell az USB(bár jó lett volna firmware frissítés miatt), és elég az 53,33MHz-is. Fontosnak látom, hogy ne kelljen be-ki-be kapcsolgatnia a felhasználónak a készüléket. Egy reset áramkör talán megoldás lenne, de ez elég gáz. Kezdek kiábrándulni...
Van több ilyen típusod is? Lehet, hogy az adott példány a hibás.
Van még egy, de nem sok kedvem van kiforrasztani(le van lakkozva). A következő példányoknál megnézem ugyanígy viselkedik-e és ha nem, akkor kicserélem a komlett panelt. De csak az USB-s bootloader miatt lenne érdekes, anélkül meg lehet élni.
Egy 250Hz frekvenciájú, 50% kitöltési tényezőjű jelet szeretnék kicsikarni egy 4MHz-en futó PIC18F25K80 mikrovezérlő CCP5 moduljából, a TMR4 felhasználásával, az alábbi módon:
De sajnos nem sikerül. Mit rontok el?
Ha ezt szeretnéd beállítani, akkor a CCPR5L nem jó. Az órajel beállítást én kitenném a program elejére.
A hozzászólás módosítva: Jún 17, 2014
Átírtam 0x7D-re a CCPR5L-t de így sem jó. Az órajel beállítás valójában legelöl van.
Egyáltalán semmi nem jön ki belőle? Programból tudod billegtetni a lábat, ODCON beállítva.
Billegtetni tudom manuálisan, az ODCON pedig 0x00.
A TMR4 fut? (Egyszer jártam úgy, hogy az TMRxCON-ban 1x-ben az x mégsem lehetett akármi ).
Emlékszem szenvedtem vele én is, ha jól emlékszem valami portbeállítás baja volt. Ez van még az enyémben:
|
Bejelentkezés
Hirdetés |