Ionut Remus Postat Ianuarie 18, 2013 Partajează Postat Ianuarie 18, 2013 Vreau sa folosesc acest model de encoder cu un atmega si nu-i gasesc nicicum datasheetul! ma poate ajuta cineva cum trebuie sa fac softul sau ce specificatii are macar encoderul? L-am montat pe A si B cu un condesator la masa si cate o rezistenta de 10k la +5V iar C se duce si el la masa. Acum ne avand datasheet presupun ca am gresit undeva si probabil nu sunt pinii respectivi care am crezut eu ca sunt A;B;C si nici nu stiu cum sa-l testez sa vad daca e ok cum am safut sau nu!Poate cineva sa-mi spuna mai multe detalii despre acest encoder cat si cum sa ii fac softul? (macar sa am un "start" ca restul ma mai descurc eu ) Link spre comentariu
nico_2010 Postat Ianuarie 18, 2013 Partajează Postat Ianuarie 18, 2013 Un inceput poate fi gasit aici: - http://www.timmestein.nl/index.php?page=interface-a-rotary-encoder-with-atmel-avr-interrupt-style - http://stackoverflow.com/questions/34735/using-a-rotary-encoder-with-avr-micro-controller - http://www.circuitsathome.com/mcu/reading-rotary-encoder-on-arduino Link spre comentariu
Ionut Remus Postat Ianuarie 18, 2013 Autor Partajează Postat Ianuarie 18, 2013 Multumesc ! am sa ma uit peste ele Link spre comentariu
ywar2 Postat Ianuarie 18, 2013 Partajează Postat Ianuarie 18, 2013 Salut, Am folosit un asemenea encoder intr-un proiect si a mers fara probleme. Pinul din mijloc se conecteaza la masa , iar cei de pe margine fara rezistente la pinii A si B. Nu stiu daca te ajuta dar iata varianta simplificata a programului meu. Succes !!! '*******************************************************************************' RCI2950DX CPU Experimental Board'' YO7FWS'*******************************************************************************$regfile = "M8def.dat"$crystal = 4000000'setari afisaj LCDConfig Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0Config Lcd = 16 * 2Deflcdchar 0 , 31 , 16 , 16 , 16 , 16 , 16 , 16 , 31 ' replace ? with number (0-7)Deflcdchar 1 , 31 , 32 , 32 , 32 , 32 , 32 , 32 , 31 ' replace ? with number (0-7)Deflcdchar 2 , 31 , 1 , 1 , 1 , 1 , 1 , 1 , 31 ' replace ? with number (0-7)Deflcdchar 4 , 31 , 32 , 31 , 31 , 31 , 31 , 32 , 31 ' replace ? with number (0-7)Deflcdchar 3 , 31 , 16 , 23 , 23 , 23 , 23 , 16 , 31 ' replace ? with number (0-7)Deflcdchar 5 , 31 , 1 , 29 , 29 , 29 , 29 , 1 , 31 ' replace ? with number (0-7)Dim Control8 As ByteDim Control16 As WordDim Freq As Long 'frecventa de lucruDim N1 As WordDim N2 As WordDim N3 As SingleDim Tune As Bit 'indica daca s-a schimbat frecventa sau nuDim Freqlcd As String * 6 'Dim Freq_mem As Eram Long 'memoreaza frecventa in memoria ERAMDim S As String * 10'*******************************************************************************'encoderConfig Portd.2 = InputConfig Portd.3 = InputA Alias Pind.2 'upB Alias Pind.3 'down'MC145162Config Portd.5 = OutputConfig Portd.6 = OutputConfig Portd.7 = OutputClk Alias Portd.5Dat Alias Portd.6Enb Alias Portd.7Portd = &B00001100'*******************************************************************************'rutineDeclare Sub EcranDeclare Sub Init_pllDeclare Sub Set_pllDeclare Sub Freq2dataConfig Int0 = FallingConst Debouncetime = 1 'Set BOn Int0 GetencoderEnable InterruptsEnable Int0'*******************************************************************************' PROGRAMUL'******************************************************************************* Cls Locate 1 , 1 Lcd " RCI2950DX TEST " Freq = Freq_mem If Freq < 240000 Or Freq > 320000 Then Freq = 285000 'valabil la prima pornire Call Ecran Call Freq2data Call Init_pll Call Set_pll Tune = 0Loop: 'daca frecventa s-a schimbat atunci 'afisez frecventa, 'setez PLL, 'salvez in memorie frecventa If Tune = 1 Then Call Ecran Freq_mem = Freq Call Freq2data Call Init_pll Call Set_pll Tune = 0 End IfGoto Loop'*******************************************************************************' Freq2data'*******************************************************************************Sub Freq2data '..........End Sub'*******************************************************************************' init PLL'*******************************************************************************Sub Init_pll '..........End Sub'*******************************************************************************' Set PLL'*******************************************************************************Sub Set_pll '..........End Sub'*******************************************************************************' ENCODER'*******************************************************************************Getencoder: Waitms Debouncetime If A = 0 Then If B = 0 Then Freq = Freq + 1 Else Freq = Freq - 1 End If End If Gifr = 64 Tune = 1Return'*******************************************************************************' ECRAN'*******************************************************************************Sub Ecran: Freqlcd = Str(freq) Freqlcd = Format(freqlcd , "00000.0") Locate 2 , 1 Lcd Freqlcd Lcd " KHz"End Sub'*******************************************************************************' END'******************************************************************************* 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