Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Simulace běhu programu v MPLAB X IDE
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: st červen 27 2018, 23:40    Předmět: Simulace běhu programu v MPLAB X IDE Citovat

Na stará kolena začínám s programováním Mikrokontrolerů PIC. Pro začátek jsem se chytil Matouškovy knížky Mikrokontroléry PIC bez předchozích znalostí a dalšího dílu této knížky - pro pokročilé. Pořídil jsem PIC16F628A a PICkit3 (klon z ebay). Používám MPLAB X IDE v. 4.15 s překladačem XC8 v. 1.45. Pokud vyjdu z příkladů v knize lze to snadno pochopit a po editaci programu a odstranění chyb které ohlásí překladač proběhne vše v pořádku a program se přenese do PIC a vše běží. Menší úpravy programů rovněž. Když si ale vymyslím složitější verze s cykly, mám problém jak program odladit. Protože PICkit3 údajně umí debug pouze u PICů, které mají zabudovánu HW podporu, potřeboval bych krokovat program aspoň v simulaci. Tady ovšem narážím na rozsáhlost možných nastavení programu MPLAB X, zatím nevím jak na to. Angličtinu zvládám s obtížemi. Můžete mi někdo poradit jak na to?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: čt červen 28 2018, 16:45    Předmět: Citovat

Cau, uz to tu pisu po nekolikaty , MPLAB X je hruza ,priserny pro nastaveni ....

vyskousej starej MPLAB IDE https://www.youtube.com/watch?v=pnkUOL0mmyA

jinak skus projet temata od uzivatele pettter nedavno jsme tam resily spoustu uzitecnejch veci
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: so červen 30 2018, 20:57    Předmět: Citovat

Děkuju za tip na youtube. Tam jsem našel postup jak nastavit MPLABX IDE pro simulaci. Je to sice logické, ale v tom obrovském rozsahu možných nastavení to neprofesionál sám těžko hledá. Ale můj problém jsem stejně nevyřešil, pouze jsem zjistil jak se program chová (ale to není málo!).
Je to tento prográmek, který má opakovaně honit v osmici LED na portu B jednu svítící LED od bitu 0 po bit7 a zpět. Ve skutečnosti se rozsvítí jen LED na bitu 0 a tím to skončí. Na simulaci jsem zjistil že program běží dobře pouze do skončení čekání a pak se vrátí na začátek cyklu while a tak dokola v nekonečném cyklu.
/*
* File: 8xLEDpostupne_cyklem.c
* Author: xxxx
*
* Created on 27. ?ervna 2018, 17:03
*/

#pragma config FOSC=INTOSCIO //vnitrni osc., RA6 a RA7 volne
#pragma config WDTE=OFF //vypnuti WDT
#pragma config LVP=OFF //vypnuti LVP, RB4 volny

#define _XTAL_FREQ 4000000UL //taktovaci kmitocet 4 MHz

#include <xc.h>
#include <stdint.h>

void main(void)
{
uint8_t n,m;
TRISB=0; //vsechny vyvody portu B jsou vystupy
PORTB=0b11111111; //vsechny LED zhasnute
n=0b00000001;


while(1) //nekonecny cyklus
{
if (n==0b00000001)
m=0;
if (n==0b10000000)
m=1;
PORTB=(unsigned)~n;
__delay_ms(500);
if (m==0)
n>>1; //bitovy posuv doleva o 1 bit
if (m==1)
n>>1; //bitovy posuv doprava o 1 bit
}
return;
}

Tedy část:
if (m==0)
n>>1; //bitovy posuv doleva o 1 bit
if (m==1)
n>>1; //bitovy posuv doprava o 1 bit
se celá přeskakuje.
Našel jsem pouze varování překladače
":: warning: (1273) Omniscient Code Generation not available in Free mode" s kterým si nevím rady v čem je problém a jak jej mohu řešit i v bezplatné (free) verzi.
Mohu požádat někoho ze zkušených, proč vadí ty dva podmíněné příkazy na konci. Rád bych to pochopil abych věděl v čem je omezení.

Díky moc za pomoc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: so červen 30 2018, 21:21    Předmět: Citovat

cau mas to spatne a jeste asi preklep
kód:
n>>1; //bitovy posuv doleva o 1 bit
n>>1; //bitovy posuv doprava o 1 bit


https://www.sallyx.org/sally/c/c10.php
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: so červen 30 2018, 21:26    Předmět: Citovat

Omlouvám se za chybnou verzi programu, uvedenou v předchozím příspěvku. Zkoušel jsem totiž přehazovat příkazy pro posuvy a omylem jsem uvedl verzi kde jsou ty posuvy prohozené. Na chování programu to ale nemá žádný vliv, protože jak jsem uvedl, překladač ty dva podmíněné příkazy stejně ignoruje. Uvádím to jen pro toho kdo tuto chybu objeví, aby věděl že v tom problém nespočívá.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: so červen 30 2018, 21:32    Předmět: Citovat

dobra , takze to mame vyresenej ten "preklep" a tet tu dulezitou chybu ktera to znefunkcnuje ..
do odkazu jsi koukal ?

jo jinak kod davej do CODE
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: so červen 30 2018, 21:45    Předmět: Citovat

Bohužel to moje upozornění na chybu přišlo pozdě, MiloPS3 byl rychlejší. Ale dík za odkaz na sallyx.org. Zjistil jsem totiž že Microchip má v dokumentaci která se nainstaluje s překladačem pěkný chaos vyplývající asi z kombinace s makroassemblerem. A když se místo překladače XC8 verze 1.45 nainstaluje novější verze 2.00, což MPLABX nabídne, překladač používá jinak psané příkazy.
Navíc sallyx je v češtině.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: so červen 30 2018, 21:48    Předmět: Citovat

Na odkaz na sallyx jsem zatím jen koukl, ale přečtu si jej jak bude chvíle, teď musím od počítače.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rnbw



Založen: Mar 21, 2006
Příspěvky: 33907
Bydliště: Bratislava

PříspěvekZaslal: so červen 30 2018, 21:59    Předmět: Citovat

gcc napsal(a):

kód:

test.c:5:11: warning: statement with no effect [-Wunused-value]
         n >> 1;
         ~~^~~~

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: ne červenec 01 2018, 16:39    Předmět: Citovat

pro rnbw:
je to zpráva pro mne nebo pro gcc (asi mimo toto vlákno)?
mám tam sice podobný příkaz pro posuv, ale napsaný asi správně, tj. bez mezer. Alespoň jinak tomu nerozumím.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: ne červenec 01 2018, 16:51    Předmět: Citovat

to je odpoved pro tebe
asi neznamena ze je to spravne ...
kód:
n>>1; //bitovy posuv doleva o 1 bit
kam zapisujes vysledek ?

otevri si ten odkaz co sem sem dal a najdi si Binární a relační operátory a najdi si spravny zapis prikazu ne "asi spravny"



posuv.JPG
 Komentář:
 Velikost:  32.75 kB
 Zobrazeno:  171 krát

posuv.JPG


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Bernard



Založen: May 27, 2005
Příspěvky: 3647

PříspěvekZaslal: ne červenec 01 2018, 17:02    Předmět: Citovat

nvenca napsal(a):
...":: warning: (1273) Omniscient Code Generation not available in Free mode"

To bude asi jen taková srandička: Vševědoucí kompilátor není ve free verzi k dispozici. gcc to zhodnotí stručně: warning: statement with no effect

EDIT: Teď koukám, že rnbv to napsal už včera. Embarassed
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: ne červenec 01 2018, 17:09    Předmět: Citovat

Nějak jsem uvízl v mrtvém bodě.
Jsem totiž původně analogový hardwerář s určitými malými zkušenostmi z pokusů ve strojovém kódu se stavebnicí SDK 8085 (historicky). Tam o žádný překlad nešlo a za celý program včetně chyb a jejich hledání si ručil programátor. Hlavním nástrojem byl selský rozum a pečlivost při studiu a použití instrukcí. Byly také nějaké historické pokusy v Basicu a pak v Borland Pascalu, ale to se netýkalo řízení hardware.
Domnívám se že problém může být v tom, že na rozdíl od prostého assembleru (vlastně strojový kód jen zapsaný v sybolických adresách) tady (u C) přibývá překladač, kde kromě toho selského rozumu přibývá nutnost respektovat potřeby toho překladače, aby interpretace nejen příkazů (syntaxi pohlídá překladač) ale i obsahu proměnných byla jednoznačná (signed, unsigned apod.). Z toho vyplývá zřejmě nutnost prostudovat si úvodní kapitoly (definice, typy, deklarace atd.) k jazyku C, což se mi jednak nechtělo v anglické rozsáhlé dokumentaci k XC8, jednak jsem jel podle té Matouškovy knihy, která se tím na začátku vůbec nezabývá. Ty příklady z knihy jsou samozřejmě v pořádku, ale jen primitivní, no a já jsem chtěl hned u prvního příkladu více, podle selského rozumu měl program fungovat, syntaxe byla taky OK, ale překladač to asi chápe jinak.
Takže zpátky na strom a začít studovat, nejlépe v češtině. Zkusím sallyx.org i když tam samozřejmě není popis C pro XC8 od Microchipu, ale to už snad porovnám s dokumentací k XC8 (asi stačí syntaxe příkazů).
Vidíte někdo lepší cestu k porozumění chování překladače?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: ne červenec 01 2018, 17:49    Předmět: Citovat

nehledej v tom zadny čáry máry
mas spatne zapsanej prikaz
MiloPS3 napsal(a):
kam zapisujes vysledek ?
(viz priloha)
citace:
Vidíte někdo lepší cestu k porozumění chování překladače?
help a pak google a google a GOOGLE


Struktura programu v C.JPG
 Komentář:
 Velikost:  163.51 kB
 Zobrazeno:  199 krát

Struktura programu v C.JPG


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nvenca



Založen: Feb 28, 2012
Příspěvky: 117
Bydliště: Brno

PříspěvekZaslal: ne červenec 01 2018, 18:13    Předmět: Citovat

Děkuju všem za pomoc, už to běhá jak má. Ve všech popisech, které mám k dispozici se u operátorů pro bitový posuv sice zabývají popisem co se stane s operandem signed a co s unsigned, ale ve všech jsem to chápal tak, že se NAHRADÍ původní obsah proměnné hodnotou bitově posunutou požadovaným směrem o požadovaný počet bitů.
O tom že by to mohlo být i jinak jsem začal uvažovat až po přečtení dotazu od MiloPS3 (kam zapisuješ výsledek?). Stačilo nahradit n>>1; příkazem n=n>>1; a obdobně u druhého posuvu a vše jede.
Akorát to při překladu varuje:
8xLEDpostupne_cyklem.c:34: warning: (373) implicit signed to unsigned conversion.
Ale protože je asi správně definovaný typ proměnné, tak to nevadí?
Ještě jednou díky všem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.19 sekund