Programátor dsPIC

Tak jsem ubastlil potyo1 a nevím si rady s jednou věcí a to, že při debugingu mi breakpoint přeskočí třeba i 5 cyklů dopředu, takže jsem pak v programu někde jinde, než jsem potřeboval. A občas mi to píše MPLAB ICD 2 is busy, ale nikde jsem nenašel, čím se dá korigovat rychlost komunikace, nebo jsem špatně hledal :open_mouth: :unamused:
Díky za rady

Je běžné, že breakpoint trochu uskočí. Ovšem to co popisuješ, souvisí nejspíš s problémem komunikace. Můžeš tam mít HW problém v místě budičů HC126, 126. Ale já jsem na totéž narazil dík kabelu k aplikaci. Ten pro použití krystalu 20MHz nesmí být delší než 15cm. Dlouho jsem bádal, proč debugging zastavuje jinde než chci a ICD2 neustále při krokování píše busy. Občas se to i seklo a LED ERROR se rozsvítila. Kvůli zkrácení kabelu jsem dokonce upravoval i krabičku, ale stálo to za to. Stejný problém jsem řešil na dvou klonech a v obou případech krátký kabel pomohl. Když je to pomalé, špatně to reaguje třeba na zastavení programu, je to celkově nestabilní, vybíhají chyby a svítí busy nebo nedej bože blikne červená ERROR, tak zkrať ICD kabel na minimum. Tedy maximálně na 15cm. To byl jediný vážný problém, který jsem řešil. Na to je ICD2 velmi citlivé. Nejde debugging 16F88 / ICD2 při 20MHz
Podle doporučení Microchip jsem kabel udělal z jednotlivých vodičů.

Pro potyo doporučuji tyto úpravy, pokud jsi je ještě neudělal:

  1. Na pin 1RA4 obvodu 16F877A připojit pullup rezistor cca 4k7 do Ucc
  2. Na piny 11,12 obvodu IC1 připojit společný pullup rezistor cca 4k7
    do Ucc
  3. Na napájení konektoru USB zapojit bipolární transil 5V6
  4. Do napájecího pinu 14 IC3 74HC126 vložit přiměřenou diodu třeba 1N5817
  5. Všechny omezovací rezistry pro LED zvětšit 3x
  6. LED1 neumísťovat na panel, možná pouze na plošný spoj pro
    diagnostiku, ještě jsem ji neviděl svítit.
  7. Použít obvod 16F877A
    kabel.JPG

Díky za radu, ale já úpravy udělané mám, ale mám PC pod stolem a ICD2 na stole, kabel mám 0.5 m. Když ho zkrátím ještě víc, tak nemusím nic programovat :smiley: :smiley: .
ICSP můžu prodloužit na cca 0.5 m? Kdybych dal ICD2 přímo do USB přes redukci.

když dám jeden krok vpřed, ICD odpoví :
Stepping Target
MPLAB ICD 2 Ready
ICD0116: MPLAB ICD 2 is busy
ICD0116: MPLAB ICD 2 is busy
ale skočí o jeden krok

Při breakpointu
Running Target
ICD0116: MPLAB ICD 2 is busy
ICD0116: MPLAB ICD 2 is busy
MPLAB ICD 2 Ready
a skočí 1 až 5 kroků, jak kdy

Nemluvím o USB kabelu, ten může být jakýkoliv. Jde o ICSP kabel. Ten jsem měl původně 40cm(16") a musel jsem ho zkrátit na 15cm(6")
To co popisuješ, je typické chování při dlouhém kabelu. Udělej si nový ICSP kabel !

ICSP mám 10cm

A je to tak ,jak jsem kdysi psal tady někde, když mi breakpoint zastaví na první segmetovce, tak to ta 7segmentovka vyžere. ICD2 a jiné debuggery jsou absolutně k ničemu, co se týká debuggingu!!!Odpálil jsem 7segmentovku za 140,-kč.Teď jsem totálně nasranej a nejradši bych to rozmalátil na sračku!! Na programování je to dobrý ale na debugg absolutně nepoužitelné. Mrzí mě že jsem ten tišťák vůbec vyrobil.Asi se vrátím k TTL

