ratza Postat August 13, 2009 Partajează Postat August 13, 2009 Nimic nu e gratis.Din p?cate e groaznic de adev?rat. Orice solu?ie e un compromis, dar ca vitez? de execu?ie asta e cea mai rapid?. Eu am avut nevoie de un sinus extrem de precis, din Hz în Hz, începînd de la 0 pîn? la 200Hz, realizat din 256 de e?antioane ?i eram limitat groaznic de timp, sistemul trebuind s? mai fac? o gr?mad? de alte porc?rii. Nici nu mai vreau s?-mi aduc aminte de ce probleme de jitter am avut ?i cum mi-am stors creierii încercînd s? g?sesc gre?elile din cod f?r? debugger, doar cu un am?rît de osciloscop. Detest programarea. Link spre comentariu
NumLock Postat August 13, 2009 Autor Partajează Postat August 13, 2009 Îmi spui acum cum fac asta recursiv (cu detalii) ?Ar fi fost politicos sa bagi si un "te rog" , dar hai sa zicem ...Îmi cer scuze, m? gr?beam ?i am uitat ?i cuvintele magice . Merci de informa?ii (?i ?ie ?i lui @ratza) . O s? încerc algoritmul în Excel a?a cum ai zis. Link spre comentariu
NumLock Postat August 26, 2009 Autor Partajează Postat August 26, 2009 Salut, Am nevoie de pu?in ajutor ?i de explica?ii. Nu ?tiu dac? am 'tradus' corect codul din acest document PDF, pentru conectarea unui microcontroler PIC la un MT8880/CM8880 (PIC Program I Listing: DTMF Dialing). Cred c? nu am în?eles 100% ace?ti pa?i: (1) Put the data pins into output mode - movlw 0; movwf TRISA (2) Write the data to the bus - scriu în primul nybble al PORTB un numar (3) Set up RS0: 0 = write data; 1 = write instructions - ? (4) Clear the RW bit to request a write - bcf PORTB, 5 (5) Clear CS to activate the CM8880 - bcf PORTB, 6 (6) Set CS to terminate the write operation and deactivate the CM8880 -bsf PORTB, 6 generate: bsf STATUS, RP0 movlw .255 ; All bits high to deselect MT8880 movwf TRISB movlw talk ; Set port to output movwf TRISB call delay ; Wait for things to settle down movlw dials ; Set control register for dialing movwf cntrl call set_controls ; Write settings to control registers clrf digit ; Clear the digit counter to 0 movf digit, W ; Now, put the digit number into W call dial_digit ; Dial the digit stored in W hold: bsf STATUS, RP0 ; Select Bank1 movlw listen movwf TRISB ; Set port to input call get_status bsf STATUS, RP0 btfss stats, xm_rdy ; If transmitter's not ready, wait here goto hold movlw talk ; Restore port to output. movwf TRISB goto generate ; Generates a brief delay to allow MT8880 to get settled after power-on.delay: movlw .64 movwf temploop nopdecfsz temp, f ; Loop 257 times goto loop return ; Return; Accepts data to be written to the pair of four-bit control registers in; the variable "cntrl." Data for register 1 must be in the lower nybble;; register 2 in the upper nybble.set_controls: movf cntrl, W ; Get the control value andlw b'00001111' ; Strip upper four bits iorlw b'00011000' ; Set register-select, clear CS, set RS2. movwf PORTB ; Write to output, (CS low). bsf PORTB, CS ; Deselect to complete the 1st write. swapf cntrl, W ; Get nybble-swapped control value. andlw b'00001111' ; Strip upper four bits iorlw b'00010000' ; Set register-select, clear CS. movwf PORTB ; Write to output, (CS low). bsf PORTB, CS ; Deselect to complete the 2nd write. return; Dials a DTMF digit represented by the lower four bits of the; W register. Converts a value of "0" to "10" in accordance with; the DTMF encoding scheme.dial_digit: andlw .15 ; Strip MSB, update z flag in the process movf W, 1 ; If w=0, change it to 10 for proper.. btfss STATUS, Z ; ..DTMF encoding movlw .10 movwf PORTB ; Write to output BSF PORTB, CS ; Terminate the write return ; Gets the contents of the MT8880's status register and stores 'em; to the variable "stats." The port TRIS (data direction) must; be set to input before calling this routine.get_status: bcf STATUS, RP0 ; Select Bank0 bsf PORTB, RW ; Set to read bsf PORTB, RS ; Select the status register bcf PORTB, CS ; Activate chip movlw .15 ; Bit mask for 4-bit data movlw stats movf stats, W andlw PORTB ; Get lower 4 lsbs of rb (data) bsf PORTB, CS ; Deselect chip returnNuma bine. Link spre comentariu
NumLock Postat August 29, 2009 Autor Partajează Postat August 29, 2009 +Care este diferenta intre PIC16F84A-04/P - PIC16F84A-20/P ? Frecventa (4MHz - 20Mhz)? Link spre comentariu
francezu Postat August 29, 2009 Partajează Postat August 29, 2009 Da,este vorba de frecventa maxima de lucru.Vezi datasheet pagina 85. 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