Vizitator jewelia Postat Martie 11, 2009 Partajează Postat Martie 11, 2009 Buna!Va deranjez si eu cu o intrebare naiva de incepator. Pana acum am mai lucrat doar putin cu PIC-uri sub MPLab iar acum trebuie sa invat programarea uC Atmel sub BASCOM. In exemplele intalnite de mine, in cazul in care se doreste a se transmite ceva(nu are importanta ce) pe seriala am observat ca s-a setat doar rata de transfer ($baud = 19200, de ex) si se transmitea 1bit start, 8biti date, fara paritate, 1bit stop. Acum, intrebarea mea este: Daca pentru o anumita aplicatie as avea nevoie de 9b date sau de 1bit de paritate, ce fac? Exista setari p care nu le cunosc? Link spre comentariu
Laci Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 In primul rand setezi in microcontroller registri respectiv, ca in BASCOM este definit un macro ala-i altceva, daca vrei alte setari scrii direct in registrii respectiv, gasesti in pdf.Al 2-lea rand iti recomand sa treci pe C in loc de basic. Link spre comentariu
danzup Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 Normal ca nu stii tu .Exista un buton numit HELP !------------------------------------------------------------------------------------SyntaxSEROUT var , bts , port , pin, baud , parity , dbits , sbitsRemarksWhile the OPEN and CLOSE statements can be used for software UARTS, they do not permit to use the same pin for input and output. The settings used when opened the communication channel can also not be changed at run time.The SERIN and SEROUT statements are dynamic software UART routines to perform input and output. You can use them on the same pin for example send some data with SEROUT and get back an answer using SERIN.Since the SERIN and SEROUT routines can use any pin and can use different parameter values, the code size of these routines is larger.Parameter DescriptionVar A variable which content is send through the UART. A constant can NOT be used.Bts The number of bytes to receive. String variables will wait for a return (ASCII 13). There is no check if the variable you assign is big enough to hold the result.Port The name of the port to use. This must be a letter like A for portA. Pin The pin number you want to use of the port. This must be in the range from 0-7.Baud The baud rate you want to use. For example 19200.Parity A number that codes the parity. 0= NONE, 1 = EVEN, 2 = ODDDbits The number of data bits. Use 7 or 8.Sbits The number of stop bits. 1 to 2. The use of SEROUT will create an internal variable named ___SER_BAUD. This is a LONG variable. It is important that you specify the correct crystal value with $CRYSTAL so the correct calculation can be made for the specified baud rate.Note that ___SER_BAUD will not hold the passed baud rate but will hold the bit delay used internal.Since the SW UART is dynamic you can change all the params at run time. For example you can store the baud rate in a variable and pass this variable to the SEROUT routine.Your code could change the baud rate under user control this way.It is important to realize that software timing is used for the bit timing. Any interrupt that occurs during SERIN or SEROUT will delay the transmission. Disable interrupts while you use SERIN or SEROUT.The SEROUT will use the pin in Open Collector mode. This means that you can connect several AVR chips and poll the ? bus? with the SERIN statement.Example'----------------------------------------------------------------------' serin_out.bas' © 2004 MCS Electronics' demonstration of DYNAMIC software UART'----------------------------------------------------------------------'tip : Also look at OPEN and CLOSE'tell the compiler which XTAL was used$crystal = 4000000'tell the compiler which chip we use$regfile = "2313def.dat"'some variables we will useDim S As String * 10Dim Mybaud As Long'when you pass the baud rate with a variable, make sure you dimesion it as a LONGMybaud = 19200Do 'first get some data Serin S , 0 , D , 0 , Mybaud , 0 , 8 , 1 'now send it Serout S , 0 , D , 1 , Mybaud , 0 , 8 , 1 ' ^ 1 stop bit ' ^---- 8 data bits ' ^------ even parity (0=N, 1 = E, 2=O) ' ^-------------- baud rate ' ^-------------------- pin number ' ^----------------------- port so PORTA.0 and PORTA.1 are used ' ^--------------------------- for strings pass 0 ' ^-------------------------------- variable Wait 1LoopEnd'because the baud rate is passed with a variable in theis example, you could change it under user control'for example check some DIP switches and change the variable mybaud---------------------------------------------------------------------------------Eu nu as trece la C ! Absolut totul ce faci in C faci si in Bascom !Ti-o spune cineva care a renuntat la C pentru Bascom . Link spre comentariu
Laci Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 "Eu nu as trece la C ! Absolut totul ce faci in C faci si in Bascom !Ti-o spune cineva care a renuntat la C pentru Bascom ."1.) Cat timp ai lucrat in C?2.) Vrei sa facem o comparatie? Imi dai un exemplu si il portez in C si compilam vedem diferenta, care iese mai mic. Eu ma-si baga intro dezbatare C vs. Basic Din cate stiu Bascom este numai IDE, limbajul este basic Link spre comentariu
danzup Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 "Eu nu as trece la C ! Absolut totul ce faci in C faci si in Bascom !Ti-o spune cineva care a renuntat la C pentru Bascom ."1.) Cat timp ai lucrat in C?2.) Vrei sa facem o comparatie? Imi dai un exemplu si il portez in C si compilam vedem diferenta, care iese mai mic. Eu ma-si baga intro dezbatare C vs. Basic Din cate stiu Bascom este numai IDE, limbajul este basicOk !Fa in C si comparam ! Link spre comentariu
Laci Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 Eu am spus ca ma bag intro comparatie serioasa nu bascaleala din asta, ca pui un cod de 600 linii si sal portez, asa pot sa-ti aduc si eu un project si hai fa in basic.Descrii o aplicatie relativ simpla si il facem amandoi, sunt si eu curios care ar fii diferentele reale, fara functii din librarii statice! Link spre comentariu
danzup Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 Nu a fost bascalie .Proiectul ala cu atmega32 si rtl8019 scris in C folosind stiva TCP/IP scrisa in C ( Nut/OS )a iesit cu 2 K mai mare ca proiectul ala din linkul dat scris in Bascom , desi am facut stripping la tot ce nu aveam nevoie ,asta prin anul 2004 , nu mai stiu acum daca exista versiuni mai noi si optimizate de nut/os . Pe de alta parte acum 6 ani am scris un proiect in C care a iesit mai mic cu 0.5K fata de acelasi proiect scris ulterior in Bascom. Nu este o regula ca in C iese mai mic ! Numai in assembler va iesi poate , cel mai mic .In fine , nu are rost sa polemizam ! Mult noroc ! Link spre comentariu
Laci Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 Ma rog, asta vad ca nu are rost.Fiecare face in ce vrea, probabil in basic se scrie codul pentru industria automotive, aplicatii de putere etc. probabil ca firmele mai mari cauta numai programatori embedded basic...Din C a fost dezvoltat C++ -> C#, C fiind mai low-level decat basic sau pascal poti sa obtii cod mai optimizat.Bafta. Link spre comentariu
srdjan Postat Martie 12, 2009 Partajează Postat Martie 12, 2009 nu legat de uC dar eu de recent am trecut de la limbaje basic la limbaje C & Jpro si contra cate vrei... dar elementar pentru incepatori e limbajul mai natural a lui basic pana intelege ce e programareaulterior daca se poate adapta si migra spre C e recomandat sa o faca. in primul rand face economie de tastatura 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