PIC16x Interrupt on change exempel

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Vilken debugger?

Om du menar simulatorn så går det.

Step into - kör den instruktion som just är markerad, stannar efteråt
Step over - som ovan fast om aktuell instruktion är ett funktionsanrop körs funktionen och stannar efter return
Step out - Kör koden och stannar efter nästa return
Run - kör kontinuerligt eller stannar vid brytpunkt
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

jo, det du (bearing) nämner känner jag väl till o har använt många ggr för vanlig kod.
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Simulatorn funkar även för interrupt. Om du vill simulera externa interrupt kan du använda dig av Stimulus under Debugger-menyn. Står i hjälpen hur den används. För seriekommunikation verkar det lämpligt att skapa en vågform som ser ut som den verkliga mot serieingången.

Men, din fråga gällde alltså någon hårdvarukopplad debugger, eller?
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Jag menade debuggern som finns i MPLAB (kanske kallas simulator?).

Jag kollade lite snabbt nu på stimulus där. Nytt för mig...
Vad jag förstår så kan man få register påverkade efter vissa tider som man fyller i i tabellen där. Då skulle man kunna fylla i där så det motsvarar seriell-data som kommer in på pinnen.

Är det möjligt att göra det omvända oxå, "spela in" vad som händer på en utgångspinne under tiden programmet körs ?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Jag menade debuggern som finns i MPLAB (kanske kallas simulator?).

Eftersom den faktiskt heter MPSIM så kanske det ju enklast att kalla den för "simulatorn"... :-)

Debugga behöver man inte göra om inte simuleringen går fel, annars finns
det ju inga "buggar" att "debugga"... :-)

För att simulera ett interrupt (och för att testa att ISR'en fungerar) så kan
du alltid manuellt sätta lämplig xxIF flagga. Du kan även manuellt ladda
t.ex RXREG i USART'en med lämpligt värde/tecken innan (eventuellt sätts
RXIF automatiskt då, det vet jag inte). Jag tror inte att du behöver köra
stimulus för det, om man inte har mer komplexa indata.

> ..."spela in" vad som händer på en utgångspinne under tiden programmet körs ?

Ger inte "Trace", "Watch" eller "Logic Analyzer" det du behöver ?
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

MPLAB SIM heter den. (Det här skrev jag till persika, den kanske heter MPSIM, MPLAB SIM står det i menyn)

Jo, det var så jag menade.

View -> Simulator Logic Analyzer

Tillägg: Det kan väl vara bra med en stimulus till usarten för att se om man lagt rätt värden i baud-registret samt att se om programmet hinner med att behandla datan.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

MPSIM, då, det är ju bra att vara överens om vad det heter, så man vet vad man samtalar om.

> Ger inte "Trace", "Watch" eller "Logic Analyzer" det du behöver ?
Jag ska kolla mer på det...

USART, det finns det ingen i 12F675, 16F676, så jag använder timer0 till att ge interrupt 4ggr/ seriell-bit
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Så gjorde jag också, fast med bara en sampling per bit. Använde externt interrupt på första flanken (startbiten), väntade sedan 1,5 bit-period, därefter 1 period/bit.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Visst gåt det att stega. Tajmingen blir helt annorlunda, men du kan testa koden. Testa köra den i MPSIM, sätt en breakpoint i början av din ISR och trigga den sedan med "stimuli"
Skriv svar