Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   351 / 351
(#) Bakman válasza Baxi hozzászólására (») Ápr 23, 2022 /
 
Annyi két bájtba bőven elfér.
(#) Baxi válasza Bakman hozzászólására (») Ápr 25, 2022 /
 
Szia.
Összeraktam asztalon egy teszt "kapcsolást" az uart próbálgatására. (Jelenleg két különböző pic, mert ezekhez van teszt panelom, de 20MHz a kristály mindegyiken, ha számít valamit)
Addig jutottam hogy küld illetve fogad adatott mind két fél, de....
Nem mindig azaz adat jön amit küldök, vagy a fogadó oldalon mást olvas.
Amit csinál a két program hogy az egyik mindig 48-at kül, a másik ha nem ezt a számot kapja akkor a hiba változó értékét növeli eggyel, s vissza fele is, csak ott 99-et küld. Sajnos pörög a hiba számláló felfelé.
Mit rontok el? Ha van időd, vagy valakinek aki érti ránézne a két prg-ra?

Van egy tippem, a hibára. Azaz hogy akkor is olvassa a RX lábat amikor nincs beérkező adat s ezért kapok nem megfelelő adatot. Viszont ezt hogy lehetne kivédeni, van valami jelző bit vagy valami amit letudok kérdezni a uart receive makró használata előtt? De lehet hogy hülyeség amit írtam, s teljesen más a hiba oka.
Segítséget előre is köszönöm.
(#) niedziela válasza Baxi hozzászólására (») Ápr 25, 2022 / 1
 
Használj port megszakítást, vagy az adat előtt legyen egy azonosító küldés és utána a valós adat, vagy az adathoz fűzd hozzá az azonosítót.
Igy a többi false adatot el tudod dobni.
De a folyamatos kommunikáció helyett majd jobb lenne egy port megszakítás és utána a valós adatok küldése.
(#) Bakman válasza Baxi hozzászólására (») Ápr 25, 2022 /
 
A

"receive=ReceiveRS232Char(1)"

makróban az 1-es az időlimit (max. 255 lehet). Ennyi ideig vár arra, hogy beérkezzen valamilyen adat. Valahol annó kérdeztem a Matrix fórumán, hogy ezt az időt hogyan kell értelmezni, de már nem emlékszem a válaszra, időközben okafogyottá is vált. A lényeg az, hogy ha az időtúllépés bekövetkezik, akkor a "receive" változód értéke 255 lesz, ami pedig növeli a hibás vételi adatok számát.

A 18F26K22-es verziót módosítottam úgy, hogy megszakítás kezelje a vételt. Ebből elvileg el tudsz indulni arra, amerre szeretnél.
(#) Baxi válasza Bakman hozzászólására (») Ápr 26, 2022 /
 
Nagyon szépen köszönöm!
A hozzászólás módosítva: Ápr 26, 2022
(#) Georgee hozzászólása Jún 10, 2022 /
 
Sziasztok!
PWM-el szeretnék vezérelni LED-et. 14.4Voltról a betáp, 6V-on szeretném üzemeltetni 12F675-ös PIC-el. A kérdésem az lenne, mekkora frekvenciát állítsak be?
Köszönöm a válaszokat.
(#) pucuka válasza Georgee hozzászólására (») Jún 10, 2022 /
 
A PWM -nél tökmindegy a frekvencia. A lehetőségekhez képest a minél magasabb frekvencia beállítása célszerű, egyrészt, hogy kívül essék a hallható tartományon, de a LED még elbírja, ill minél nagyobb a frekvencia, annál nagyobb felbontást tudsz használni.
(#) Bakman válasza Georgee hozzászólására (») Jún 10, 2022 /
 
A frekvencia kb. mindegy, de 100 Hz alatt már látni fog a villogást. Úgy állítsd be a LED meghajtását, hogy 100 %-os kitöltést is viselje el, majd a PWM segítségével csökkented a fényerőt.

A felbontás akkor a legnagyobb, illetve a PWM frekvenciája akkor a legkisebb, amikor a PR2 értéke a lehető legnagyobb, ez 255 nevezett PIC esetén. A Flowcode-ban 256-ot is be lehet állítani, de igazábol a háttérben ebből mindig levon 1-et.

Ha nem valami extra dolog, akkor 1:16 előosztó mellett állíts be 256-ot periódus regiszter gyanánt. A táblázatban 8 MHz-es órajel mellett láthatóak az értékek.
(#) kaqkk hozzászólása Júl 12, 2022 /
 
DS18B20 miért produkál CRC-errort ? A felhúzó ellenállás értékének változtatása megoldhatja a hibát ? Pic18f252 az alany 20Mhz-s kvarccal
A hozzászólás módosítva: Júl 12, 2022
(#) Bakman válasza kaqkk hozzászólására (») Júl 12, 2022 /
 
A gyári CRC kezelés, legalábbis a v5-ben gyakorlatilag kuka. Itt találsz egy működő példát, több szenzor kezeléséhez: Bővebben: Link. A programban egy trükk van ami nem látható azonnal:

Build menü -> Projekt opciók -> Kiegészítő kód

Itt van az a táblázat, ami a CRC-hez kell.
Akkor is ilyen hibát fogsz kapni, ha a valós és a 'Projekt opciókban' megadott órajel eltér.
(#) kaqkk válasza Bakman hozzászólására (») Júl 12, 2022 /
 
Én a 8 verzióban próbálom életre kelteni (érdekes hogy fél éve lcd kijelzővel működött) most hogy egy VFD- nyüstölök nem hajlandó beindulni . a kiegészítő kódot kipróbálom köszönöm a segítséget .
(#) kaqkk válasza Bakman hozzászólására (») Júl 12, 2022 /
 
Sajnos nem fordítja be hex be ha benne van a kiegészítőkód
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
Mi a hibaüzenet? Hátha.
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Target folder: D:\OneDrive\Asztal
Source name: D:\OneDrive\Asztal\RS_232_DS18B20.fcfx
Title:
Description:
Device: PIC.18F.18F252
Generated by: Flowcode v8.0.0.6
1

Launching the compiler...
C:\Program Files (x86)\Flowcode\Common\Compilers\pic\batch\pic_xc8_comp.bat 18F252 "D:\OneDrive\Asztal\" "RS_232_DS18B20"

D:\OneDrive\Asztal>C:\PROGRA~2\Flowcode\Common\COMPIL~1\pic\batch\..\bin\xc8.exe --chip=18F252 "RS_232_DS18B20.c" --MSGDISABLE=359,1273,1388 --FLOAT=32 --DOUBLE=32
Microchip MPLAB XC8 C Compiler (PRO Mode) V1.45


Employing 18F252 errata work-arounds:
* Address 4000h boundary
* Faulty table reads at -40 degrees C
* GOTO instruction at reset vector must be preceded by NOP
* Peripherals can misbehave if BSR = 15
* DAW instruction may improperly clear CARRY bit
* Specifically disable interrupt sources during tblwt instruction
* Writes to flash must target opposite side of 4000h boundary
RS_232_DS18B20.c:
443: rom char* CRCTABLE = {
^ (374) missing basic type; int assumed (warning)
^ (314) ";" expected
444: 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53
^ (316) "}" expected
^ (314) ";" expected
RS_232_DS18B20.c: FCD_0bbd1_One_Wire1__Get_Next_ID()
933: break;
^ (345) unreachable code (warning)
(908) exit status = 1
(908) exit status = 1

Error returned from [xc8.exe]

C:\Program Files (x86)\Flowcode\Common\Compilers\pic\batch\pic_xc8_comp.bat reported error code 1
A hozzászólás módosítva: Júl 13, 2022
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
Valószínűleg hiányzik a sor végéről a kapcsos zárójel '}' és a pontosvessző ';'.
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Ok , köszi megpróbálom ....
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Megvan a kódban mindkettö ugyanazt a hibát dobja ...
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
Próbáld meg az alábbit beilleszteni. Lehet, hogy másolás - beillesztés alkalmával bekerült a rendszerbe valamilyen nem oda illő, láthatatlan karakter:

  1. rom char* CRCTABLE = {0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53};


Ha megtalálod a generált .c fájlt, akkor a 314, 316, 345 és 374-es sorok környékét nézd át, ott jelez hibát a fordító. A C kódból lehet következtetni, hol hibás a program.
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
* Peripherals can misbehave if BSR = 15
* DAW instruction may improperly clear CARRY bit
* Specifically disable interrupt sources during tblwt instruction
* Writes to flash must target opposite side of 4000h boundary
RS_232_DS18B20.c:
^ (374) missing basic type; int assumed (warning)
^ (314) ";" expected
(316) "}" expected ^
(314) ";" expected ^
RS_232_DS18B20.c: FCD_0bbd1_One_Wire1__Get_Next_ID()
931: break;
^ (345) unreachable code (warning)
(908) exit status = 1
Szerintem nincs változás
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
A zárójelben vannak jelölve a hibásnak vélt sorok. Ezeket, illetve ezek környékét kell átnézni. Már ha kapsz .c kiterjesztésű fájlt. v5 még adott ilyesmit.
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Van c fájlom megnézed ?
A hozzászólás módosítva: Júl 13, 2022
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
Próba így:
  1. const uint8_t CRCTABLE[256] = {0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Ez sem tetszik a fordítónak , nem lehet hogy a 18f252 buta ehhez ?
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
Az kizárt, hogy ehhez buta lenne a PIC-ed. Elég fura hibákat dob a fordító. Töröld ki azoat a részeket, amiket utoljára raktál bele, hátha úgy jó lesz. Ha nem, indíts egy új projektet és másolj át mindent a régiből az újba. Egyszer-kétszer jártam már így, valami beragadhatott a programban. Amit korábban jól lefordított, később már nem ment neki, miközben csak egy ikont töröltem. A fene érti.
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Utoljára a kiegészítő kódot tettem bele de ha gondolod mindent átmásolok , elég lehet ha a makrókat másolom át ?
(#) Bakman válasza kaqkk hozzászólására (») Júl 13, 2022 /
 
Ha törlöd a kiegészítő kódot, és azt a részt, ami a CRCTABLE részre hivatkozik, lefordul a program?
(#) kaqkk válasza Bakman hozzászólására (») Júl 13, 2022 /
 
Igen Csak beégetve CRC hibát ír a kijelző
A hozzászólás módosítva: Júl 13, 2022
Következő: »»   351 / 351
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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