-         

Ergebnis 1 bis 3 von 3

Thema: Eigener C Code auf ATTiny13 funktioniert nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2008
    Beiträge
    5

    Eigener C Code auf ATTiny13 funktioniert nicht

    Anzeige

    Hi, weiß jmd wo der Fehler bei folgendem Code ist?
    Der Fehler muss auf jeden Fall im Code sein, verändert funktioniert alles aber eben nicht so wie gewollt:

    Bei Licht soll der Transistor strom auf PB2 geben und die LED aktivieren bis durch einen einmaligen Impuls an PB0 selbige ausgeschaltet wird.
    Es scheint als würde er immer in die if abfrage if(bit_is_set(PINB, 0)) gehen auch wenn auf PB0 kein Strom liegt, danke im vorraus!

    Code:
    #include <avr/io.h>
    
    int main()
    {
    	DDRB = 0b00001000;		// PB3 ist Ausgang
    	int iloop = 1;
    
    	do 
    	{
    		if(bit_is_set(PINB, 0))
    		{
    			PORTB = 0b00000000;
    			iloop = 0;
    		} else if(bit_is_set(PINB, 2))
    		{
    			PORTB = 0b00001000;
    		}
    	} while(iloop == 1);
    
    
    	return 1;
    }
    LED: PB3 - K2
    Widerstand: L2 - GND
    Fototransistor: VCC - PB2

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Es fehlt ein Widerstand zwischen PB2 und GND. Ohne liegt über den Fototransistor immer VCC an PB2. Wie ist den PB0 beschaltet? Ein Taster und ein PullDown vielleicht?

    Die Endlosschleife vor return fehlt auch, sonst verabschiedet sich der tiny ins Nirwana wenn iloop == 0!

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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2008
    Beiträge
    5
    danke dir vielmals jetzt scheint es zu funktionieren ;D
    lg chaotic


    Code:
    #include <avr/io.h>
    
    int main()
    {
    	DDRB = 0b00001000;		// PB3 ist Ausgang
    	int iloop = 1;
    
    	while(iloop == 1)
    	{
    		if(bit_is_set(PINB, 0))
    		{
    			PORTB = 0b00000000;
    			iloop = 0;
    
    		} else if(bit_is_set(PINB, 2))
    		{
    			PORTB = 0b00001000;
    		}
    	}
    
    	while(1){}
    	return 1;
    }

Berechtigungen

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