-         

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

Thema: Port gleichzeitig als Eingang / Ausgang verwenden?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474

    Port gleichzeitig als Eingang / Ausgang verwenden?

    Anzeige

    Ich beschäftige mich nach ca. einem Jahr wieder intensiv mit der Controllerprogrammierung, bin schon ziehmlich raus aus der Materie.

    Nun wollte ich PORTC verwenden, davon PC0 / PC1 als Ausgang und PC2 als Eingang (Taster), nur funzt das nicht.

    Geht das generell nicht oder hab ich nen Denkfehler?

    Ich habe folgendes gemacht:

    DDRC = 0b00000011; /* als Ausgang */
    PORTC = 0b00000100; /* Pullup */
    * Da geht noch was *

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    das ist ganz in Ordnung. Du hast dabei gleichzeitig PC0 und PC1 auf "L" gesetzt und müsstest dann z.B. schreiben <pre>PORTC|=(1<<PC1);</pre>, um PC1 auf "H" zu bringen. Nicht vergessen, dass Du "PINC" abfragen musst, um den Zustand der Eingangsleitung an PC2 zu testen: <pre>if (PINC&(1<<PC2)) { /*Taster nicht aktiv*/ } else { /*Taster aktiv*/ } </pre>!

    Gruß

    Fred

    PS: Das Spinnentier in Deinem Avatar -- gibt's das wirklich oder ist das virtuell?
    Only entropy comes easy. - Anton Checkhov

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474
    Zitat Zitat von fhs
    Hi,

    das ist ganz in Ordnung. Du hast dabei gleichzeitig PC0 und PC1 auf "L" gesetzt und müsstest dann z.B. schreiben <pre>PORTC|=(1<<PC1);</pre>, um PC1 auf "H" zu bringen. Nicht vergessen, dass Du "PINC" abfragen musst, um den Zustand der Eingangsleitung an PC2 zu testen: <pre>if (PINC&(1<<PC2)) { /*Taster nicht aktiv*/ } else { /*Taster aktiv*/ } </pre>!

    Gruß

    Fred

    PS: Das Spinnentier in Deinem Avatar -- gibt's das wirklich oder ist das virtuell?
    Hi

    Danke für die Aufklärung, ich habs so gemacht, auch die Tasterabfrage (hatte nur den einen Teil kopiert) leider sind die LED's an PC0 und PC1 nur am flackern, ich kann nicht normal schalten

    So sieht das gesamt aus:

    Code:
    #define 	F_CPU 3686400	// Taktferquenz des myAVR-Boards
    #include	<avr\io.h>		// AVR Register und Konstantendefinitionen
    //----------------------------------------------------------------------
    main ()						// Hauptprogramm, startet bei Power ON und Reset
    {
    	DDRC = 0b00000011;		/* als Ausgang definiert */
    	PORTC = 0b00000100;		/* Pullup */
    
    	do 
    	{
    		// Schleifenanfang Mainloop
    
    		if(!(PINC&0b00000100))
    		{
    			PORTC = 0b00000011;
    		}
    	else
    		{
    			PORTC = 0b00000000;
    		}
    
    	}
    	while (true);			// Schleifenende Mainloop
    }
    Eigentlich ne einfache Sache, aber ich steh grad aufm Schlauch

    Ziel ist es, durch Tastendruck PC0 und PC1 zum leuchten zu bringen \/

    Was mache ich falsch?


    PS: wegen Profilfoto, das ist ne kleine Mauerspringspinne, nur ein paar mm groß, hab da n großes Fodo von
    * Da geht noch was *

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Weil ich grad Port C les: kann evtl auch am aktiven JTAG liegen, falls die Pins da nicht so wollen wie geplant
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474
    Zitat Zitat von Jaecko
    Weil ich grad Port C les: kann evtl auch am aktiven JTAG liegen, falls die Pins da nicht so wollen wie geplant
    Was müsste ich da machen, weil sie nicht wollen, wie ich will?

    PB als Ausgang zu verwenden und PC als Eingang, das funzt, aber beides an einem Port, da flackerts nur
    * Da geht noch was *

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    JTAG oder nicht-beschalteter PIN AVcc können manchmal die Ursache sein, dass ein Port nicht richtig will. JTAG lässt sich über die FuseBits deaktivieren.

    In Deinem Code gibt es aber noch ein anderes Problem: Du deaktivierst mit Deinen Zuweisungen "PORTC=" den Pullup an PC2.

    Danke für die Info zur Springspinne! Ich habe mal eine unter meiner 30x-Stereo-Lupe betrachtet und war ganz fasziniert!

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474
    Zitat Zitat von fhs
    Hi,

    JTAG oder nicht-beschalteter PIN AVcc können manchmal die Ursache sein, dass ein Port nicht richtig will. JTAG lässt sich über die FuseBits deaktivieren.

    In Deinem Code gibt es aber noch ein anderes Problem: Du deaktivierst mit Deinen Zuweisungen "PORTC=" den Pullup an PC2.

    Danke für die Info zur Springspinne! Ich habe mal eine unter meiner 30x-Stereo-Lupe betrachtet und war ganz fasziniert!

    Gruß

    Fred
    Hallo Danke

    Du hattest Recht, jetzt funzt es, hat gleich Klick gemacht
    Vielen Dank \/

    Das sieht dann so aus:

    Code:
    #define 	F_CPU 3686400	// Taktferquenz des myAVR-Boards
    #include	<avr\io.h>		// AVR Register und Konstantendefinitionen
    //----------------------------------------------------------------------
    main ()						// Hauptprogramm, startet bei Power ON und Reset
    {
    	DDRC = 0b00000011;		/* als Ausgang definiert */
    	PORTC = 0b00000100;		/* Pullup */
    
    	do 
    	{
    		// Schleifenanfang Mainloop
    
    		if(!(PINC&0b00000100))
    		{
    			PORTC = 0b00000011;
    		}
    	else
    		{
    			PORTC = 0b00000100;
    		}
    
    	}
    	while (true);			// Schleifenende Mainloop
    }
    Aber, wenn mir sowas passiert, dann muss ich höllisch aufpassen, da muss ne bessere Lösung her

    Die Spinnenart finde ich auch ganz faszinierend, die sind schlau, beobachten einen genau, gehst du näher ran dann gehen die n Stück zurück oder drehen sich mit dir
    Ich habs Fodo mal auf unserem Balkongeländer gemacht

    Hier hab ich ne Baby-Mauerspringspinne geknipst:
    http://www.fotocommunity.de/pc/pc/my...isplay/6172690
    http://www.fotocommunity.de/pc/pc/my...isplay/6088770
    * Da geht noch was *

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    anstelle von "PORTC = 0b00000011;" würde ich noch "PORTC = 0b00000111;" schreiben, dann stimmt's!

    Hast Du so ein Super-Makro-Objektiv oder wie sind die tollen Fotos entstanden?

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von squelver
    Registriert seit
    20.07.2006
    Ort
    Hoykenkamp
    Alter
    37
    Beiträge
    2.474
    Zitat Zitat von fhs
    Hi,

    anstelle von "PORTC = 0b00000011;" würde ich noch "PORTC = 0b00000111;" schreiben, dann stimmt's!

    Hast Du so ein Super-Makro-Objektiv oder wie ist das Foto entstanden?

    Gruß

    Fred
    Habs gleich mal geändert, funzt auch \/

    Ich hab mir von ebay mal ne gebraucht Kodak Easyshare DX6340 gekauft, auf das Objektiv passt ne handelsübliche "schwarze" Filmdose. Aus verschiedenen Flachbettscanner habe ich verschiedenste Linsen / Objektive ausgebaut, diese in die Filmdose integriert. Wenn ich nun komplett ranzoome, dann ich super Makros machen, bei einigen Linsen leider nur mit nem sehr starken Brennpunkt und ich muss direkt an Objekt. Aus nem fetten Laserscanner vom Schrottplatz hab ich n großes Objektiv, das hat ne bessere Brennweite, damit hab ich auch das Fod von der Spinne gemacht

    Die schönsten Fodos mache ich mittlerweile mit meiner Kodak ZD710.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken objektive.jpg  
    * Da geht noch was *

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Danke für die Foto-Infos; deine Ergbnisse finde ich super!
    Only entropy comes easy. - Anton Checkhov

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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