costyy86 Postat Aprilie 17, 2016 Partajează Postat Aprilie 17, 2016 Multumesc pentru ajutor. Nu am avut timp sa testez, dar am cumparat intre timp LCD 128x128 cu controler 6963, care este suportat de bascom. La configurarea LCD-ului, pot configura fiecare port DB0-DB7 in parte? sa-i atribui ce pin vreau eu? am incercat ca la LCD alfanumeric dar nu vrea, da eroare. Link spre comentariu
nico_2010 Postat Aprilie 18, 2016 Partajează Postat Aprilie 18, 2016 Nu, nu poti configura portul de date cum vrei tu, ci doar pe cel de comenzi. Link spre comentariu
costyy86 Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 Ok. Am avut ceva timp liber azi si am montat pe breadboard, lcd+ Atmega8. LCD http://www.tme.eu/en/Document/421eeda77f14329cf6e59f81b1699003/RG128128B1-TIW-X.pdf Am incarcat un program de proba, luat de pe help bascom si nu functioneaza, arata numai pixeli aiurea. Atasez o imagine sa vedeti, am cautat cauza si nu o gasesc, lcd este conectat corect, contrastul functioneaza, nu e de la el. Ce parere aveti? ce poate fi? Trebuie ceva librarie pentru LCD? Controler RA6963 $regfile = "m8def.dat" ' specify the used micro$crystal = 8000000 ' used crystal frequency$baud = 19200 ' use baud rate$hwstack = 32 ' default use 32 for the hardware stack$swstack = 10 ' default use 10 for the SW stack$framesize = 40 ' default use 40 for the frame space '-----------------------------------------------------------------' (c) 2001-2008 MCS Electronics' T6963C graphic display support demo 240 * 128'----------------------------------------------------------------- 'The connections of the LCD used in this demo'LCD pin connected to' 1 GND GND'2 GND GND'3 +5V +5V'4 -9V -9V potmeter'5 /WR PORTC.0'6 /RD PORTC.1'7 /CE PORTC.2'8 C/D PORTC.3'9 NC not conneted'10 RESET PORTC.4'11-18 D0-D7 PA'19 FS PORTC.5'20 NC not connected 'First we define that we use a graphic LCD' Only 240*64 supported yetConfig Graphlcd = 128 * 128 , Dataport = Portd , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6'The dataport is the portname that is connected to the data lines of the LCD'The controlport is the portname which pins are used to control the lcd'CE, CD etc. are the pin number of the CONTROLPORT.' For example CE =2 because it is connected to PORTC.2'mode 8 gives 240 / 8 = 30 columns , mode=6 gives 240 / 6 = 40 columns 'Dim variables (y not used)Dim X As Byte , Y As Byte ClsCursor Off Wait 1 Locate 1 , 1 Lcd "MCS Electronics"Locate 2 , 1 : Lcd "T6963c support"Locate 3 , 1 : Lcd "1234567890123456789012345678901234567890"Locate 16 , 1 : Lcd "write this to the lower line" Wait 2 Cls Text End Link spre comentariu
Elison Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 '11-18 D0-D7 PADaca mai sus PA inseamna port A, pinii de date nu sunt conectati corect.Acolo unde este facuta configurarea LCD scrie Dataport=PortD, adica pinii D0-D7 trebuie conectati la portul D. Link spre comentariu
costyy86 Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 Sunt conectati la portul D. Link spre comentariu
Elison Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 (editat) Daca esti sigur ca toate conexiunile sunt corect facute,incearca sa dezactivezi JTAG-ul din fuse-bits.Am vazut ca tensiunea de alimentare pentru LCD trebuie sa fie cuprinsa intre 15,8 si 16,8 V, iar pentru partea logica intre 3 si 5,5V. Editat Aprilie 23, 2016 de Elison Link spre comentariu
costyy86 Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 Am cautat si eu JTAG la atmega8, dar ori nu are,ori este sub alta denumire ca nu gasesc deloc. Link spre comentariu
Elison Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 Trebuie sa folosesti "glcdra6963.lbx" Link spre comentariu
costyy86 Postat Aprilie 23, 2016 Partajează Postat Aprilie 23, 2016 (editat) Am incercat si acela, dar nu are prea mare efect, schimba ceva, dar tot nu intelegi nimic. Am citit ca trebuie modificat si ceva in libraria glcdra6963.lib, mai concret auto-resetu este setat la 100ms,si merge pana la 1mhz, trebuie modificat pentru a functiona la fregventa mai mare, o sa vad cum reusesc sa modific. L.E. Folosesc oscilator intern, nu cred ca este asta o problema. Editat Aprilie 23, 2016 de costyy86 Link spre comentariu
costyy86 Postat Noiembrie 3, 2016 Partajează Postat Noiembrie 3, 2016 (editat) Se poate ca un atmega 328tqfp sa genereze un semnal de 200-220Khz? daca da, cum reusesc sa fac ca eu nu reusesc sa il fac sa scoata nici 10khz,desi am cautat dtalii nu am gasit. In codul de mai jos, umplerea se regleaza din potentiometru, eu vreau din 2 switch, la fiecare apasare de buton sa urce respectiv sa scada cu 10%. Si ultima chestie, ce linii de comanda trebuie sa dau astfel incat atmega sa genereze o frecventa fixa, spre exemplu 5khz, Multumesc anticipat. $regfile = "m328pdef.dat"$crystal = 16000000$hwstack = 40$swstack = 16$framesize = 32 Config Portc.0 = InputConfig Portb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Adc = Single , Prescaler = Auto Start Adc Dim Detc As Word , Detc1 As Word Do Detc = Getadc(0)Detc1 = Detc / 4 Pwm1a = Detc1 LoopEnd Editat Noiembrie 3, 2016 de costyy86 Link spre comentariu
Elison Postat Noiembrie 3, 2016 Partajează Postat Noiembrie 3, 2016 Unul care genereaza semnal dreptunghiular pana la 8MHz gasesti aici. Link spre comentariu
Depanatoru Postat Noiembrie 3, 2016 Partajează Postat Noiembrie 3, 2016 (editat) E o formula care iti spune frecventa maxima PWM in functie de metoda PWM , numarul de biti , prescaler , frecventa ceasului . Din pacate nici o sansa sa obtii frecventa prea mare cu multi biti rezolutie , pentru fast pwm e ceva de genul Fpwm = Fosc / N*256 , unde N e prescalerul si 256 valoarea maxima a registrului ce vrand-nevrand trebuie sa se incrementeaze intr-o perioada de semnal pwm pentru 8 biti rezolutie ( 2^8 valori ) . Pentru putini biti cand nu trebuie sa se incrementeze pana la 256 se poate obtine ceva frecventa mai ridicata dar ordinul de marime e destul de clar ... 8MHz la 1 bit se poate obtine Editat Noiembrie 3, 2016 de Depanatoru Link spre comentariu
nickrvl Postat Decembrie 30, 2016 Partajează Postat Decembrie 30, 2016 Am probleme cu Bascom, plecand de la alta problema am prezentat-o aici: http://www.elforum.info/topic/26646-usbasp/?p=1471516Nu am mai continuat acolo ca sa nu mai poluez topicul respectiv....Am Bascom de multi ani, am avut multe variante instalate insa azi nu mai vrea, am dezinstalat si curatat registrii etc etc de mai multe si am incercat toate variantele pe care le am, am instalat si varianta demo de pe situl Bascom, culmea e ca nici aceasta nu mai merge asa ca in disperare si pana de idei cer ajutor.Ferestra Bascom se deschide totusi intr-un final dar goala, nu ma lasa sa creez nimic nou sau sa deschid fisiere create deja, chiar nu am idee ce sa-i fac... Link spre comentariu
nickrvl Postat Decembrie 30, 2016 Partajează Postat Decembrie 30, 2016 (editat) Si intr-un final am reusit sa-l "repar", am gasit aici: http://electronics598.rssing.com/browser.php?indx=8435866&item=3647 adica asa: Oricum e o ciudatenie ce sa intamplat..... Editat Decembrie 30, 2016 de nickrvl Link spre comentariu
peace Postat Aprilie 27, 2017 Partajează Postat Aprilie 27, 2017 Am si eu o problema cu pwm-ul. Ceea ce vreau este sa setez din doua taste "up" si "down" pwm-ul si sa afisez valoarea de la 0 la 100%. La ce m-am gandit pana acum $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0 Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Pinc.4 = Input Config Pinc.5 = Input Set Portc.4 Set Portc.5 Dim Set_pwm As Single Dim Setpwmstr As Integer Dim Pwm_lcd As String * 5 Air_up Alias Pinc.4 Air_down Alias Pinc.5 Do Home Locate 1 , 13 Lcd "PWM" Locate 2 , 12 Lcd Set_pwm If Air_up = 0 Or Air_down = 0 Then If Air_up = 0 Then Incr Set_pwm If Air_down = 0 Then Decr Set_pwm If Set_pwm = -1 Then Set_pwm = 100 If Set_pwm = 101 Then Set_pwm = 0 If Set_pwm = 255 Then Set_pwm = 100 'Setpwmstr = Str(set_pwm) 'Pwm_lcd = Format(setpwmstr , "000") Waitms 180 End If Select Case Set_pwm Case 10 To 15 : Pwm1a = 40 Case 15 To 20 : Pwm1a = 50 Case 20 To 25 : Pwm1a = 60 Case 25 To 30 : Pwm1a = 70 Case 30 To 35 : Pwm1a = 80 Case 35 To 40 : Pwm1a = 90 Case 40 To 45 : Pwm1a = 100 Case 45 To 50 : Pwm1a = 115 Case 50 To 55 : Pwm1a = 130 Case 55 To 60 : Pwm1a = 140 Case 60 To 65 : Pwm1a = 150 Case 65 To 70 : Pwm1a = 160 Case 70 To 75 : Pwm1a = 170 Case 75 To 80 : Pwm1a = 185 Case 80 To 85 : Pwm1a = 200 Case 85 To 90 : Pwm1a = 215 Case 90 To 95 : Pwm1a = 230 Case 95 To 99 : Pwm1a = 245 Case Is >= 99 : Pwm1a = 255 Case Else : Pwm1a = 0 End Select 'Pwm1b = Pwm1a Loop End dar nu funcioneaza cum mi-as dori si sigur exista si alte variante mult mai simple. Multumesc 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