- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 3 von 3

Thema: Problem mit PORTC - Motoren und Leds

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.01.2006
    Beiträge
    7

    Problem mit PORTC - Motoren und Leds

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    Ich habe gerad anfängliche Probleme mit meinem Controller...
    Wenn ich auf dem PORTC nur mit den LEDs arbeite klappt alles. Arbeite ich nur mit den Motoren klappt alles. Nur wenn ich beides kombinieren will geht es nicht mehr....

    also mein code für allgemeines INIT

    Code:
    void init(void)
    {
    	DDRA = 0x00;      /* Port als Eingang deklarieren ( A/D-Wandler Eingänge ) */ 
    	PORTA = 0x80; 
        
    	DDRB = 0xff;      /* Port als Ausgang deklarieren */ 
    	PORTB = 0x00; 
        
    	DDRC = 0xff;      /* Port als Ausgang deklarieren */ 
    	PORTC = 0x00; 
        
    	DDRD = 0xff;      /* Port als Ausgang deklarieren */ 
    	PORTD = 0x00; 
    	
    
    	ADMUX = 0;
    	ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);
    
    	/* Spezialfunktionen ausschalten */
    	SFIOR = 0;
    }
    Wenn ich diesen lade kann ich mit meinen LEDs mit folgendem Befehl arbeiten: PORTC = ~((1<<3)|(1<<4));
    habe auch schon PORTC &= ~((1<<3)|(1<<4)); probiert

    wenn ich nun noch mein MotorInit machen geht das nicht mehr. Es liegt an der gemeinsamen Nutzung und ich weiß auch, dass ich PC7 und PC6 nicht mehr zur Verfügung habe. Wie muss ich das anstellen damit ich meinen Motor verwenden kann aber trotzdem eine LED anschalten kann

    Mein Code für die MotorInit:
    Code:
    void motorInit(void){
       DDRD= (1<<PD4) | (1<<PD5);   // PWM Pins als ausgang
       DDRC= (1<<PC6) | (1<<PC7);   // 6=Motor 1 Kanal 1    7= Motor 1 Kanal 2
       DDRB= (1<<PB0) | (1<<PB1);   // 0=Motor 2 Kanal 1    1= Motor 2 Kanal 2
       TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0) | (1<<WGM11) | (1<<WGM10); // 10 Bit Pwm, invertierend
       TCCR1B = (1<<CS11) | (1<<CS10);      // Prescaler 64
       OCR1A=1;         // Mindestzeit für PWM1
       OCR1B=1;         // Mindestzeit für PWM2
    }
    Mein Motor wird später mit folgendem Befehl gesetzt: Portc |= (1<<PC6)

    Wie ich das sehe liegt mein Denkfehler an der AND und OR-Verknüpfung. Habe jedoch schon einiges probiert und bin bis jetzt noch auf keine Lösung gekommen.

    Vielen Dank für einen Tipp

    Basti

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    Hi Basti,
    Hast du die LEDs gegen VCC oder Masse geschaltet?
    Ich sehe deinen Fehler hier:

    Code:
    DDRC= (1<<PC6) | (1<<PC7);   // 6=Motor 1 Kanal 1    7= Motor 1 Kanal 2
    da du deine LEDs an diesem PortC hast!! Mit dem Befehl werden nur PC6 und PC7 Ausgang!! PC0 bis PC5 werden Eingänge!!! Die Pins an denen die LEDs hängen sind dann also als Eingang geschaltet, du willst aber dass sie ja Ausgänge bleiben!! Also muss es so heißen:

    Code:
    DDRC|= (1<<PC6) | (1<<PC7);   // 6=Motor 1 Kanal 1    7= Motor 1 Kanal 2
    bei den anderen Ports auch so verfahren mit dem | Operator! Damit nicht verändert wird sondern nur hinzugefügt wird!
    Am besten so:
    Code:
    DDRD|= (1<<PD4) | (1<<PD5);   // PWM Pins als ausgang 
       DDRC|= (1<<PC6) | (1<<PC7);   // 6=Motor 1 Kanal 1    7= Motor 1 Kanal 2 
       DDRB|= (1<<PB0) | (1<<PB1);   // 0=Motor 2 Kanal 1    1= Motor 2 Kanal 2
    Gruß Michi

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    18.01.2006
    Beiträge
    7
    Danke

    es war der Fehler mit den Ausgängen

    Ich habe mir schon gedacht, dass ich sowas irgendwo vergessen habe.

    Jetzt habe ich noch ein kleines anderes Problem mit den Motoren(also den Ausgangsports) und zwar ist die Ausgangsspannung bei beiden nicht gleich. Ich habe das RN Control von Robotikhardware.
    Wenn ich beide voll einschalte hat der eine 7,2V und der andere 8,6V. sollte doch eigentlich nicht normal sein. Meine Stromzuführung sind 10V.

Berechtigungen

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

Labornetzteil AliExpress