Sari la conținut
ELFORUM - Forumul electronistilor

Putin ajutor cu Texas Instruments Lounchpad


Postări Recomandate

Vizitator

Nu-i nimic, am înţeles ce vroiai să zici.

La condiţia din "if" folosise simbolul "=", care înseamnă atribuire, in loc de "==" care înseamnă comparaţie.

 

De data asta a avut noroc pentru că nu se putea compila. Dacă în loc de BIT3 ar fi fost un nume de variabilă, atunci programul s-ar fi putut compila şi rula , dar condiţia din "if" ar fi fost egală cu valoarea atribuită iar valoarea variabilei ar fi fost suprascrisă. În funcţie de setări, unele compilatoare emit un warning în astfel de situaţii dar nu e obligatoriu. Cănd ai programe mari, cu logică complicată, un "=" în loc de "==" îţi poate transforma totul într-un adevărat coşmar.

E puternic C-ul, dar e păcătos rău! :sparge:

Link spre comentariu
  • Răspunsuri 155
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Multumesc RoGeorge pentru explicatii si pentru exemplul de cod dat. Am compilat codul dat, dar nu functioneaza. Amandoua LED-urile stau aprinse incontinuu. Eu folosesc msp430g2553 si am inlocuit in program cu biblioteca aferenta, dar nu cred ca e asta motivul pentru care nu functioneaza. Incerc acum sa imi dau seama care este problema.

Link spre comentariu
Vizitator

Asta înseamnă că vede tot timpul 0 logic pe P1.3La mine, cu G2231, merge.Ia TOT exemplul dat, FĂRĂ alte resturi rămase din încercările anterioare. Pe urmă schimbă numele fişierului header din "msp430g2231.h" în "msp430g2553.h" şi apoi rulează.Dacă tot nu merge, du-te în debugger, pune pauză şi rulează pas cu pas, folosind F5 (Step into) în loc de Run. Aşa poţi vedea ce se întâmplă după fiecare instrucţiune şi pe unde o ia programul.

Link spre comentariu

Am inceput un proiect nou, copiat tot exemplul, inlocuit header-ul, rulat pas cu pas cu step into. Se aprinde LED-ul verde, apoi cand intra in if, LED-ul verde ramane aprins, cand trece la "P1OUT |= LED_ROSU" ramane in continuare aprins LED-ul verde iar la urmatorul pas se intoarce la "if (!(P1IN & BUTON_S2))" si se aprinde si cel rosu. Dupa asta ori de cate ori apas step into, basculeaza intre prima si a doua linie din if, LED-urile ramanand amandoua aprinse, ca si cum ar fi apasat butonul...L.E. Am verificat butonul cu ap. de masura si e ok, nu e blocat pe inchis.

Link spre comentariu
Vizitator

Pune voltmetrul între GND şi pinul 5 de la G2553. Măsoară chiar pe pin. Pinul 5 este în dreptul scrisului "P1.3 (S2)".Ar trebui să ai aproximativ 3.5 Vcc, iar când apeşi S2 tensiunea devine 0 Vcc.Ce tensiuni ai găsit?

Link spre comentariu

Voltmetrul indica 0, si cand apas s2 si cand nu e apasat. Cand ating cu tasta + pinul 5, LED-ul rosu scade in intensitate, iar cand pun si tasta - pe GND revine la intensitate maxima. Daca ating de 2-3 ori GND cu tasta, se stinge LED-ul rosu apoi se aprinde...

Link spre comentariu
Vizitator

NU MAI BĂGA + SAU GND PRIN MONTAJ!!!Opreste alimentarea, scoate integratul din soclu, alimentează şi masoară din nou, fără integrat, pe pinul 5 de la soclu.Ce numeşti tastă? Sonda de la aparatul de măsură?

Link spre comentariu

Am pus programul cu care a venit preprogramat MCU, cel cu temperatura interna, si merge fara pb, cand apas S1 se opresc din clipit cele 2 LED-uri si incepe sa citeasca temperatura interna. Tastele sunt cele 2 fire cu varf metalic, cu care masori. Am gresit pt. ca am vrut sa masor direct tensiunea, cu MCU pe placa, dar nu am stiut ca nu e bine sa fac asta :nas:Scuze, am scris eu gresit, S2 vroiam sa scriu.L.E. Nu am pe placa R34 si C24. Sunt pad-urile, inscriptiile, dar nu sunt componentele.

Link spre comentariu
Vizitator

Am impresia că lipseşte R34 sau e întreruptă.Fără integrat, fără S2 apăsat şi cu placa alimentată trebuie să ai cam 3.5 V pe pinul 5 al soclului.Dacă e aşa atunci modificăm programul ca să activăm PULL UP RESISTOR pe P1.3

Link spre comentariu

Deci trebuie sa mai adaug:

 

#include "msp430g2553.h"

#define LED_ROSU BIT0

#define LED_VERDE BIT6

#define __MSP430_HAS_PORT1_R__

#define BUTON_REN P1REN

#define BUTON_S2 BIT3

 

void main(void) {

 

WDTCTL = WDTPW + WDTHOLD; //Stop watchdog timer

 

P1DIR = LED_VERDE | LED_ROSU; //Configureaza pinii P1.0 si P1.6 ca iesiri (restul ca intrari)

P1OUT = LED_VERDE; //Aprinde LED-ul verde, de control, stinge restul

BUTON_REN |= BUTON_S2;

while(1) {

 

if (!(P1IN & BUTON_S2)) //daca butonul S2 e apasat (P1.3 = 0 inseamna apasat)

P1OUT |= LED_ROSU; //atunci aprinde LED-ul rosu (fara sa umble la LED-ul verde)

else

P1OUT &= ~LED_ROSU; //altfel stinge LED-ul rosu (fara sa umble la LED-ul verde)

}

}

 

Am incercat asa dar tot nu merge.

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