Problem mit UART und PWM auf MSP430G2211

OP Persönliche Seite #2169445
Lesenswert?
• ▲
▼
Hallo,
ich habe ein kleines Problem bei der Programmierung eines MSP430G2211.

Die Hardware ist das Launchpad, allerdings mit dem kleineren der 
Prozessoren. Nun wollte ich es als UART-IO-Karte verwenden,
also mit einem digitalen und zwei analogen Kanälen
einen analogen Plotter ansteuern.

Für diesen Zweck habe ich einen Software-UART und
eine 8-Bit-Software-PWM mit Hilfe von Codebeispielen programmiert.
Leider ist bisher nur der digitale Kanal funktionstüchtig.
Warum funktionieren die analogen Kanäle nicht?
Hier ist der Teil des Codes, den ich selber geschrieben habe, der Rest 
ist im Anhang:
1
 while (1) {
2
        if (hasReceived) {   // Char recieved ?
3
            hasReceived = false;  // clear "hasReceived" flag
4
            
5
            if(selector != 2){
6
                                            
7
            putChar (23);  //Send ACK
8
            
9
            switch(RXByte){
10
              case 0:{
11
                putChar(42);
12
              }break;
13
              
14
              case 1:{ //Analog channel 1
15
                selected_channel = 1;
16
                selector = 2;  
17
              }break;
18
              
19
              case 2:{ //Analog channel 2
20
                selected_channel = 2;
21
                selector = 2;  
22
              }break;
23
              
24
              case 3:{//Digital Channel
25
                selected_channel = 3;
26
                selector = 2;  
27
              }break;
28
              
29
              case 4:{ //Reset analog
30
                channel1 = 0;
31
                channel2 = 0;
32
                selector = 2;
33
              }break;
34
              
35
              case 5:{ //Reset all
36
                channel1 = 0;
37
                channel2 = 0;
38
                digiput = 1;
39
                selector = 2;
40
              }break;
41
            }
42
           }else{
43
             switch(selected_channel){
44
               case 1:{
45
                 channel1 = RXByte;
46
               }break;
47
               
48
               case 2:{
49
                 channel2 = RXByte;
50
               }break;
51
               
52
               case 3:{
53
              digiput = RXByte;
54
              
55
               }
56
             }
57
             selector = 1;
58
            }
59
        }
60
        if (~hasReceived) __bis_SR_register (CPUOFF + GIE);
61
        
62
        //Handle digital output
63
        if(digiput){
64
          P1OUT &= ~(BIT0);
65
        }else{
66
          P1OUT |= BIT0;  
67
        }
68
        
69
        //Handle analog channel 1
70
        counter1++;
71
        if(counter1 == 0){
72
          P1OUT |= BIT4;  
73
        }
74
        if(counter1 == channel1){
75
          P1OUT &= ~(BIT4);  
76
        }
77
        if(counter1 == 255){
78
          counter1 = 0;  
79
        }
80
        
81
        //Handle analog channel 2
82
        counter2++;
83
        if(counter2 == 0){
84
          P1OUT |= BIT5;  
85
        }
86
        if(counter2 == channel2){
87
          P1OUT &= ~(BIT5);  
88
        }
89
        if(counter2 == 255){
90
          counter2 = 0;  
91
        }
92
        
93
    }
Es wäre nett, wenn ihr mir helfen könntet.
Mit freundlichen Grüßen,
Valentin Buck
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.