- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Motor macht was er will

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Anzeige

    E-Bike
    Wenn du einen Port als Eingang definierst, ist dieser erst mal hochohmig. Dann kannst du den internen PullUp aktivieren.
    Damit ist dieser Port bei der Abfrage if(Pin....) auf high. Ein Taster macht dann nur Sinn wenn er auf GND schaltet.
    Wenn du es umgekehrt haben willst geht das natürlich auch. Es ist dann ein externer PullDown notwendig und die Taste nach +5V.
    Der interne PullUp darf dann nicht aktiviert werden.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2012
    Beiträge
    15
    Zitat Zitat von Calis007 Beitrag anzeigen
    Hmm.. im IF, das
    PORTD |= (1<< PD3); //auf high setzen
    passiert auch nur einmal und wird nie rueckgesetzt.. hat damit vermutlich nichts zu tun, sieht aber auch sonderbar aus, sollte wohl ein PB3 sein, oder?

    5V ist eigentlich ueblich hier, oder auch nur 3.3V.

    siehe auch gaengige Logikpegel:
    http://de.wikipedia.org/wiki/Logikpegel
    hab ich auch grad gelesen^^

    jetzt funktionierts.

    #include <avr/io.h>

    int main (void)

    {
    while (1)
    {
    DDRC &= ~(1<< PC1); //PortC Pin2 als Eingang definieren
    PORTC |= (1<< PC1); //PortC Pin2 Pullup aktivieren

    if (!(PINC & (1<<PINC1))) //Läuft bei Taster geschlossen los
    {
    DDRB |= (1<< PB0); //als Ausgang definieren
    PORTB |= (1<< PB0); //auf high setzen
    DDRB |= (1<< PB5); //als Ausgang definieren
    // PORTB |= (1<< PB5); //auf high setzen
    PORTB &= ~(1<< PB5); //auf low setzen
    DDRD |= (1<< PD3); //als Ausgang definieren (Motor enable)
    PORTD |= (1<< PD3); //auf high setzen (Motor enable)
    }
    else
    {
    DDRB |= (1<< PB0) | (1<< PB5);
    PORTB &= ~(1<< PB0) |(1<< PB5);
    DDRD |= (1<< PD3);
    PORTD &= (1<< PD3);
    }

    }

    return 0;
    }


    Aber wo ich grad dran bin. Kann mir einer sagen wie das mit ner PWM aussehen muss?

    Danke
    mfg

  3. #13
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Für die PWM musst du dich mit Timer auseinander setzen.
    Dein Programm ist allerdings sehr unübersichtlich. Wenn es mal länger wird, kennst du dich sicher nicht mehr aus.

    Code:
    #include <avr/io.h>
    
    int main (void)
    DDRC &= ~(1<< PC1);				//PortC Pin2 als Eingang definieren
    PORTC |= (1<< PC1);				//PortC Pin2 Pullup aktivieren
    DDRB |= (1<< PB0);				//als Ausgang definieren
    DDRB |= (1<< PB5);				//als Ausgang definieren
    DDRD |= (1<< PD3);				//als Ausgang definieren (Motor enable)
    
    {
    while (1)
    	{
    	
    	if (!(PINC & (1<<PINC1)))				//Läuft bei Taster geschlossen los
    		{
    		
    		PORTB |= (1<< PB0);			//auf high setzen
    		
    //		PORTB |= (1<< PB5);			//auf high setzen
    		PORTB &= ~(1<< PB5);			//auf low setzen
    		
    		PORTD |= (1<< PD3);			//auf high setzen (Motor enable)
    		}
    	else
    		{
    		
    		PORTB &= ~(1<< PB0) |(1<< PB5);
    		
    		PORTD &= (1<< PD3);
    		}
    
    	}
    
    return 0;
    }
    Jetzt hast du es übersichtlicher was du setzt und rücksetzt, PB5 ist hier immer low.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2012
    Beiträge
    15
    Danke,

    ja PB5 ist immer low.

    Mit PB0 und PB5 wird der Rechts- (PB0=high/PB5=Low), Linkslauf (PB5=high/PB0=Low) und die Bremse(PB0=high/PB5=high) geschalten.

    edit: Naja ich will ja nicht Klugscheißen aber die Semikolons müssen oben noch weg

    MfG
    Geändert von Blinzl0r (20.01.2012 um 11:57 Uhr)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Asuro macht was er will
    Von Autsch20 im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 05.12.2009, 17:42
  2. Wie macht man das ordentlich?
    Von Biometriker im Forum Elektronik
    Antworten: 23
    Letzter Beitrag: 18.01.2008, 17:57
  3. AAtiny15 macht was er will
    Von rogerberglen im Forum Assembler-Programmierung
    Antworten: 12
    Letzter Beitrag: 21.08.2007, 17:16
  4. Debugging - Wie macht Ihr das??
    Von dl1akp im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 29.09.2006, 19:52
  5. Selbsttest - Motor macht was er will
    Von Registrar im Forum Asuro
    Antworten: 19
    Letzter Beitrag: 26.07.2006, 23:42

Berechtigungen

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

Labornetzteil AliExpress