- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: M32 LED an Pin

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2010
    Alter
    35
    Beiträge
    228
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Habe jetzt mal 2 parallel geschaltene LED's auf GND (mit Vorwiederstand) und auf SDA geschaltet. Ich setz mit meinem Programm SDA auf low, da diese schon beim Einschalten (also ohne das ein Programm läuft) leuchten. Drum wollte ich versuchen sie auszuschalten. Allerdings werden sie nicht ausgeschaltet.

    Code:
    #include "RP6RobotBaseLib.h"
    
    int main (void){
    	DDRC |= (SDA);
    	initRobotBase();
    	int i;
    	PORTC &= ~SDA;
    	powerON();
    	for(i = 0; i < 2; i++){
    		setLEDs(0b001001);
    		move(80, FWD, DIST_MM(500), BLOCKING);
    		setLEDs(0b000111);
    		rotate(60, RIGHT, 120, BLOCKING);
    		setLEDs(0b010010);
    		move(80, FWD, DIST_MM(500), BLOCKING);
    		setLEDs(0b000111);
    		rotate(60, RIGHT, 120, BLOCKING);
    		setLEDs(0b100100);
    		move(80, FWD, DIST_MM(500), BLOCKING);
    		setLEDs(0b000111);
    		rotate(60, RIGHT, 120, BLOCKING);
    		setLEDs(0b111111);
    		mSleep(2500);
    	}
    	while(1){
    		task_RP6System();
    	}
    	return 0;
    }
    MfG

    Ezalo

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2010
    Alter
    35
    Beiträge
    228
    Wenn ich den RP6 anschalte und keine LED an SDA angeschlossen habe, messe ich eine Spannung von ~5,0V. Sobald ich die LED anschließe fließen ~2,6V. Bei INT1 messe beim enschalten (ohne Programmstart) 0V und nach Programmstart 1V.

    Mache ich irgendwas falsch?

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2010
    Alter
    35
    Beiträge
    228
    Ist es möglich SDA, SCL und INT1 auf 0V zu schalten wenn der RP6 nur eingeschalten wird?

  4. #14
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Wenn ich den RP6 anschalte und keine LED an SDA angeschlossen habe, messe ich eine Spannung von ~5,0V. Sobald ich die LED anschließe fließen ~2,6V.
    SDA und SCL sind über je einen PullUp-Widerstand (R32, R33, je 4k7) mit Vcc (5V) verbunden. Ohne LED kann man an diesen Pins deshalb 5V messen. Mit LED liegen deren Vorwiderstand und der PullUp in Reihe.

    Ist es möglich SDA, SCL und INT1 auf 0V zu schalten wenn der RP6 nur eingeschalten wird?
    Nein, das ist nicht (so einfach) möglich. Nach dem Einschalten übernimmt der Bootlader im Mega32 des RP6 die Kontrolle. Dieser schaltet die I2C-Pins auf den für dieses Protokoll gültigen Werte: Takt- und Datenpin auf Z-State (Eingang ohne internen PullUp). (Zuvor testet er sogar, ob am I2C ein Teilnehmer vorhanden ist und schaltet deshalb SDA und SCL!)

    Weil dann der Pin mit 50mA belastet wird weil das Programm nicht gestartet ist.
    Wie groß sind eigentlich die Vorwiderstände für die LEDs? Du verwendest doch zwei Vorwiderstände, für jede LED einen eigenen?

    Code:
       DDRC |= (SDA);
       initRobotBase();
       int i;
       PORTC &= ~SDA;
    In initRobotBase() wird portInit() aufgerufen. Dies setzt die Portpins auf einen definierten Startzustand. Für PortC ist der Zustand in RP6RobotBase.h definiert:

    Code:
    // ---------------------------------------------------
    // PORTC
    
    #define ACS_R 		(1 << PINC7)	// Output
    #define SL3 		(1 << PINC6)	// Output
    #define SL2 		(1 << PINC5)	// Output
    #define SL1 		(1 << PINC4)	// Output
    #define DIR_R 		(1 << PINC3)	// Output
    #define DIR_L 		(1 << PINC2)	// Output
    #define SDA 		(1 << PINC1)	// I2C Data (I/O)
    #define SCL 		(1 << PINC0)	// I2C Clock (Output (Master), Input (Slave))
    
    // Initial value of port and direction registers.
    #define INIT_DDRC 0b10001100
    #define INIT_PRTC 0b00000000
    port_init() gibt INIT_DDC an DDRC und INIT_PRTC an PORTC aus und überschreibt damit deine Angabe für das DDRC. Lösung:

    Code:
       initRobotBase(); // Erst Initialisieren
       DDRC |= (SDA); // dann an den Porteinstellungen fummeln
       PORTC &= ~SDA;
       int i;
    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2010
    Alter
    35
    Beiträge
    228
    Weil dann der Pin mit 50mA belastet wird weil das Programm nicht gestartet ist.
    Wie groß sind eigentlich die Vorwiderstände für die LEDs? Du verwendest doch zwei Vorwiderstände, für jede LED einen eigenen?
    Da war mir ein Fehler beim ablesen unterlaufen, sind 0,5mA die fließen.

  6. #16
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Wenn ich den RP6 anschalte und keine LED an SDA angeschlossen habe, messe ich eine Spannung von ~5,0V. Sobald ich die LED anschließe fließen ~2,6V.
    Am externen PullUp R32 fallen ca. 2,4V ab, der Strom durch R32 (und damit auch der Strom durch den Vorwiderstand und die LED) beträgt dann bei 2,4V/4700Ohm etwa 0,0005A oder 0,5mA.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests