-         

Ergebnis 1 bis 7 von 7

Thema: Attiny13 Anfängerproblem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2010
    Beiträge
    8

    Attiny13 Anfängerproblem

    Anzeige

    Ich bin gerade dabei mein erstes Programm für den Attiny13 in C zu schreiben und habe schon beim einfachen Eingang=Ausgang Programm ein Problem. Die Lampe Leuchtet dauerhaft, es bringt nix den Taster zu drücken. Kann mir jemand sagen was ich falsch gemacht hab ??
    Danke schonmal im vorraus

    PB0 = LED
    PB1 = Taster

    Code:
    #include <avr/io.h>
    
    int main (void)
    {
    DDRB = 0x01;
    PORTB|= 0xFE;
    
    while(1)
    {
    if(!(PINB&(1<<PB1)))
    {
    PORTB|=(1<<PB0);
    }
    else
    {
    PORTB&=~(1<<PB0);
    }
    }
    return 0;
    }

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    26.08.2006
    Beiträge
    84
    Mahlzeit!

    Weiß nicht:
    PORTB|= 0xFE;
    Besser:
    PORTB = 0xFE;

    Wie hast du den Taster beschaltet?
    Gegen VCC oder GND?

    Viel Glück!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2010
    Beiträge
    8
    Der Taster zieht auf GND runter.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Ich glaub deine if-Abfrage ist falsch.
    Es sollte heißen: if(!(PORTB&(1<<PB1)))

    LG
    Nothing is impossible, the impossible just takes longer!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2010
    Beiträge
    8
    Also soweit ich weis werden die zustände immer mit PINx abgefragt. So hab ich es zumindest aus dem Datenblatt und einem Tutorial raus gelesen. Mit der Portabfrage würde ich dann ja nur abfragen ob der Pull-Up eingeschaltet ist.

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Ich weiß nicht womit du programmierst, aber im AVR-STudio kannst du auch simulieren. Von da her würde dein Programm passen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    So sollte es klappen
    Code:
    DDRC &= ~(1<<PC3); //Auf Eingang setzen
    PORTC |= (1<<PC3);  //Pullup einschalten
    if(PINC & (1<<PINC3))  //Abfrage ob PINC3 High ist
    {
    
    }
    else
    {
      //Wird ausgeführt wenn der Taster gedrückt wird
    }
    Bei einem Taster solltest du aber auch noch Mechanismen zum Entprellen einbauen.

Berechtigungen

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