- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 40

Thema: Wiso funktioniert meine Software für den ATmega88 nicht ??

  1. #21
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Anzeige

    Powerstation Test
    Ich mache die Klammern auch immer weil es einfach übersichtlicher ist. Der Kompiler erzeugt bei beiden Varianten den selben Code.

    Trotz allem, ohne Schaltplan kommen wir hier wohl nicht mehr weiter...
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    Code:
     also hier ist der IR Sensor code 
    #define __AVR_ATmega88__
    
    #include <avr/io.h>
    //#include <iom88.h>
    
    long i;
    
    
    #define STATSLED0_ON  (PORTC |= 1<<PC0)
    #define STATSLED0_OFF (PORTC &= ~(1<<PC0))
    #define STATSLED1_ON  (PORTC |= 1<<PC1)
    #define STATSLED1_OFF (PORTC &= ~(1<<PC1))
    
    #define GET_IRSEN_RIGHT (PIND & 1<<PD4)
    #define GET_IRSEN_LEFT  (PIND & 1<<PD3)
    
    
    void turnLEFTforward(){
    
    	// Motor 1 stop
    	PORTD |= 1<<PD6;
    	PORTD |= 1<<PD7;
    	// Motor 2 Forward
    	PORTB |= 1<<PB2;
    	PORTB &= ~(1<<PB1);
    
    }
    
    void turnRIGHTforward(){
    
    	// Motor 1 Forward
    	PORTD |= 1<<PD6;
    	PORTD &= ~(1<<PD7);
    	// Motor 2 stop
    	PORTB |= 1<<PB2;
    	PORTB |= 1<<PB1;
    
    }
    
    
    int main(){
    
    	DDRD = 1<<PD6 | 1<<PD7;			// PD6 PD7 Output Motor1;
    	DDRB = 1<<PB1 | 1<<PB2;			// PB1 PB2 Output Motor2;
    
    
    	DDRD &= ~(1<<PD3 | 1<<PD4);		// PD3 PD4 Input IR Sensors;
    	
    	DDRC = 1<<PC0 | 1<<PC1;			// PC0 PC1 Output STATSLED0 & 1;
    
    	
    
    	//PORTD &= ~(1<<PD6);
    	//PORTD &= ~(1<<PD7);
    
    	
    	// (!)= schwarz & () = weiss
    
    	// GET_IRSEN_RIGHT = STATSLED1
    	// GET_IRSEN_LEFT  = STATSLED0
    
    
    
    
    	while(1){
    	    	if(! GET_IRSEN_LEFT && ! GET_IRSEN_RIGHT){
    		    turnRIGHTforward();
    			STATSLED0_OFF;
    			STATSLED1_OFF;
            	}
    
    		else if( ! GET_IRSEN_LEFT && GET_IRSEN_RIGHT){
    			turnRIGHTforward();
    			STATSLED0_OFF;
    			STATSLED1_ON;
    			}
    			 
    		else if( GET_IRSEN_LEFT && ! GET_IRSEN_RIGHT){
    			turnLEFTforward();
    			STATSLED0_ON;
    			STATSLED1_OFF;
    			} 
    
    		else if( GET_IRSEN_LEFT && GET_IRSEN_RIGHT){
    			turnLEFTforward();
    			STATSLED0_ON;
    			STATSLED1_ON;
    			} 
    
    
    //PORTC = 1<<PC5;
    	
    //PORTC = 0<<PC5;	
    		
    
    	}
    }

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    hier ist der IR Sensor code
    Code:
    #define __AVR_ATmega88__
    
    #include <avr/io.h>
    //#include <iom88.h>
    
    long i;
    
    
    #define STATSLED0_ON  (PORTC |= 1<<PC0)
    #define STATSLED0_OFF (PORTC &= ~(1<<PC0))
    #define STATSLED1_ON  (PORTC |= 1<<PC1)
    #define STATSLED1_OFF (PORTC &= ~(1<<PC1))
    
    #define GET_IRSEN_RIGHT (PIND & 1<<PD4)
    #define GET_IRSEN_LEFT  (PIND & 1<<PD3)
    
    
    void turnLEFTforward(){
    
    	// Motor 1 stop
    	PORTD |= 1<<PD6;
    	PORTD |= 1<<PD7;
    	// Motor 2 Forward
    	PORTB |= 1<<PB2;
    	PORTB &= ~(1<<PB1);
    
    }
    
    void turnRIGHTforward(){
    
    	// Motor 1 Forward
    	PORTD |= 1<<PD6;
    	PORTD &= ~(1<<PD7);
    	// Motor 2 stop
    	PORTB |= 1<<PB2;
    	PORTB |= 1<<PB1;
    
    }
    
    
    int main(){
    
    	DDRD = 1<<PD6 | 1<<PD7;			// PD6 PD7 Output Motor1;
    	DDRB = 1<<PB1 | 1<<PB2;			// PB1 PB2 Output Motor2;
    
    
    	DDRD &= ~(1<<PD3 | 1<<PD4);		// PD3 PD4 Input IR Sensors;
    	
    	DDRC = 1<<PC0 | 1<<PC1;			// PC0 PC1 Output STATSLED0 & 1;
    
    	
    
    	//PORTD &= ~(1<<PD6);
    	//PORTD &= ~(1<<PD7);
    
    	
    	// (!)= schwarz & () = weiss
    
    	// GET_IRSEN_RIGHT = STATSLED1
    	// GET_IRSEN_LEFT  = STATSLED0
    
    
    
    
    	while(1){
    	    	if(! GET_IRSEN_LEFT && ! GET_IRSEN_RIGHT){
    		    turnRIGHTforward();
    			STATSLED0_OFF;
    			STATSLED1_OFF;
            	}
    
    		else if( ! GET_IRSEN_LEFT && GET_IRSEN_RIGHT){
    			turnRIGHTforward();
    			STATSLED0_OFF;
    			STATSLED1_ON;
    			}
    			 
    		else if( GET_IRSEN_LEFT && ! GET_IRSEN_RIGHT){
    			turnLEFTforward();
    			STATSLED0_ON;
    			STATSLED1_OFF;
    			} 
    
    		else if( GET_IRSEN_LEFT && GET_IRSEN_RIGHT){
    			turnLEFTforward();
    			STATSLED0_ON;
    			STATSLED1_ON;
    			} 
    
    
    //PORTC = 1<<PC5;
    	
    //PORTC = 0<<PC5;	
    		
    
    	}
    }

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    mic du glaubst also ich sollte die anderen 2 schalter auch über GND anschliessen

    also gut ich versuchs mal

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    also ich habs jetzt so gemacht


    #define SWITCH_LEFT (PINB & 1<<PB6)
    #define SWITCH_RIGHT (PINB & 1<<PB4)
    #define SWITCH_BACK_LEFT (PIND & 1<<PD0)
    #define SWITCH_BACK_RIGHT (PINB & 1<<PB0)

  6. #26
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    ups mein kabel ist nich so lang klene änderung

    #define SWITCH_LEFT (PINC & 1<<PC6)
    #define SWITCH_RIGHT (PINB & 1<<PB4)
    #define SWITCH_BACK_LEFT (PINB & 1<<PB6)
    #define SWITCH_BACK_RIGHT (PINB & 1<<PB0)

  7. #27
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    ich glaube ihr habt sogar recht mit dem ))

  8. #28
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    das mit den )) funktionier überhaupt nicht
    und das mit der neuen pin belegung hat auch nichts gebracht

  9. #29
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    was heisst das eigentlich

    ../Robo_Schalter.c:2:1: warning: "__AVR_ATmega88__" redefined

    und wiso ist das hier nicht richtig

    #define __AVR_ATmega88__


    es meldet immer
    Build succeeded with 2 Warnings...
    dann steht das oben

  10. #30
    Benutzer Stammmitglied
    Registriert seit
    25.07.2008
    Beiträge
    80
    Zitat Zitat von radbruch
    Hallo

    Hier nochmal der Link zum "Bestückungsplan":
    http://dennis4123.de.funpic.de/Best%fcckunsplan.zip
    (Du solltest Umlaute in Dateinamen vermeiden)

    Wenn ich das richtig deute sind die BR/BL-Verbindungen die Taster. Warum sind zwei gegen GND (PB0+PB4) und zwei gegen Vcc(PC4+PC6) geschaltet? Wenn das so wäre müßten die Eingänge PC4 und PC6 immer gesetzt sein und die entsprechenden LEDs im Schaltertest immer leuchten.

    Ich vermute, du hast die Platine irgendwo gekauft. Hast du dazu eine Bezeichnung oder einen Anbieter/Artikelnummer?

    Ist übrigens ein hübscher kleiner Roboter

    Gruß

    mic
    zu deiner Frage ich habe die Platine nicht gekauft, ich war in einem Elektronikerkurs und wir haben alle zusammen einen Roboter gebaut natürlich hat jeder seinen eigenen bekommen, und einer Kursleiter hat die Platinen selbst geätzt.
    Den Kursleiter den wir hatten sagte diese Platine sei mist aber wir hatten keine Zeit neue anzufertigen wir hatten am anfang sehr viele probleme aber dann hats doch geglappt bei jeder Platine wie ich entdeckt hatte ist eine kleine stelle wo die leiterbahn gerissen ist da ist wohl bei der vorlage fürs belichten ein kratzer entstanden. tia

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

12V Akku bauen