- LiFePO4 Speicher Test         
Ergebnis 1 bis 8 von 8

Thema: Nibobee digitale Inputs/Outputs

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.05.2010
    Beiträge
    14

    Nibobee digitale Inputs/Outputs

    Anzeige

    Powerstation Test
    Hallo!

    Ich habe mich jetzt durch diverse Threads geklickert und die Dokumentation durchstöbert aber so richtigen durchblick habe ich nicht.

    Ich möchte einfach 2 bin 3 Inputs und genau so viele digitale Outputs nutzen. Das heißt ich möchte auf bestimmten Pins die Versorgungsspannung nach außenhin anlegen und umgekehrt wenn ich einen Port auf die Betriebsspannung lege, soll das erkannt werden.

    Ich habe schon einiges von angeschlossenen Sharp Sensoren gelesen aber ich werde da nicht so richtig schlau aus den Schaltungen. Muss nix analoges sein, geht um rein digitale Zustandsabfragen.

    WICHTIG: Die Funktion der Liniensensorik soll ohne Einschränkungen weiter nutzbar sein.

    Hätte da vielleicht jemand ein kleines Codebeispiel für mich, in dem ersichtlich ist, wie digitale Ein- & Ausgänge abfrage und beschalte?

    Vielen Dank!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111
    Hier der gewünschte Beispielcode:
    Code:
    activate_output_groupbit(IO_EXT, 0); // Port C Bit 0 als Ausgang
    deactivate_output_groupbit(IO_EXT, 1); // Port C Bit 1 als Eingang
    
    set_output_groupbit(IO_EXT, 0); // Port C Bit 0 auf 5V schalten
    clear_output_groupbit(IO_EXT, 0); // Port C Bit 0 auf 0V schalten
    
    uint8_t value = get_input_groupbit(IO_EXT, 0); // Wert von Port C Bit 1 holen

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

    Die Bee besitzt fünf Erweiterungstecker X1-X5. Das sind jeweils vier Pins, Vcc, Gnd und zwei Portpins. Bei diesen freien Portpins kann man die Datenrichtung und den Pegel nach Belieben einstellen/abfragen. Zusätzlich kann man noch recht einfach die Pins der "Fühler" nutzen:

    Bild hier  
    (Bild aus https://www.roboternetz.de/phpBB2/ze...ag.php?t=51821)

    Nichtssagenden Beispielcode erspare ich mir hier...

    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!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    11.05.2010
    Beiträge
    14
    Vielen Dank schon einmal für die Hilfe!

    Hatte auch versucht die Taster als Input zu nutzen, habe bim durchmessen dann festgestellt, das diese Masse schalten. Da müsste ich noch eine Inverterschaltung basteln oder eben ein klenes Relais dazwischen setzen.

    Wie finde ich denn raus, welcher Port denn welcher ist?

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

    Welcher Pin wie verschaltet ist zeigt der Schaltplan der bee:
    http://download.nicai-systems.com/ni...matic_1_07.pdf

    Die Taster gehen auf PC4-7, sind aber je mit einem Vorwiderstand beschaltet (R46-49, je 180 Ohm). So wird auch bei auf High geschaltetem Ausgang und gleichzeitig betätigtem Taster kein Schaden verursacht.

    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!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    11.05.2010
    Beiträge
    14
    Ich habe mich mal versucht, aber leider komme ich zu keinem Erbgebnis, zumindest keinem zufriedenstellenden:

    Code:
    #include <nibobee/iodefs.h>
    #include <nibobee/led.h>
    #include <nibobee/delay.h>
    
    int main()
    {
    
    	led_init();
    	//activate_output_groupbit(IO_EXT, 0); // Port C Bit 0 als Ausgang
    	deactivate_output_groupbit(IO_EXT, 1); // Port C Bit 1 als Eingang
    	int value=0;
    	
    
    	while(1==1)
    	{
    
    
    		//set_output_groupbit(IO_EXT, 0); // Port C Bit 0 auf 5V schalten
    		//clear_output_groupbit(IO_EXT, 0); // Port C Bit 0 auf 0V schalten
    
    		value = get_input_groupbit(IO_EXT, 0); // Wert von Port C Bit 1 holen 
    
    		if (value>0)
    		{
    		   led_set(LED_L_RD,1);
    		}
    		else led_set(LED_L_RD,0);
    		
    	}
    	return 0;
    }
    Wenn ich an X4 Pin 1 Vcc anlege geht die entsprechende LED an, aber beim wegnehmen der Spannung erst zerzögert aus. Was mache ich falsch oder habe ich einen Idiotenfehler übersehen?

    Weiterhin würde mich noch interessieren, was es genauer mit der Kombination der X-Pins die physch vorhanden sind und den Ports von denen hier im gesprochen wird auf sich hat.
    Heißt das jetzt Port C enspricht X4?

    activate_output_groupbit(IO_EXT, 0); // Port C Bit 0 als Ausgang
    deactivate_output_groupbit(IO_EXT, 1); // Port C Bit 1 als Eingang

    Das heißt activate/deactivate legt fest ob Eingang oder Ausgang, 0/1 legt das jeweilige Bit fest. Ist Bit 0 dabei Pin 1 und Bit 1 Pin 2?
    Und wo lege ich denn in dieser Anweisung den Port fest den ich konfigurieren will?IO_EXT klingt so allgemein.

    Fragen über Fragen.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    11.05.2010
    Beiträge
    14
    Keiner? Ich seh da leider echt nicht mehr durch.

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

    Im Anhang ein Ausschnitt aus dem Schaltplan der bee. Rechts die X-Erweiterungsstecker, links der Mega16 der bee. Jeder X-Stecker hat vier Stifte: Vcc,GND und je zwei Portpins des Mega16.

    Der Mega16 hat vier Ports mit jeweils acht Portpins: PA0-PA7, PB0-PB7, PC0-PC7 und PD0-PD7. Die Portpins PA0-7 sind dabei auch die Eingänge der acht ADC-Kanäle. Die Zählung beginnt jeweils bei null, weil die Wertigkeit der Portpins innerhalb eines Ports einer Zweierpotenz entspricht. 2^0 entspricht PORTx0, 2^7 ist PORTx7

    Jeder Portpin kann drei Zustände haben: Ausgang High, Ausgang Low und Eingang (und Eingang mit internem Pullup) Ein Port mit seinen acht Pins kann über zwei Register gesteuert werden: Das Datenrichtungsregister (DDRA-DDRD) steuert die Datenrichtung und das Portregister (PORTA-PORTD) setzt den Ausgangspegel oder schaltet den internen PullUp. Mit den Eingangsregistern (PINA-PIND) kann man die Pegel der Portpins digital einlesen.

    http://www.rn-wissen.de/index.php/Avr#IO-PORTs
    http://www.mikrocontroller.net/artic...f_auf_IO-Ports
    http://www.mikrocontroller.net/artic..._IO-Grundlagen

    Gruß

    mic
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken nibobee-x-stecker.jpg  

Berechtigungen

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

LiFePO4 Speicher Test