-         

Ergebnis 1 bis 3 von 3

Thema: Pin anders belegen bei Tiny25 (alternate functions of PORTB)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    31.10.2009
    Beiträge
    7

    Pin anders belegen bei Tiny25 (alternate functions of PORTB)

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    Ich versuche z.Zt. in die AVR Programmierung einzusteigen.
    Mein erstes Projekt war ein Einschaltzeitbegrenzer mit dem Attiny25.

    Der Aufbau ist recht simpel:
    PB4: BC337 schaltet ein Relais
    PB1: LED für Status
    PB3: Taster für Programmierung

    Wird der Taster gedrückt Zählt eine Schleife wie lange das geschieht und schreibt beim loslasen den wert in den Eeprom.
    LED gibt Blinkcodes beim Tastedrücken, EEPromschreiben, Standby bzw. Relais an.
    Nach dem Einschalten wird der Eeprom Wert gelesen und, das Relais angeschaltet, runtergezählt und ausgeschaltet.
    Soweit funktioniert das auch perfekt.

    Für diese Schaltung brauchte ich keine Fuses ändern, die Pins konnten auch einfach als Output definiert werden.

    Nun zu meinem Problem:


    Da ich in der Schaltung keinen SPI habe, wollte ich gern (nur zum probieren) zwei weitere LEDs ergänzen und an PB0 und PB2 hängen.

    Leider machen die LEDs an PB0 und PB2 überhaupt nicht was ich erwarte.
    Sie machen exakt das gleiche wie die LED an PB1. (sobald ich sie als Output definiert habe)

    Die LED sind wie folgt angeschlossen:
    PBx -> LED ->1k ->Gnd

    Ich vermute das ich beim Attiny25 PB0 und PB2, die ja normalerweise für SPI verwendet werden, erst Umdefinieren muss.
    Das Datenblatt beschreibt da was von "Override Signals", aber ich werd da einfach nicht schlau draus.

    Vielleicht hat ja jemand ein kleines Code Sample oder sowas.
    Hab mich schon dumm und dämlich gesucht.

    Viele Dank & Grüße
    Joe
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Es liegt einfach nur daran, dass deine ganze binäre Logik verquer ist.

    #define LEDOFF PORTB &= (1<<LED)
    -> alle Ausgänge an PORTB auf 0, außer LED, der Ausgang behält seinen aktuellen Wert

    #define LEDON PORTB |= ~(1<<LED)
    -> alle Ausgänge an PORTB auf 1, außer LED, der Ausgang behält seinen aktuellen Wert
    MfG
    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    31.10.2009
    Beiträge
    7
    Oh nein !

    Da mach ich jetzt seit Tagen dran rum aber das ich gerade da einen Fehler mache hatte ich nicht erwartet.
    Na ja, das letzte mal das ich Binärverknüpfung benutzt habe ist einige Jahre her.

    Es muss natürlich so sein:

    #define LEDON PORTB |= (1<<LED)
    #define LEDOFF PORTB &= ~(1<<LED)

    Und auf einmal gehts mit allen PINs.

    Vielen Dank für diese Augenöffnung.

    Grüße
    Joe

Berechtigungen

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