- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 23 von 23

Thema: Taster an Attiny45

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    Anzeige

    E-Bike
    äh welche lösung hast du jetzt genommen?

  2. #22
    Neuer Benutzer Öfters hier
    Registriert seit
    24.10.2006
    Beiträge
    7
    Hallo, die Lösung mit dem Markro funktioniert auch nur, wenn ich auch den PIN mit den Taster als Ausgang initialisiere. Wenn ich den PB1 als Input initialisiere, klappt auch die Makro Lösung nicht (ich wunder mich immer noch). Genauso gut klappt aber auch die auskommentierte Lösung mit der If-Anweisung.

    Hier das was klappt:
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    #define VALUEPB1 ((PINB & (1<<PB1)) > 0 ? (1):(0))
    
    int main( void )
    {
    
     	DDRB  = 0xFF; // Alles als Ausgang deklarieren
    
      	PORTB |= (1 << PB1); // Pin 1 auf High
    	PORTB |= (1 << PINB4); // LED an
    
      	while(1)
      	{
    		switch(VALUEPB1)
    		{
    		   case 0: //bit is cleared
    		   	PORTB |= (1 << PB4);
    		     break;
    		   case 1: //bit is set
    		   	PORTB &= ~(1 << PB4);
    		     break;
    		   default: //fallthru
    		     break;
    		}
    
    /*
    		if( bit_is_clear(PINB, PB1))
    			PORTB |= (1 << PB4);
    		else
    			PORTB &= ~(1 << PB4);
    
    */
      
      }
    }
    noch einmal vielen Dank.
    Gruß Frank

  3. #23
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.232
    Interupt aktiv bei Port als Ausgang:
    Das die Interupts INT0 bei dem entsprechenden Pin funktionieren auch wenn dieser als Ausgang definiert ist, ist kein Bug sondern ein Feature.

    Man kann nämlich dadurch einen Software Interrupt auslösen.

    Wenn Du das PORTx Register auf 1 setzt und DDRx auf 0, dann wird der Pullup aktiviert, wie Du schon richtig erkannt hast.
    Änderst Du aber im nachhinein das DDRx Register auf 1 wird der entsprechende Pin fest auf 1 gesetzt weil PORTx ja immer noch 1 ist.

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress