Dnes mi přišel 18F4620. Nové instrukce oproti řadě 16F jsem jakš takš pochopil za chvilku, stačilo pár pokusů a omylů jak v SIM v MPLABu tak reálně na “živo”. I2C a PWM už jsem taky rozchodil.
A teď ten problém. Mám problém s tabulkou pomocí ADDWF PCL. Že PCL “počítá” po 2, oproti řadě 16F, s tím jsem se smířil, ale že počítá někdy po 4, a to ještě že nevím kdy po 2 a kdy po 4, tak to mi hlava nebere. Mám
počítá PCL někdy po 2, někdy po 4
ale když dám
tak PCL počítá pořád po 2
Můžete mi někdo vysvětlit, kde dělám chybu, případně co mám špatně a nakopnout mě správným směrem? Dík.
administrator: přejmenováno z “18F4620, problém s PCLATH”
to som tiez riesil ale nakoniec som to prebehol 4 riadkami kodu. Premenu som f som porovnal s cislom res odcital od kontanty a ked vysledok bol nula tak vykonal prikaz
na miesto jedneho riadku vzniky 4 ale fungovalo to…
Návod na PIC18F,jinak vše je datasheetu.Taky polovinu věcí zatím skroro nechápuu,ale člověk se učí. PIC 16 oproti 18F je šepleť. A jde to úplmě v poho zvládnout i v ASM. Je TOTO čistě můj názor.
Ano dasa mal som naprogramovane nieco v asm pre 18f ale teraz skoro to iste pisem v Ccku a je to neporovnatelne programovacia rychlost a konfort je to proste o inom… a nemusim riesit komplikovane logicke uvahy akosa da nieco urobit v asm.
Bohůžel mi Cčko nějak neleze do hlavy a zatím to zvládám v ASM.
To už jsem taky zjistil, je to stejný jako u 16F, ale to mi nevadí, mám tabulky po 8mi a 13ti, a umístil jsem je pomocí ORG na konec paměti, takže vím kde jsou. A zdůvodu velikosti už nečtu data z EEPROM, ale čtu je z FLASH, je to rychlejší a asi i spolehlivější.
To call vyzkouším.
pokial pouzivate pripocitanie cisla k programovemu citacu na vytvorenie tabulky cisel, nebranim vam, ale rad by som vas upozornit na schopnost PIC18 velmi jednoducho citat a zapisovat programovu pamat.
Napriklad v datasheete PIC18F4620 je to v kapitole 7 (Flash program memory) podkapitola 7.1 (Table read and table writes).
Ono ten sposob robenia tabuliek cez manipulaciu s PC je dost “o hubu” ked ide o robenie velkych tabuliek, napriklad.
V datasheete PIC18F4620 je tabulka 24-2, nazvana PIC18Fxxxx instruction set, je to velmi priznacny nazov, lebo obsahuje instrukcnu sadu daneho MCU to je samozrejme tabulka, ktoru musi mat v malicku kazdy, kto naozaj nieco programuje v assembleri.
Pri instrukcii BRA je, tak ako aj pri inych, uvedeny tvar instrukcneho slova a vidime, ze je to 1101 0nnn nnnn nnnn, kde prvych 5 bitov je operacny kod a nn…n je nejaka konstanta, ako vysvetluju vysvetlivky pred tabulkou. Je zrejme, ze to cislo n ma 11 bitov, co zachytava 2 na 11-tu kombinacii, teda 2048 cisel. Vzhladom na to, ze skoky su prirodzene znamienkove, je to rozsah ±1023 instrukcii.
Tuto rychlu domnienku potvrdzuje aj vysvetlenie instrukcii, ktore sa nachadza za touto tabulkou - je tam jasne napisane, ze instrukcia BRA n prijma argument n z rozsahu -1024<=n<=1023.
Tak ty skoky s CALL jsem zkoušel, ale nějak nepochopil. Zatím teda budu využívat BRA.
Ale po 3 dnech trápení, že mi kolaboval program na přerušení, jsem zjistil, že je dobré si v přerušení schovat i PCLATH, protože v přerušení mám taky jednu tabulku. Zase 3 dny života v háji