Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

MSP430 prograMMeerimine

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    #31
    Vs: MSP430 prograMMeerimine

    Hei, et keegi minu probleemiga ei vaevleks siin, vajalik kood on mul olemas. Käisin sõbra juures ja to kirjutas 1,5h puhtale lehele uue koodi valmis. Võib teema lukku panna!
    msn: pois11@hotmail.com

    Comment


      #32
      Vs: MSP430 prograMMeerimine

      Just, selle asemel et C keele õpik kätte võtta läheb eesti mees ilusa ilmaga välja, võtab mõned vägijoogid ja keerab bemmi ümber puu.
      Üldiselt on kasulik olla tuttav enne proset ajalooga elektroonikast, 74 seeria kividest, multiplekserid, siis instruktsioonid, siis asm ja siis C.
      Ok kõike ei pea detailselt teadma aga vajalik.
      Modelleerimises ja tootmises kehtivad:
      1. Avariikindel vooluring lühistab kõik teised.
      2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

      Comment


        #33
        Vs: MSP430 prograMMeerimine

        Esmalt postitatud pois11 poolt Vaata postitust
        Hei, et keegi minu probleemiga ei vaevleks siin, vajalik kood on mul olemas. Käisin sõbra juures ja to kirjutas 1,5h puhtale lehele uue koodi valmis. Võib teema lukku panna!
        Veidi teemast kõrvale, aga:
        Miks lukku? Pealkiri on ju selline, et iga MSP430 huviline alustaks just siit.

        Kas said teada ka, miks Sinu koostatud kood tõrkus?

        Comment


          #34
          Vs: MSP430 prograMMeerimine

          Esmalt postitatud M.L poolt Vaata postitust
          Veidi teemast kõrvale, aga:
          Miks lukku? Pealkiri on ju selline, et iga MSP430 huviline alustaks just siit.
          Kas just MSP430 on ainus ja õige mikro aga nad on kõik üsna sarnased kui
          programmi tasemelt vaadata.

          Lukku ja sulgu paistab olevat levinud lähenemine.

          Avastasin et probleem eepromi programmeerimisest on ka suletud.
          Kunagi 1980ndatel sai nendega tegeletud ja programmaatoreid ehitatud.
          Kui kasutada USB-RS232 üleminekut siis

          võiks täitsa sobida.
          Aga niisama, ainult oma lõbuks, ei hakkaks ka proovima.

          Pois11 oleks võinud selle ISE progemise ka selgeks saada aga ega õppima sundida kedagi ei saa.
          Aga kui see asi tal töötab siis varsti näeme videot.

          Esmalt postitatud murphy poolt Vaata postitust
          Üldiselt on kasulik olla tuttav enne proset ajalooga elektroonikast, 74 seeria kividest, multiplekserid, siis instruktsioonid, siis asm ja siis C.
          lahendusest vast sokutaks sinna instruktsioonide ette vahele ka plokkskeemi sellest mida on vaja teha.
          Sellise oma sõnadega kirjelduse. Ja siis hakkaks "progema".

          Comment


            #35
            Vs: MSP430 prograMMeerimine

            Kui ma nüüd muud siit MSP430 programmeerimise juurest ei õppinud siis seda, et iga mees jäägu ikka oma liistude juurde. Ma olen küll 12 aastat töötanud firmas kust tuleb seadmeid häälestada/remontida või uusi trükkplaate projekteerida. Tinutuskolb on iga päev soe aga mingi kiibile koodi kirjutamine nõuab palju aega ja õppimist, et see vaev ei tasu ära.
            Programmeerimine on sama kui naine paluks mul sokid valmis kududa. Igapäeva töö ja pere kõrval ei ole aega arvuti kastis istuda.
            msn: pois11@hotmail.com

            Comment


              #36
              Vs: MSP430 prograMMeerimine

              Esmalt postitatud pois11 poolt Vaata postitust
              Ma olen küll 12 aastat töötanud firmas kust tuleb seadmeid häälestada/remontida või uusi trükkplaate projekteerida.
              Alguses, 10-20 aastat, on ikka raske aga siis hakkab midagi ka välja tulema.

              Trükkplaadi projekteerimine on üsna sarnane programmi kirjutamisega.
              Mõlemal juhul tuleb moodulid sobivalt üksteise kõrvale paigutada ja ühendada.
              Ainult et ühel juhul juhtmetega, teisel tähelise tekstiga.
              Seadme loogikaskeem on kasutuseks sobiv mõlemal juhul.

              Laste õpetamine on natuke kergem - nemad niipalju ei hädalda.
              3-4 tundi ja hakkab juba tulema.

              Comment


                #37
                Vs: MSP430 prograMMeerimine

                Vikan koodi niisama ülesse. Kunagi ehk endalgi hea siit kopeerida.
                Koodi läks vaja selles teemas aretatud süsteemile: http://www.elfafoorum.eu/threads/71290-Skeemi-küsimus

                Kood:
                #include <msp430.h>
                
                /*
                 * main.c
                 */
                #define BUTTON_1  BIT3
                #define BUTTON_2  BIT4
                #define RELAY_1   BIT0          //pruun juhe BIT0
                #define RELAY_2   BIT1          //Valge juhe BIT1
                #define RELAY_3   BIT2          //Sinine juhe BIT2
                /***************************************************************************************************
                 *         Global Variable section                                         *
                 ***************************************************************************************************/
                unsigned int timer1 = 0;
                static const unsigned int counter = 6;        // Aeg kui kaua nuppu all hoitakse
                volatile unsigned char but1_en = 0;
                volatile unsigned char but2_en = 0;
                volatile unsigned int but1_chk_cnt = 0;   // Kontrolli nupu 1 olekut
                volatile unsigned int but2_chk_cnt = 0;   // Kontrolli nupu 2 olekut
                volatile unsigned char activate_sms = 0;  // SMSi saatmise jada
                volatile unsigned char activate_second = 0;  // Teine jada
                //Function prototypes
                void write(char relays);
                void activate_relay(unsigned char relay, unsigned long on_time);
                void wait(unsigned long time);
                void Send_Messages(void);
                int main(void) {
                 WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
                 BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0;
                 if (CALBC1_16MHZ != 0xFF) {
                  /* Adjust this accordingly to your VCC rise time */
                  __delay_cycles(100000);
                  /* Follow recommended flow. First, clear all DCOx and MODx bits. Then
                   * apply new RSELx values. Finally, apply new DCOx and MODx bit values.
                   */
                  DCOCTL = 0;
                  BCSCTL1 = CALBC1_16MHZ; /* Set DCO to 16MHz */
                  DCOCTL = CALDCO_16MHZ;
                 }
                 BCSCTL1 |= XT2OFF + DIVA_0;
                 BCSCTL3 = XT2S_0 + LFXT1S_2 + XCAP_1;
                 // Seadistame sisendid ja väljundid
                 P1IE |= BUTTON_1 + BUTTON_2;
                 P1IFG |= BUTTON_1 + BUTTON_2;
                 P1REN |= BUTTON_1 + BUTTON_2;
                 P1OUT |= BUTTON_1 + BUTTON_2;
                 P1IFG &= ~BUTTON_1 + BUTTON_2;
                 P1DIR |= (RELAY_1 | RELAY_2 | RELAY_3);
                 P1OUT &= ~(RELAY_1 | RELAY_2 | RELAY_3);
                 // Configure Timer0
                 TA0CCTL0 = CCIE;                            // CCR0 interrupt enabled
                 TA0CCR0 = 60000;    // Count up to CCR0 and create interrupt
                 TA0CTL = TASSEL_2 + ID_3 + MC_1; // Clock source = SMCLK, divide clock by 8, up mode (16MHZ/8= 2MHz =>
                 _BIS_SR(LPM0_bits + GIE);               // Enter LPM0 w/ interrupts enabled
                }
                // Lülitame releesid teatud ajaks sisse
                void activate_relay(unsigned char relay, unsigned long on_time) {
                 P1OUT |= relay;     // Lülita sisse
                 wait(on_time);      // Ootame
                 P1OUT &= ~relay;     // Lülita välja
                 //P1OUT ^= relay;     // Lülita välja
                }
                // Ootamise funktsioon, 1 = 100ms; 10=1sek
                void wait(unsigned long time) {
                 unsigned long i;
                 switch (time) {
                 case 5:                                 //aeg 0,5sek
                  __delay_cycles(8000000);
                  break;
                 case 10:                                //aeg 1sek
                  __delay_cycles(16000000);
                  break;
                        case 15:                                //aeg 1,5sek
                  __delay_cycles(24000000);
                  break;
                 case 20:                                //aeg 2sek
                  __delay_cycles(32000000);
                  break;
                 case 30:                                //aeg 3sek
                  __delay_cycles(48000000);
                  break;
                 case 40:                                //aeg 4sek
                  __delay_cycles(64000000);
                  break;
                 case 90:                                //aeg 9sek
                  __delay_cycles(144000000);
                  break;
                 case 600:                               //aeg 60sek
                  __delay_cycles(960000000);
                  break;
                 }
                 //for (i = 0; i < time; i++);
                }
                // Port 1 interrupt service routine
                #pragma vector=PORT1_VECTOR
                __interrupt void Port_1(void) {
                 // Nupp 1
                 if (P1IFG & BUTTON_1) {
                  P1IFG &= ~BUTTON_1;   // Deaktiveerib katkestuse
                  but1_en = 1;
                  LPM0_EXIT;
                 }
                 // Nupp 2
                 if (P1IFG & BUTTON_2) {
                  P1IFG &= ~BUTTON_2;   // Deaktiveerib katkestuse
                  but2_en = 1;
                  LPM0_EXIT;
                 }
                }
                
                
                // Timer A0 interrupt service routine
                #pragma vector=TIMER0_A0_VECTOR
                __interrupt void Timer_A(void) {
                 TA0CCR0 += 60000;                  // Add Offset to CCR0; 60000cycles = 50ms
                 timer1++;                       // Increase timer value
                 if (timer1 >= counter) {    // Timer for one second delay
                  timer1 = 0;       // Reset timer1
                  if (but1_en == 1) {
                   if (but1_chk_cnt < 10) {
                    but1_chk_cnt++;
                   } else {
                    but1_chk_cnt = 0;
                    if ((P1IN & BUTTON_1) == 0) {
                     activate_sms = 1;
                     Send_Messages();
                     //P1OUT ^= BIT0;                      // toggle GREEN led
                    }
                    but1_en = 0;
                   }
                  }
                  if (but2_en == 1) {
                   if (but2_chk_cnt < 10) {
                    but2_chk_cnt++;
                   } else {
                    but2_chk_cnt = 0;
                    if ((P1IN & BUTTON_2) == 0) {
                     activate_second = 1;
                     Send_Messages();
                     //P1OUT ^= BIT0;                      // toggle GREEN led
                    }
                    but2_en = 0;
                   }
                  }
                 }
                 LPM0_EXIT;
                }
                void Send_Messages(void) {
                 if (activate_sms)        // Kui on nupp 1 aktiivne
                 {
                  but1_en = 0;
                  activate_sms = 0;
                  // Lülitame esimese transi korra sisse
                  activate_relay(RELAY_1, 15);   // Ootame 500 ms
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);   
                  wait(10);
                  // Lülitame test transi
                  activate_relay(RELAY_2, 5);         
                  wait(40);       // Ootame 4 sek
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);            
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);
                  wait(10);
                  // Lülitame kolmandat transi
                  activate_relay(RELAY_3, 5);
                  wait(90);
                  // Lülitame esimest transi
                  activate_relay(RELAY_1, 10);             
                  wait(10);
                                
                                
                                
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                
                                
                                
                 //} else if (but2_en)     // Kui on nupp 2 aktiivne
                 } else if (activate_second)     // Kui on nupp 2 aktiivne
                 {
                  but2_en = 0;
                  activate_second = 0;
                  // Lülitame esimast transi
                  activate_relay(RELAY_1, 15);
                  wait(10);
                  // Lülitame teise transi sisse
                  activate_relay(RELAY_2, 40);    // Relee on 4sek sees
                  wait(600);       // Ootame 60 sek
                                
                                
                                
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                                wait(600);                              //hoiame protsessorit 1min töös
                 }
                }
                msn: pois11@hotmail.com

                Comment

                Working...
                X