Omlouvám se, ale jsem naštvanej a včera jsem byl totálně nas…

Pamatuji si, jak jsem vysmažil maticové LCD 4x 40 (tehdy za 1200 Kč), protože jsem si spletl zdířku a místo na +5V jsem jej připojil na +12V. Dej si pár dní klid, přejde tě to.

(každý má možnost upravovat své příspěvky, není proto nutné psát dva za sebou)

Na jedné straně chápu, že jsi naštvaný. Na druhé straně, v případě sebemenší chyby v software dosáhneš stejného efektu. Chci říci, že konstrukce by měla být proti takovým běžným chybám odolná. Nějak se nemůžu smířit s tím, že jeden break programu zničí kus displeje! To snad není chyba debuggeru, ale tvoje. Věř, že ICD2 ti hodně pomůže, časem na to určitě přijdeš.
Chtěl bych se ale vrátit k původnímu problému.

  1. Jaký PIC jsi debuggoval?
  2. Jaký byl zdroj hodin pro PIC?
  3. Napájení bylo z ICD2 nebo z aplikace?
  4. Jaké budiče máš na místě 74125/126 - HC, HCT?
  5. Jak jsou zapojeny piny MCLR, ICSPDAT a ICSPCLK v aplikaci?

PIC16F877A

20MHz

Z aplikace

74HC126N a 74HCT125B1

Mám to na nepájivém poli, 11cm kabliky, zasunuty hned vedle PIC.

MCLR na reset, ICSPDAT na RB7/PGD, ICSPCLK na RB6/PGC. Na resetu je odpor 10k. Na RB6 a RB7 není zapojeno nic.

A k tomu LED displeji. Při multiplexování zůstala svítit jen jedna v pořadí a segmenty A,B,C se spálili. Už jsem si udělal ochranný obvod, který při odběru cca 300mA sníží napětí pro LED displej na polovinu, tak teď při zastavení programu se sice multiplex zastaví, ale svítí jen na 1/2 svitu. Ale to mě mělo napadnout dřív, tak je to fakt moje vina. :blush:

16:45
Ted jsem kábliky zkrátil na 7cm, už to zkrátit nejde. Pořád stejná reakce ICD2
Stepping Target
MPLAB ICD 2 Ready
ICD0116: MPLAB ICD 2 is busy
ICD0116: MPLAB ICD 2 is busy

Předpokládám, že jsi nezapomněl odpojit v MPLABu napájení aplikace? A nejspíš používáš Vdd 5V?
Asi bych doporučil nahradit HCT125 obvodem HC125, ale netvrdím, že to je hlavní příčina. Nejlepší by byla řada AC, ale ta je nesehnatelná. Další příčinou teoreticky může být problém oscilátoru aplikace.
Pro ověření funkce bych na kontaktním poli zapojil sólo nějaký procesor a napájel ho z ICD2. Nejlépe s interním oscilátorem. Třeba 16F819. Nebo si zapoj tu 16F877A s krystalem třeba 10MHz bez displejů apod.

Přečetl jsem si tvůj dodatek, prima…

Tak jsem vyměnil kablíky za jiné, 0.75 CYC a už to chodí, nepíše
ICD0116: MPLAB ICD 2 is busy
a breakpoint se zastavuje, tam kde má.

Moc díky za rady.

Já tam měl taky kdysi frajerskej tenounkej stíněnej kablíček. Nakonec jsem ho musel nahradit slušnými jednotlivými vodiči. Ostatně proto jsem výše lepil tu fotografii.

Přesně tak
Taky jsem měl takový tenký a asi kdybych tam ty pořádný hned, tak jsem možná problém vyřešil už dřív.

Už to chodí jak má a jsem s tím docela spokojenej, až na ten úraz :blush: :open_mouth: