- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Probleme mit Tasterschaltung

  1. #11
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Anzeige

    Powerstation Test
    Wie ist denn das Verhalten? Das Programm sagt mir nur, wie du es gern möchtest, aber nicht, was es bei dir macht.

    雅思特史特芬
    开发及研究

  2. #12
    Gesperrt Öfters hier
    Registriert seit
    21.05.2008
    Beiträge
    25
    Eigentlich soll wenn man den Taster die jeweilige led leuchten. Nur leider passiert nichts die Pegel beim AVR liegen bei 5 volt. Habe mittlerweile die Taster im verdacht, wenn ich den Taster drücke habe ich keinen Widerstand wenn ich den Taster nicht drücke habe ich auch keinen. Hatte aus der Tüte noch nen paar über.
    Eigentlich muss ich doch nen Riesen widerstand habe wenn ich ihn nicht drücke und wenn ich ihn drücke nen Maginal kleinen ?

  3. #13
    Gesperrt Öfters hier
    Registriert seit
    21.05.2008
    Beiträge
    25
    ich habe glaube ich habs taster waren anders gepolt als beschrieben

  4. #14
    Gesperrt Öfters hier
    Registriert seit
    21.05.2008
    Beiträge
    25
    Es geht die Taster waren es unglaublich

  5. #15
    Gesperrt Öfters hier
    Registriert seit
    21.05.2008
    Beiträge
    25
    so den code habe ich auch dar wo ich ihn hin haben möchte:
    Code:
    #define F_CPU 10000000UL
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    int channel0;
    int channel1;
    
    
    void PowerOn(){
    /**********Start Powerleds*******************/
      DDRB |= 1<<PB0;      /* set PB0 to output */
      DDRB |= 1<<PB1;      /* set PB1 to output */
      PORTB |= (1 << PB0); /* LED0 on           */
      PORTB |= (1 << PB1); /* LED1 on           */
    /********************************************/ 
    }
    
    
    void setPins(){
    /**************Input*************************/
      DDRB &= ~(1 << PB2); /* set PB2 to input*/  
      DDRB &= ~(1 << PB3); /* set PB3 to input*/
    /********************************************/
      
    /**************Ouput*************************/  
      DDRD |= 1<<PD6;      /* set PB6 to output */
      DDRD |= 1<<PD7;      /* set PB7 to output */
      PORTD &= ~(1<<PD6);  /* PD6  off          */                     
      PORTD &= ~(1<<PD7);  /* PD7  off          */
    /********************************************/
    }
    
    
    void eventhandler(){
    /**********Read Input PB2 and PB3*************/ 
      if((PINB & (1 << PB2)) ) {
        channel0=1;
        channel1=0;   
      }
      
      if((PINB & (1 << PB3)) ){
        channel1=1;
        channel0=0;    
      }
      
      if(channel0==1){
        PORTD |= 1<<PD6;               /* LED on */
        PORTD &= ~(1<<PD7);            /* LED off */     
      }else if(channel1==1){
        PORTD |= 1<<PD7;               /* LED on */
        PORTD &= ~(1<<PD6);            /* LED off */
      }
    }
    
    
    int main(void) {
      setPins();
      PowerOn();
      channel0=1;
      while(1) {
        eventhandler();
      }
      return 0;
    }

  6. #16
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    ich würde mal sagen, nicht die Taster sind schuld, wenn sie nicht richtig angeschlossen sind.
    Aber trotzdem schön, wenn es jetzt klappt.

    Gute Nacht
    sast

    雅思特史特芬
    开发及研究

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    32
    Beiträge
    436
    Es ist schön festzustellen, dass sich immer mehr für AVRs begeistern können.
    Das wird ja fast zum Volkssport

    Du machst einige unnötige Dinge in Deinem Code.

    Dein Programm startet ja in der main(), zu diesem Zeitpunkt ist DDRB= 0000.0000 (binär).
    In der setPins() setzt du dann die B2 und B3 0, obwohl sie es schon sind, tut also nicht not
    Das selbe Spiel am Ende der setPins(), PORTD ist bereits 0000.0000 und muss nicht extra genullt werden.

    Außerdem kannst Du Dir die beiden Variablen sparen
    Code:
    void eventhandler()
    {
      if((PINB & (1 << PB2)) ) {
        PORTD |= 1<<PD6;               /* LED on */
        PORTD &= ~(1<<PD7);            /* LED off */    
      }
      
      if((PINB & (1 << PB3)) ){
        PORTD &= ~(1<<PD6);            /* LED off */     
        PORTD |= 1<<PD7;               /* LED on */
      
      }
      
    }
    Ein kleiner Tipp am Rande, diese schönen Kästchen im Code sind gruselig.
    Fang am besten jetzt schon mit einem sauberen Schreibstiel an

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2011
    Beiträge
    158
    Ein paar ueberfluessige Klammern gabs da noch, und ich empfehle auch immer, die geschwungenen Block-Klammern genauso einzuruecken wie den Block selbst. Findet man dann viel leichter, wo eine fehlt - ist aber Geschmackssache

    Code:
    void eventhandler()
      {
      if (PINB & (1 << PB2))
        {
        PORTD |= 1<<PD6;             /* LED on */
        PORTD &= ~(1<<PD7);          /* LED off */    
        }
      
      if (PINB & (1 << PB3))
        {
        PORTD &= ~(1<<PD6);          /* LED off */     
        PORTD |= 1<<PD7;             /* LED on */
        }
      }

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. pwm Probleme
    Von fatjoe im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 01.05.2007, 11:35
  2. Probleme mit DSL
    Von Panzer im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 08.07.2006, 15:02
  3. I2C Probleme
    Von tristate im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 27.10.2005, 23:17
  4. Probleme mit CAN
    Von ba4_philipp im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 25.10.2005, 23:05
  5. Probleme mit den AVR´s
    Von mcmonkey im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 23.02.2005, 19:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen