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