Vizitator Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 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! Link spre comentariu
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 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 Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 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
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 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 Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 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
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 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 Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 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
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 Am scos integratul, tot la fel face, tensiune 0 indiferent ca e apasat sau nu s1 . Link spre comentariu
Vizitator Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 Am modificat puţin mesajul de deasupra. Uită-te în schema plăcii http://www.ti.com/lit/ug/slau318b/slau318b.pdf la pagina 16. Identifică şi verifică pe placă R34 (47 k) să nu fie întreruptă sau lipsă, C24 (100 nF) să nu fie în scurt şi traseele să aibă continuitate. Link spre comentariu
Vizitator Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 ...indiferent ca e apasat sau nu s1 .S2, cel de lîngă LED-urile roşu/verde, NU S1! Link spre comentariu
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 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 Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 Vorbim de S2, cel de lîngă LED-urile roşu/verde, NU S1! Link spre comentariu
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 Cred ca v-am disperat cu novicitatea mea. Imi pare rau. Link spre comentariu
Vizitator Postat Mai 8, 2012 Partajează Postat Mai 8, 2012 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
adyyo Postat Mai 8, 2012 Autor Partajează Postat Mai 8, 2012 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
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum