Re: I2C zavaděč pro PIC18 (prosba o pomoc)
Ondřej Janovský
ondrej.janovsky na alarex.cz
Úterý Květen 2 08:54:52 CEST 2017
Dobrý den,
Loadables jsem použil, ale nepomohlo to. Problém je v tom, že obsluha
přerušení zapisuje do stejných registrů na začátku paměti, jako zapisuje
i běžící aplikace. A nelze tomu zabránit ani definováním přístupných
oblastí v RAM v nastavení linkeru.
Chtěl jsem dosáhnout toho, že v procesoru bude bootloader s obsluhou I2C
přerušení a aplikace bude obsluhovat zbytek. Výhodou by bylo, že i když
se aplikace nepovede, vždy půjde po I2C přepnout do režimu bootloader.
Pokud bootloader přepíši do ASM, tak budu mít plnou kontrolu nad RAM a
fungovat to bude.
Z nedostatku času jsem nakonec přešel na jiné řešení, kdy bootloader je
aktivní max. 4 minuty po startu. Takže mohu buď nahrát aplikaci, nebo
dát povel k jejímu spuštění.
Jakmile se spustí aplikace, už bootloader neběží a neobsluhuje ani I2C a
vše je v pořádku. Pokud chci zpět do bootloaderu, musím provést reset
procesoru buď z aplikace, nebo pomocí pinu procesoru.
Všem děkuji za pomoc.
Oja
On 05/01/2017 17:35, mpap na quick.cz wrote:
> Dobrý den,
>
> ISR rutinu pro bootlooader jsem ještě neměl potřebu použít, vystačil
> jsem s testováním příznaků dané periferie např. u UARTu, jestli je ve
> vstupním bufferu připraven znak pro přečtení. Tady nepomůžu.
>
> Jestliže máte bootloader jako jednu aplikaci a vlastní program jako
> druhou a chcete je mít v zavedené obě současně a provádět například
> ladění, je možné použít funkci Loadables v MPLABX.
> Loadables je ve vlastnostech Projektu a dovoluje načíst další Projekt
> do stávajícího Projektu.
>
> Snad Vám to pomůže.
> mpap
>
>
>
>
>
>
> On 28.04.2017 17:20, Ondřej Janovský wrote:
>> Zdravím,
>>
>> Už více jak týden se snažím napsat zavaděč pro PIC18, abych mohl
>> nahrát přes I2C program a pak ho spustit a provozovat.
>>
>> Povedlo se mi napsat zavaděč, který nahraje do flash program a pak se
>> restartuje a po startu je předáno řízení už tomuto programu.
>>
>> Přerušovací rutina však zůstává ta ze zavaděče a pokud je přerušení
>> jiného původu než I2C, předá se volání programu.
>>
>> A zde jsem narazil, protože nedokáži oddělit RAM pro zavaděč a
>> obsluhu I2C od zbytku aplikace a dějí se mi hrozná zvěrstva jako
>> přepis obsahu dočasných proměnných, nevysvětlitelné vytuhnutí obsluhy
>> periferií, které ve stejném kódu bez bootloaderu se nevyskytují.
>>
>> Zkoušel jsem nastavovat oblasti paměti v linkeru (k ničemu), vytvářet
>> bloky dat v kódu (funguje, ale jen pro jednodušší úlohy). Teď už jsem
>> s rozumem v koncích a z dokumentace k XC8 jsem nic nevyčetl :(
>>
>> A tak volám o pomoc, klidně i placenou :(
>>
>> Oja
>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list