-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Komische Spannung am Ausgang eines Atmega

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435

    Komische Spannung am Ausgang eines Atmega

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,
    ich habe folgendes Problem:
    ein atmega 32 soll signale ein einen motortreiber (L293D) weitergeben.
    Jetzt funktioniert allerdings nicht mehr wie es soll, der motor dreht sich nicht. Am Ausgang des Atmega, der mit den EN eingang des Motortreibers verbunden ist, messe ich eine spannung von 0,7V, es sollten aber 5V anliegen. Wodran könnte das liegen?

    Mfg Wisda.noobie

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Bitte ein bißchen mehr Information.
    - Welcher Ausgang?
    - Quellcode?
    - Schaltplan?

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435
    Schaltplan ist im Anhang, hier der Quellcode:

    Code:
    #include <avr/io.h>
    #include <util/delay.h>
    
    #define high(MOT) (PORTC |= (1<<(MOT)))
    #define low(MOT) (PORTC &= ~(1<<(MOT)))
    #define enhigh(EN) (PORTD |= (1<<(EN)))
    #define enlow(EN) (PORTD &= ~(1<<(EN)))
    
    #define MOT1		PC6
    #define MOT2		PC7
    #define EN1			PD5
    #define F_CPU 1000000
    #define TASTER	PD3
    #define TASTER_1	(PIND & (1<<TASTER))
       
    
    
    
    int main(void)
    {
    
    
    
    DDRD = (1 << DDD0) | (1 << DDD1) | (1 << DDD4) | (1 << DDD5) | (1 << DDD6); //PD 0,1,4,5,6 Als ausgänge, alle anderen als Eingänge
    DDRB = (1 << DDB0) | (1 << DDB1); // PB 0,1 als ausgänge, alle anderen als eingänge
    DDRC = (1 << DDC4) | (1 << DDC5) | (1 << DDC6) | (1 << DDC7); // PC4,5,6,7 als Ausgänge, alle anderen als Eingänge
    
    //Motor 1 - Eingänge: PC7, PC6
    //Motor 1 - Enable: PD4
    //Motor 1 - LED: PB0
    
    //Motor 2 - Eingänge: PC5, PC4
    //Motor 2 - Enable: PD5
    //Motor 2 - LED: PB1
    
    //Taster hinten: PD2
    //Taster Vorne: PD3
    
    //LED Kollision: PD6
    //LED OK: PD1
    //LED FEHLER: PD0
    
    
    
    
    
    	while(1)
    	{
    	
    		{
    		PORTC = PINC ^ ( 1 << PC7 ); 
    		PORTC = PINC ^ ( 0 << PC6 );
    		PORTD = PIND ^ ( 1 << PD4 );
    		PORTB = PINB ^ ( 1 << PB1 ); //Motor1 vorwärts, LED an
    		
    		
    		
    		
    		}
    	
    	
    	}
    
    return 0;
    }

    ich vermute ja irgendwie einen Kurzschluss, kann aber nichts derartiges finden...

    Es geht jetzt speziell um den pin PC7, der als ganz normaler ausgang genutzt wird.

    gerade ist mir auch aufgefallen, dass der pin 4 (OC1B) 2,5V liefert....


    mfg wisda.noobie


    Edit: schaltplan vergessen
    Angehängte Dateien Angehängte Dateien

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Hm, da fällt mir jetzt erst mal nur eins auf:
    Du hast den RESET-Pin nicht beschaltet. Der sollte auf jeden Fall einen PullUp (10kOhm) gegen Vcc bekommen, idealerweise noch ein C (100nF) gegen Masse.

    Gruß,
    askazo

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Kannst du erklären was du hier machst?
    Code:
          PORTC = PINC ^ ( 1 << PC7 );
          PORTC = PINC ^ ( 0 << PC6 );
          PORTD = PIND ^ ( 1 << PD4 );
          PORTB = PINB ^ ( 1 << PB1 ); //Motor1 vorwärts, LED an
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435
    die entsprechenden pins auf high/low setzen...oder ist das falsch? habe im programmieren noch nicht so viel erfahrung...

    mfg wisda.noobie

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Das ^ ist ein Exclusiv-Oder .
    ein (0<<PC6) bewirkt nichts
    Lies dir das Port setzen und löschen mal hier durch:
    http://www.mikrocontroller.net/artic...f_auf_IO-Ports
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Ist JTAG aktiv?

    Grüße
    Thomas

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.04.2009
    Ort
    345**
    Alter
    24
    Beiträge
    435
    nee, jtag ist aus...es sei denn jtag wär standartmässig aktiviert aber das is sehr unwarscheinlich

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    JTAG ist standardmäßig bei der Auslieferung des AVR's aktiv. Lies doch einfach mal die Fuses aus, dann siehst du gleich was Sache ist.

    Grüße
    Thomas

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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