Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   1 / 117
(#) Lamprologus válasza Hp41C hozzászólására (») Ápr 5, 2024
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!
(#) Hp41C válasza Lamprologus hozzászólására (») Ápr 5, 2024
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
(#) Lamprologus válasza Bakman hozzászólására (») Ápr 5, 2024
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...
(#) Lamprologus válasza Bakman hozzászólására (») Ápr 5, 2024
  1. #INT_RDA
  2.    void rda_isr(void)
  3. {
  4.    static int t; // statikus t változó létrehozása (megtartja az értékét)
  5.    // NOTE: CCS getc() in this mode reads portB and clears the port INT
  6.    buffer1[next_in1]=fgetc(PORT1);  // beolvassa az érkez? karaktert a bufferbe,
  7.    t=next_in1++;  // t=mutató, majd növeli a mutató értékét
  8.    if (BUFFER1_SIZE==next_in1) next_in1=0; // ha a mutató az utolsó elemre mutat, átállítja az els?re
  9.    if(next_in1==next_out1)  next_in1=t;    // ha túlcsordul a buffer mutatóértékét egyel visszaállítja. Buffer full !!
  10. }


  1. #INT_EXT2
  2.  
  3. void EXT2_isr(void) {
  4.  
  5.     if (dpf_szunet_ido_figyelo > DPF_ADAGOLO_SZUNET_IDO) { // ha letelt a szünet idő és újabb löket érkezik nullázza a számlálót
  6.         dpf_szamlalo = 0;
  7.         dpf_ido_sec = 0;
  8.         dpf_ido_sec_temp = 0;
  9.         dpf_kepernyo_kell = 1;
  10.     }
  11.  
  12.     dpf_szamlalo++; // számolja a löketeket
  13.  
  14.     dpf_ido_sec = dpf_ido_sec + dpf_ido_sec_temp;
  15.     dpf_ido_sec_temp = 0;
  16.  
  17.  
  18.     dpf_szunet_ido_figyelo = 0; // nulázza a szünet id?t.
  19. }
(#) Bakman válasza Lamprologus hozzászólására (») Ápr 5, 2024
Milyen programsorok vannak az impulzusszámláló és az UART vételi megszakításkezelésekben?
(#) Lamprologus hozzászólása Ápr 5, 2024
PIC18F4550 megszakítás probléma ...

  1. enable_interrupts(INT_EXT2); // impulzus számláló
  2.     enable_interrupts(INT_RDA); // UART megszakítás
  3.  
  4.     enable_interrupts(GLOBAL);


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?
(#) Lamprologus válasza Bakman hozzászólására (») Feb 1, 2024
Köszönöm! Valóban ez volt a gond! Így már sikerült megoldanom!
(#) Bakman válasza Lamprologus hozzászólására (») Jan 31, 2024
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.
(#) Lamprologus hozzászólása Jan 31, 2024
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?
(#) roland9 válasza icserny hozzászólására (») Szept 5, 2023
Basszus én már mindenhol néztem, de nem találtam, erre itt volt az orrom előtt

Köszi!
(#) icserny válasza roland9 hozzászólására (») Szept 5, 2023
A Microchip archívumban nincs benne?
(#) roland9 hozzászólása Szept 4, 2023
Sziasztok!

Nincs valakinek véletlenül HI-TECH PICC telepítője?
Esetleg el tudná küldeni vagy fel tenni valahová?
(#) Bjanos válasza tompower hozzászólására (») Jan 10, 2022
Köszönöm a segítségedet!
(#) tompower válasza tompower hozzászólására (») Jan 7, 2022
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.
(#) tompower válasza Bjanos hozzászólására (») Jan 7, 2022
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.
(#) Bjanos válasza tompower hozzászólására (») Jan 7, 2022
És olyan megoldást nem tudnál, hogy d7-d23 ne változzanak?
(#) tompower válasza Bjanos hozzászólására (») Jan 7, 2022
Természetesen minden bit megfordul.
A hozzászólás módosítva: Jan 7, 2022
(#) Bjanos válasza tompower hozzászólására (») 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.?
(#) tompower válasza Bjanos hozzászólására (») Jan 7, 2022
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
(#) Bjanos válasza Lamprologus hozzászólására (») Jan 7, 2022
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++).
(#) Lamprologus válasza Bjanos hozzászólására (») Jan 7, 2022
Hogy hozol létre 23 bites válltozót? Miért nem használsz 32 bitest?

  1. int32 i;
  2. i=i++;
  3. // vagy
  4. i=i--;


Vagy nem értem mit szeretnél!
(#) Bjanos hozzászólása Jan 7, 2022
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
(#) Bjanos hozzászólása Jan 7, 2022
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!
(#) Lamprologus hozzászólása Feb 16, 2021
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?
(#) Lamprologus válasza LP-1985 hozzászólására (») Márc 13, 2020
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...
(#) LP-1985 hozzászólása Márc 12, 2020
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!
(#) superuser válasza Lamprologus hozzászólására (») Feb 14, 2020
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++);
(#) Hp41C válasza Lamprologus hozzászólására (») Feb 13, 2020
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.
(#) Lamprologus hozzászólása Feb 13, 2020
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!
(#) Hp41C válasza Lamprologus hozzászólására (») Jan 10, 2019
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).
Következő: »»   1 / 117
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