Fórum témák
» Több friss téma |
Fórum
Visszavettem a kommunikáció sebességét 115200-ról 9600-ra ... most úgy néz ki jó lesz! Köszönöm a segítséget!
OERR - Overrun Error - Ráfutás: Az előzőleg vett adatot nem olvasták ki mielőtt az új beérkezett volna. Csak a folyamatos vétel kikapcsolásával lehet törölni (CREN=0; CREN=1
Bebugban nézegetem a regisztereket ... RCSTA regiszter OERR bitje néha 1-re vált, utána nem megy a soros port megszakítása...
Milyen programsorok vannak az impulzusszámláló és az UART vételi megszakításkezelésekben?
PIC18F4550 megszakítás probléma ...
A probléma véletlenszerűen jelentkezik (tízből 3-4 esetben), az UART megszakítás mindaddig hibátlanul működik amig INT_EXT2-re nem érkezik impulzus, onnantól kezdve nem lép be a program az INT_RDA megszakításba hiába érkezik adat a soros porton. Mi lehet ennek az oka?
Köszönöm! Valóban ez volt a gond! Így már sikerült megoldanom!
Anélkül hogy ismerném a fordítót, gyaníthatóan megszakításban és azon kívül is szerepel a programban a "kepernyo_kiiras_3" nevű makró/funkció/függvény hívása.
A gond akkor keletkezik, amikor meghívod nevezett makrót, a folyamat a közepén tart és egy megszakítás is meg tudja hívni egyazon időben az utasítássort, gyakorlatilag bármikor. Ebbe bele szokott törni a kontroller bicskája, külső szemlélő csak annyit érzékel, hogy lefagy a rendszer, jó esetben újraindul a kontroller.
A program fordításakor az alábbi warning üzenetet kapom:
Idézet: „main.c:371:1: Warning#216 Interrupts disabled during call to prevent re-entrancy: (kepernyo_kiiras_3)” De hogy mi, meg miért, meg hogyan? Mi a teendőm?
Basszus én már mindenhol néztem, de nem találtam, erre itt volt az orrom előtt
![]() Köszi!
A Microchip archívumban nincs benne?
Sziasztok!
Nincs valakinek véletlenül HI-TECH PICC telepítője? Esetleg el tudná küldeni vagy fel tenni valahová?
Bocsi, az & nem lesz jó, de bitenként módosíthatod a 24bites tartalmát a 8bites alapján és akkor a többi bit nem változik benne.
Egy másik 8bites változót használni esetleg ami mehet ++-- majd adat kiküldés előtt azt 'összeéseled' & a 24bited alsó bitjeivel ahánnyal szeretnéd. Jobb megoldás most hirtelen nem jut eszembe.
És olyan megoldást nem tudnál, hogy d7-d23 ne változzanak?
Természetesen minden bit megfordul.
A hozzászólás módosítva: Jan 7, 2022
Igen szoftveresen küldöm. Ezt még emésztenem kell, mert D7-D23 is vannak adatok és akkor azok is fordulnak.?
Szia, ha nem hw spi-on tolod ki az adatot és nincs más IC, akkor gondolom szoftveresen tolod ki az adatot -> fordítsd meg ott a kiküldés irányát és már mehet is az i++;
![]() Amúgy D0..D23 (ahogy a 2 kérdésedben írtad) => 24bit
Ez egy shift regisztert töltene fel, (ami 23 bit hosszú) és az a gondom, hogy D6-os bit az LSB bit és a D0 bit Az MSB. Hogyha fordítva lenne akkor nem lenne gondom (i++).
Hogy hozol létre 23 bites válltozót? Miért nem használsz 32 bitest?
Vagy nem értem mit szeretnél!
Elírtam!
D0,D1,D2,D3,D4,D5,D6, ........D23, 0 0 0 0 0 0 0 0 0 0 i++ 0 0 0 0 0 0 0 0 0 1 i++ 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 . . 1 1 1 1 1 1 1 1 1 1
Sziasztok!
Segítséget szeretnék kérni! Egy PIC16F886A procit használok és van egy 23 bit széles változóm (int i) amit növelni és csökkenteni szerették i++ ill. i-- módszerrel, de D0,D1,D2,D3,D4,D5,D6, ........D23, 0 0 0 0 0 0 0 i++ 0 0 0 0 0 0 1 i++ 0 0 0 0 0 1 0 0 0 0 0 0 1 1 . . 1 1 1 1 1 1 1 hogyan lehetne megoldani? Kezdő vagyok a programozásban, ha lehetne akkor részletesen magyarázzátok el! Előre is köszönöm a segítséget!
SPI adatátvitellel lene egy kis gondom.
64 bit-et kéne kiküldenem, de az #use SPI ( ... bits=32, ... ) beállításoknál max 32 bitet enged beállítani. Mi erre a megoldás?
Itt én rengeteg kérdésemre megtaláltam a választ (ha esetleg még nem ismered) .
Fel kéne tenned a forrást, anélkül nehéz bármit is mondani...
Sziasztok!
Szakdolgozatomhoz keresek segítséget PIC témában. A mikrocontroller PIC16F887, a nyelv CCS, PICkit3 programozót használok. Első körben egy általatok ajánlott programcsomagot keresek, ahol tudnám használni a debug funkciót. Sajnos az eddig próbált programokkal ez nem jött össze (PICkit3, PCWHD Compiler 4.104, illetve 5.025, 64bites WIN10 operációs rendszer). Gyakorlatilag azt veszem észre, hogy ugyanazt a forráskódot a két fordító különböző módon értelmezi, hol az egyik funkció működik, hol a másik, attól függ, hogy hol fordítom le. Próbáltam az MPLAB X IDE v5.35-öt is CCS C Compiler Plugin-nel is, de ott már a változók típusába is beleakadt (unsigned int8). Maga a vizsgamunka egy elektromos kapunyitó vezérlő lenne, ami rendelkezik 4x4-es billentyűzettel, RFID olvasóval, 4x20 karakteres I2C-s kijelzővel, RTC modullal. Nagyjából olyan, mint egy kaputelefon, ami olvas RFID kártyát is, alapesetben pedig a pontos időt írja ki a kijelzőre. Az érvényes kártyakódok az RTC modul nemfelejtő memóriájába vannak tárolva, a kapukódokkal, és a később esetleg szükséges egyéb tárolandó információkkal együtt. Timer0 és RDA megszakítások vannak jelenleg az óramodul és az RDM6300-as (RFID) UART modul végett. A részegységek külön-külön működnek, de amint rendszerbe akarom foglalni a részeket, az addig működő funkciók is "elromlanak". Különösen az UART kommunikáció áll gyenge lábakon, az csak az 5.025-ös fordítóval működött egy ideig úgy, ahogy kellene, majd később, ahogy bővült a kód, azzal sem. Tovább nem akarom szaporítani a szót, ki tudna segíteni ebben a témában attól szívesen venném a segítséget. Fontos lenne számomra ez a dolog, sajnos az ismerőseim között nincs senki aki mélyebben benne lenne a témában. Segítségetek előre is köszönöm!
Egy darab pointer kell hozzá, ami a float változódra mutat.
Vagy ahogy előttem írták. float f; char* ptr; ptr = (char*) &f; for (int i=0; i<4; i++) putchar(*ptr++);
készíts a float típusból és egy 4 elemű char tömbből egy u_n_i_o_n -t (ha aláhúzás nélkül írom, a post nem jelenik meg). Írd az értéket a float változóba és küld el a karakter tömb elemeit.
Hogyan tudok egy float változót soros portra kiküldeni úgy, hogy a 4 byte-t küldje ki.
Tehát nem akarom átalakítani szöveggé, úgy szeretném kiküldeni ahogy a memóriában le van tárolva!
Ha nem lehet a stream nevét átadni paraméterként a fprintf -nek, akkor csak azt tudom elképzelni, hogy a jelenlegi fprintf helyett egy saját függvényt használni, ami változó(k) értéke alapján azt a fprintf -(eke)t hajtja végre, amelyik azt az uart -o(ka)t használja, amelyikre aktuálisan a Nextion(ok) kapcsolódik (kapcsolódnak).
|
Bejelentkezés
Hirdetés |




