Sari la conținut
ELFORUM - Forumul electronistilor

probleme program


wwwglro

Postări Recomandate

In corpul functiei intrerupere nu se initializeaza timere...(asa stiu eu din exemplele studiate)

Acest lucru este fals. In corpul functiei intrerupere se poate face orice lucru, inclusiv stergerea flagurilor care au provocat intreruperea(asta ca sa raspund si lui Liviu), care este obligatorie daca este prevazuta in documentatie deoarece la iesire din functia de intrerupere se testeaza din nou flagurile si atunci daca nu este sters se reia functia de intrerupere.
Link spre comentariu
  • Răspunsuri 29
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • wwwglro

    10

  • puiu

    10

  • Liviu M

    7

Top autori în acest subiect

Eu stiu ca in ccs registrul rtcc se incarca in main

In cod incarci rtcc o singura data, la intrarea in main, si gata. Esti sigur ca css adaga codul necesar initializarii permanente? Ca daca nu, timerul numara incepand cu valoarea scrisa de tine pana ajunge la 255; cand primeste un nou clock, o ia de la 0 si numara iarasi pana la 255, dupa care o ia de la zero... adica numara de fiecare data de 255 de ori.

Tinand cont ca la tine diferenta nu e prea mare, sunt sanse sa nu te prinzi ca ai alti timpi decat cei doriti. Ma rog, era o parere. Daca esti sigur ca faci bine, lasa-l cum e.

@puiu: eu am sters de fiecare data flagurile si n-am fost sigur daca chiar trebuie sau nu; cum am inteles ca programul de fata merge, am presupus ca nu trebuie, asa ca i-am recomandat operatiunea respectiva ca "good practice".

Link spre comentariu

1.Este vorba de biti din PIRx care trebuie (must be cleared in software).2. Poti sa incerci sa nu-i pui pe zero acesti biti si sa vezi cu ajutorul simulatorului ce se intampla. Rutina de intrerupere se va rula la nesfarsit.3. Deci va trebui si pentru o singur tip de intrerupere va trebui sa pui pe zero acea intrerupere.4. Eu lucrez in ASM si nu am auzit de intreruperi interne de tip rollover in care nu poti sa initializezi registri. Ar trebui sa ne dai un exemplu (sau este vorba tot de ccs ?)

Link spre comentariu

1. Ai dreptate ca pentru TMR0 bitul respectiv este in registrul special INTCON dar cu aceasi observatie (must be cleared in software). De regula intreruperile se selecteaza cu biti XXIE si se trateaza cu biti XXIF (must be cleared in software). Nu am sa fac toata istoria aici, (a intreruperilor). Pentru cine doreste poate data shetul acestui PIC sa ii raspunda. Il gaseste la http://ww1.microchip.com/downloads/en/D ... 41190G.pdf.

2. Deci si pentru TMR0 este la fel ca pentru TMR1 din punct de vedere al intreruperilor si este la fel pentru toate intreruperile din aceasi familie de PIC-uri.

3. Avand in vedere ca nu sunt vorbitor de limba engleza astep un exemplu de intrerupere interna de tip "rollover". Cum este tradus acest termen?

Link spre comentariu

1. Esti sigur ca simularea din Proteus este exacta?2. Eu doar ti-am sugerat ca sa lucrezi cu simulatorul dat de costructor, in care poti sa simulezi inclusiv ce ai in diversi registri. De fapt tu vrei un program care sa merga bine in Proteus, nu conteaza cum va merge in PIC?

Link spre comentariu

Desi pentru simularea functionarii PIC-ului MPLAB e ok, Proteus are avantajul ca-ti poate simula un sistem complet. Din cate stiu eu, sunt unii stimuli care nu se pot genera in MPLAB (sau se pot genera foarte greu) - de exemplu intrarile analoge.

@wwwglro: daca ai ccs-ul instalat si vrei sa testezi un al doilea simulator, poti sa-ti instalezi mplab, sa-l configurezi sa foloseasca compilatorul ccs pentru proiectul respectiv, sa-i spui unde sunt executabilele de la ccs si mai departe poti edita, compila si simula direct din mplab.

Cel putin asa cred, ca eu folosesc picc de la Hi-Tech. , da' am vazut si ccs printre compilatoarele suportate de mplab.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări