Vezi Muti Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 Probabil ca exprimarea corecta ar fi "nu termina un #define cu ;". Sau? liviu, mars01 nu o luati ca flame, dar depinde de ce a avut in cap cel de a facut compilatorul. exemplu mikroC utilizat de mars, pot sa scriu asta: #define semicolon ; int a=1 semicolon si va promit ca merge compilarea. scuze pt. ... oftopic. Link spre comentariu
mars01 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 (editat) Pai cred ca daca nu ar fi temporizarea de 10 variabila timp ar scadea instantaneu de la 6000 la 0 in fuctie de viteza cu care se executa instructiunile. Cred totusi ca ar fi trebuit sa fie delay 1sec pentru a trece cele 10 minute. Ceva de genu Timp=timp-1 Delay 1sec Until timp=zero De fapt timpul scade cu o unitate odata la 10 ms. Dupa 60 de secunde ajunge la zero. Asta inseamna ca delay trebuie sa fie 100ms pentru 10 minute timp in care ledul sta aprins. 100msX6000=600sec. Eu asta inteleg. Promit ca nu mai postez noaptea. De data aceasta este o greseala. unsigned int timp = 6000; ar trebui sa fie: unsigned int timp = 60000; Motivul este ca initial am vrut ca unitatea de trecere a timpului sa fie 100ms. Apoi m-am razgandit si am ales ca unitatea de trecere a timpului sa fie 10ms. Am modificat prin toate comentariile dar am scapat initializarea variabilei din declaratie. Daca "unitate de trecere a timpului" era 100ms, 6000 * 100ms = 600 000 ms = 600sec = 10minute Daca "unitatea de trecere a timpului" este 10ms. 60000 * 10ms = 600 000ms = 600sec = 10minute Ideea este ca daca lasam "unitatea de trecere a timpului" in 100ms, era foarte posibil ca in varianta a -2-a postata (care este de fapt cea de la care am plecat), cand se apasa butonul in timpul temporizarii, sa ratez o apasare de buton, deoarece apasarea ar fi putut fi in efectuata fix in timpul acelui delay. 100ms este un timp destul de lung si daca apasarea era rapida, nu ar fi fost sesizata. liviu, mars01 nu o luati ca flame, dar depinde de ce a avut in cap cel de a facut compilatorul. exemplu mikroC utilizat de mars, pot sa scriu asta: #define semicolon ; int a=1 semicolon si va promit ca merge compilarea. scuze pt. ... oftopic. De compilat merge, dar cand folosesti efectiv in program ceea ce ai definit prin #define, numai merge ... Functioneaza chestia. Dar va las acum, ma intorc la montajul la care lucrez FPGA-ul ma omoara la lipit ... Editat Ianuarie 24, 2016 de mars01 Link spre comentariu
Liviu M Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 (editat) #define semicolon ; He, he, recunosc, la varianta asta nu m-as fi gandit. Am testat acum si merge si in xc8 si programul cu "semicolon" pe post de ";" se compileaza. Merci, am mai invatat ceva si astazi. Programul care se compileaza: #include <xc.h>#define _XTAL_FREQ 20000000#define semicolon ;/* * */void main(void) { PORTB = 0 semicolon // initializare port B(toate iesirile in low) TRISB = 0 semicolon // port B setat ca iesire while(1) { PORTBbits.RB0 = ~PORTBbits.RB0 semicolon // basculare RB0(isi schimba starea) __delay_ms(1000)semicolon // cu o pauza de 1 secunda }} Editat Ianuarie 24, 2016 de Liviu M Link spre comentariu
mars01 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 Eu nici macar nu m-am prins initial ce vrea sa faca. Dar e o smecherie interesanta. Link spre comentariu
loleksibolek Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 Topic excelent.Bravo celor care contribuie la el! Link spre comentariu
Liviu M Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 (editat) NOT cand vrem sa negam toti bitii (~0000 = ~1111) Colegul nostru cirip mi-a atras atentia ca am o greseala, de fapt corect este: ~0000 = 1111.Multumesc cirip! Editat Ianuarie 24, 2016 de Liviu M Link spre comentariu
iuli09 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 (editat) nu inteleg aceasta linie . Linia precedenta ("timp = timp - 1;") realizeaza practic temporizarea (variabila timp va scadea cu o unitate pentru fiecare 100ms care trec) , atunci de ce mai este nevoie si aceasta intarziere (delay_ms(10)) ? Pai cred ca daca nu ar fi temporizarea de 10 variabila timp ar scadea instantaneu de la 6000 la 0 in fuctie de viteza cu care se executa instructiunile. Pai ...s-ar indeplini conditia din functia "while" (while (timp != 0)) , prin urmare aceasta nu s-ar mai executa si ar trece la urmatoarea linie : "RB0_bit == OFF" . ...sau nu ? Editat Ianuarie 24, 2016 de iuli09 Link spre comentariu
PKP98 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 Salutare! In primul rand vreau sa-l felicit pe @mars01 care scrie "romane" in acest topic doar ca sa intelegem si noi ceva,bravoo ,jos palaria. In al doilea rand as vrea si eu sa stiu cum se conecteaza un atmega sau un pic la PC,de exemplu aTmega8 ,iau un cablu USB ca are 4 fire doua cu tensiunea de 5v si cele doua care raman unde le conectez si cum fac sa trimit codul din PC in aTmega ce program imi trebuie ,ce cablu si cum fac acest lucru,am cautat pe net ,dar nu-mi arata,arata doar proiectul si eventual codul. In programare ma sperie putin partea cu PORTB ,TRISB,si toate cele ,in rest partea cu while ,for,vectori,matrici,pointeri,functii le stiu de la scoala de la informatica ,e chiar simplu sa faci acel LED sa clipeasca,dar e mai complicat cu acele porturi sa le setezi ca in out ,asta din ce am citit mai sus sau poate e complicat ca am citit pentru prima data,poate ma obisnuiesc. Inca odata te felicit ,bravo. Link spre comentariu
cipri_mury Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 (editat) Intr-adevar @mars01 merita toate felicitarile pentru cate scrie in acest topic dar si in altele.Eu il apreciez de mai mult timp pentru cate stie dar si pentru cat ne ajuta pe altii cu toate ca nu este obligat.Si eu doresc sa invat ceva programare asa ca urmaresc cu interes acest topic. Editat Ianuarie 24, 2016 de cipri_mury Link spre comentariu
djvas Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 @PKP88 pentru programarea unui microcontroler ai nevoie de un montaj electronic numit PROGRAMATOR. Nu este suficient un cablu USB. Pentru PIC ar fi PICKIT2 si pentru atmel USBASP (sper sa nu gresesc aici ). Partea cu registrii nu ar trebui sa te sperie daca spui ca cunosti un limbaj de programare. Este destul de simplu... mai reciteste acest topic si eventual vino cu intrebari concrete la ce nu intelegi. Link spre comentariu
PKP98 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 Multumesc pentru raspuns. Am cautat USBASP pe net si am gasit ceva la 20lei ,o fi bun?Si am gasit si schema de conectare de la acea mufa la atmega,acum inteleg.Si ca si program ce imi recomandati. Link spre comentariu
mars01 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 (editat) Si ca sa il completez pe colegul @djvas, este posibil ca dupa ce a fost folosit un programator gen PicKit pentru a incarca un program special numit bootloader intr-un microcontroler PIC (sau AVR sau altul dar cu programatoarele lor) nu va mai fi nevoie de programatorul PicKit si intr-adevar se pot incarca programele direct in PIC cu ajutorul unui simplu convertor de la USB la serial. De fapt, chiar acum imi compilam un program bootloader (l-am modificat ca sa am modulul CCP2 pe pinul RB3 - default este pe pinul RC1) ca sa il incarc intr-o placuta pe care am facut-o mai devreme Si ca sa ma laud, un mic off-topic cu placuta in cauza (am facut niste experiente cu soldermask rosu) : Are 64KB flash, 4KB RAM, frecventa osc 64MHz, PIC18F26K20 si convertor USB la serial CH340. Am facut porturile (de pini, hardware) A, B, C cu pini header galbeni ca sa le diferentiez. E fascinant sa vezi cum se topeste solder paste-ul si se strange pe pad-uri ... Editat Ianuarie 24, 2016 de mars01 Link spre comentariu
GeoMar Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 Multumesc pentru raspuns. Am cautat USBASP pe net si am gasit ceva la 20lei ,o fi bun?Si am gasit si schema de conectare de la acea mufa la atmega,acum inteleg.Si ca si program ce imi recomandati. Da este bun. Dar de ce nu ai pus intrebarea la aria "Atmega" aici se discuta de PIC-uri si mai ales de invatat programare. NU trebuie sa poluam acest topic foarte util incepatorilor in programare cu alte intrebari care nu au legatura cu PIC-urile si programarea lor. Link spre comentariu
riciu Postat Ianuarie 24, 2016 Autor Partajează Postat Ianuarie 24, 2016 bit 2 WDTEN = 0 - se dezactiveaza WATCH-DOG-ul. Asta este un periferic de care nu vreau sa discut aici, este o alta discutie. E suficient sa spun ca daca il activezi atunci procesorul o sa stea intr-un reset continuu daca nu faci ceva in program. Ce ai vrut sa spui cu " daca nu faci ceva in program" ? Link spre comentariu
PKP98 Postat Ianuarie 24, 2016 Partajează Postat Ianuarie 24, 2016 OK ,am inteles. Numai bine si multumesc pentru raspunsuri. 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