Vlad Mihai Postat Septembrie 9, 2012 Partajează Postat Septembrie 9, 2012 Salut, nu vreau să par măgar dar mai am de convertit un cod sursă în hex. Acesta e făcut pentru pic16f877a și din ce am înțeles e similar cu pic16f876A vreau să mi-l compilezi pentru pic16f876a și cu cuarț de 4 MHz, și vreau să adaugi un mesaj de start up dacă se poate. Mesaj”Hello Handsome” . Apreciez gestul mulțumesc. Atașez arhiva cu tot ce trebuie. Link spre comentariu
Vlad Mihai Postat Octombrie 9, 2012 Partajează Postat Octombrie 9, 2012 Salut, poate mă ajută cineva cu o ideea despre cum se foloseşte comparatorul intern al unui pic16f876A ca să compare o tensiune de referinţă cu o tensiune divizată din tensiunea de ieşire a unui boost converter pentru ca apoi să modifice factorul de umplere în funcţie de ce compară pentru a menţine tensiunea setată egală cu cea de ieşire. Link spre comentariu
Vizitator alyfast Postat Octombrie 23, 2012 Partajează Postat Octombrie 23, 2012 Va salut ! Am si eu o problema cu programarea unui PIC 12f675/629. Am folosit winPic si ICProg. Incarc fisierul (hex-ul), ii dau scriere; totul ok. Cand fac verificarea imi da eroare la o anumita adresa si in FLASH e gol, defapt e 000 nu FF iar in EEPROM sunt exact datele care trebuie, deci lipsesc datele din flash. Am atasat niste poze si hex-ul care trebuie scris. Mentionez ca am incarcat un alt hex, folosind aceleasi programe si totul e ok. Programatorul este facut dupa o schema postata aici de colegi (JDM Programmer). Am uitat sa spun ce este defapt : un roger beep (ma rugat un amic sa-i fac asa ceva). Multumesc anticipat, Link spre comentariu
costi002 Postat Octombrie 24, 2012 Partajează Postat Octombrie 24, 2012 de obicei cand citesti 00 unde era ff, inseamna ca pic-ul este in acel moment protejat la citire. Pune pic-ul in circuit si vezi daca merge sau nu. Link spre comentariu
Vizitator alyfast Postat Octombrie 24, 2012 Partajează Postat Octombrie 24, 2012 Multumesc @costi, nu am stiut acest aspect, sunt novice in microcontrolere. Pic-ul a fost pus in montaj (unul extrem de simplu, quart, 2 condensatoare si o rezistenta) dar nu functioneaza; Sunt 7 tonalitati diferite care se schimbau in functie de apasarea unei taste, nu se aude absolut nimic, doar un mic pacanit cand alimentez montajul. Link spre comentariu
Vizitator alyfast Postat Octombrie 24, 2012 Partajează Postat Octombrie 24, 2012 Revin cu noutati. Am programat un 12f675 in capsula normala (nu smd, inainte programasem 12f629 smd) cu winpic, l-am scos din programator, pus pe placa si alimentat : rezultat ok, functiona. Am repetat inca odata operatiunea cu programarea, dar dupa ce s-a terinat programarea i-am dat o citire surpriza, nu a mai functionat. Concluzia care am tras-o eu e ca nu mai trebuie citit dupa ce a fost programat. Doar asa imi functioneaza. Multumesc pentru sprijin. Link spre comentariu
atupi Postat Octombrie 26, 2012 Partajează Postat Octombrie 26, 2012 Salut, sunt un incepator in ale controllerelor si nu am programat niciodata un PIC doar un ATmega odata mai demult. Vreau sa realizez acest capacimetru: http://www.romanblack.com/onesec/CapMeter.htm si nu stiu cum trebuie sa procedez sa scriu acesl HEX in PIC. Am vazut ca exista niste scheme simple pe portul serial ptr programarea PIC-ului insa nu stiu ce sa bifez in softul de scriere. La Atmega stiu ca era vorba de FUSEBITs dar la PIC habar nu am. Imi puteti da niste sfaturi simple si la obiect ? Multumesc ! Link spre comentariu
atupi Postat Octombrie 29, 2012 Partajează Postat Octombrie 29, 2012 Nimeni nu are idee despre cum ar trebui sa procedez ? Link spre comentariu
Vlad Mihai Postat Noiembrie 16, 2012 Partajează Postat Noiembrie 16, 2012 ma chinui sa fac un mic soft de voltmetru cu pic dar am o eroare la compilare, si cred ca e de la compilator pentru ca cu alt cod bun care a fost compilat cu succes pe alt pc la fel face. atasez detalii // LCD module connectionssbit LCD_RS at RA0_bit;sbit LCD_EN at RA1_bit;sbit LCD_D4 at RB4_bit;sbit LCD_D5 at RB5_bit;sbit LCD_D6 at RB6_bit;sbit LCD_D7 at RB7_bit;sbit LCD_RS_Direction at TRISA0_bit;sbit LCD_EN_Direction at TRISA1_bit;sbit LCD_D4_Direction at TRISB4_bit;sbit LCD_D5_Direction at TRISB5_bit;sbit LCD_D6_Direction at TRISB6_bit;sbit LCD_D7_Direction at TRISB7_bit;// End LCD module connectionsunsigned int Tensiune1, Tensiune1_b, Tensiune1_c, Tensiune1_medie;unsigned int Tensiune2, Tensiune2_b, Tensiune2_c, Tensiune2_medie, a, b; unsigned long u;unsigned char ch;void main(){ TRISA = 0xFF; // designate PORTA as input //INTCON = 0; // Disable all interrupts //IRP_bit = 1 ; Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Cmd(_LCD_CLEAR); // Clear display Delay_ms(100); LCD_Out(1,2,"Hello Handsome!"); LCD_Out(2,2,"VoltAmperMeter"); Delay_ms(1500); Lcd_Cmd(_LCD_CLEAR); // Clear display while (1) { for (b ; b < 2; b++) { Lcd_Cmd(_LCD_CLEAR); } // tensiune1 Tensiune1=ADC_read(2); // get ADC value for U from channel 2 delay_ms(30); Tensiune1_b=ADC_read(2); delay_ms(30); Tensiune1_c=ADC_read(2); delay_ms(30); Tensiune1_medie=((Tensiune1_c+Tensiune1_b+Tensiune1)/3); u=(long)Tensiune1_medie*5000; // covert adc reading to milivolts u=u/1023; // 0..1023 -> 0-3500mV ch=u/1000; // extract 10.00 U digit if (ch==0) { LCD_Chr(1,1, 32); // write empty space if digit is 0 } else { LCD_Chr(1,1,48+ch); // write ASCII digit at 1st row, 2nd column } ch=(u/100) %10; // extract 01.00 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('.'); // write '.' at cursor point ch=(u/10) %10; // extract 00.10 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=u %10; // extract 00.01 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('V'); // write 'V' at cursor point //tensiune2 Tensiune2=ADC_read(3); // get ADC value for U from channel 1 delay_ms(30); Tensiune2_b=ADC_read(3); delay_ms(30); Tensiune2_c=ADC_read(3); delay_ms(30); Tensiune2_medie=((Tensiune2_c+Tensiune2_b+Tensiune2)/3); u=(long)Tensiune2_medie*5000; // covert adc reading to milivolts u=u/1023; // 0..1023 -> 0-3500mV ch=u/1000; // extract 10.00 U digit if (ch==0) { LCD_Chr(2,2, 32); // write empty space if digit is 0 } else { LCD_Chr(2,2,48+ch); // write ASCII digit at 1st row, 2nd column } ch=(u/100) %10; // extract 01.00 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('.'); // write '.' at cursor point ch=(u/10) %10; // extract 00.10 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point ch=u %10; // extract 00.01 U digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point LCD_Chr_CP('V'); } Delay_ms(300); // Waits 300ms} Link spre comentariu
Stefan Postat Noiembrie 16, 2012 Partajează Postat Noiembrie 16, 2012 ce pic folosesti? sigur are ADC? Link spre comentariu
Vlad Mihai Postat Noiembrie 16, 2012 Partajează Postat Noiembrie 16, 2012 pic16f628a Link spre comentariu
nico_2010 Postat Noiembrie 16, 2012 Partajează Postat Noiembrie 16, 2012 pic16f628a Nu are ADC, ci doar comparator.Il poti folosi cu modificari de soft pentru conversie analog to digital Link spre comentariu
Vlad Mihai Postat Noiembrie 16, 2012 Partajează Postat Noiembrie 16, 2012 recunosc că m-am uitat doar la o imagine cu pinii lui. . Şi am văzut AN0 etc. . . . . Link spre comentariu
bbogdanmircea Postat Noiembrie 21, 2012 Partajează Postat Noiembrie 21, 2012 Salutare.Am si eu o problema cu cu PIC16F887, toate porturile sunt scoase pe pini.Am pornit PWMurile de pe PORTC la care am conectat un driver LS293D.Pe PORTB am un afisaj de 7 segment pe care afisaj secundele de la 0 la 9...Ce doresc sa mai fac este sa pun pe pinii RA7 ... RA4 4 butoane din care sa incrementez decrementez duty cycle de la cele 2 PWMuri.Am conectat butoanele astfel:de la VDD am tras la pin prin rezistenta de 1 K.De la pin butonul prin apasare trage la masa.Am scris si soft destul de simplu adica daca este apasat RA7 atunci sa incrementeze PWM1 daca este apasat RA6 sa decrementeze etc...Din pacate nu functioneaza...Am pus si un modulas cu leduri pe PORTC ca sa vad cum ies semnalele si am scris cod ca PORTC sa afiseze exact ce citeste PORTA si tot nu merge adica se aprind de aiurea ledurile...Nu stiu ce poate sa fie...m-am enervat aseara si am lasat-o balta...O sa incerc astazi sa citesc butoanele de pe alt port de exemplu de de PORTD, am vazut ca pinii de pe PORTA sunt multi functionali si poate se incurca ceva pe acolo...Daca mai aveti si alte idei despre ce ar putea fi va rog sa postati...Alte mentiuni:-folosesc cuart extern de 20 MHz-ca si programator am Pickit2, daca alimentez din programator imi arata VDD la 4 V dar cred ca e ok ptr nivel HIGH-am masurat si PORTA este tras la masa cand apas pe buton...-E posibil sa fie prea mica rezistenta de 1K sa pun mai mare de 10K la VDD?Alte cauze idei care ar putea sa fie? Link spre comentariu
bbogdanmircea Postat Noiembrie 21, 2012 Partajează Postat Noiembrie 21, 2012 Vreau si eu sa citesc 4 butoane ma ajuta si pe mine cineva pls?///////////////////////////////////////////////////////////////////////////////////////////this routine is to check key2 pressings.//input: none //output: 0 if switch is not pressed. 1 if switch is pressed. /////////////////////////////////////////////////////////////////////////////////////////unsigned char is_sw2_pressed(void){ if (PORTDbits.RD6==0) // is SW1 pressed? { //yes DelayMs(10); // wait 10mS for debounce. if (PORTDbits.RD6==0) // is SW1 still has pressed status after 10mS delay? { // yes, we have key press return 1; } } return 0;// if key is not pressed, return 0}TRISC =0b00000000;TRISB =0b00000000;TRISD =0b11111111;for (;;){ if(is_sw1_pressed()==1) // is key 1 pressed { // yes RC7=1; // turn ON LED1 } if(is_sw2_pressed()==1) // is key 2 pressed { // yes RC7=0; // turn ON LED2 } } } 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