-
        

Ergebnis 1 bis 4 von 4

Thema: LED-blinkt - auch ohne Pause zwischen ein/aus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78

    LED-blinkt - auch ohne Pause zwischen ein/aus

    Anzeige

    Hallo,

    am Attiny 45 soll eine LED an PB2 blinken:

    start:
    cbi PinB,2 ; LED aus
    rcall timeloop1

    sbi PinB,2 ; LED ein
    ; rcall timeloop2

    rjmp start

    "timeloop" sind kleine Zeitschleifen damit man das Blinken auch sieht.

    Zuerst fiel auf, dass das Blinken immer gleichmäßig erfolgt, auch wenn timeloop1 und timeloop2 unterschiedlich lange Pausen erzeugen. Zum Testen dann mal timeloop2 ausgeblendet - und die LED blinkt immer noch. Ich verstehe beim besten Willen nicht warum. Dachte zuerst, dass cbi "toggelt", ist aber nicht der Fall. Hat jemand eine Idee?

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Was steht in der Hilfe zum Assembler im AVRStudio ?

    Code:
    CBI - Clear Bit in I/O Register
     
    Description: 
    Clears a specified bit in an I/O register. This instruction operates on the lower 32 I/O registers - addresses 0-31.
    
     
    
    Operation:
    
    I/O(A,b) <- 0
    
    Syntax:            Operands:                         Program Counter:
    
    CBI A, b           0 ≤ A ≤ 31, 0 ≤ b ≤ 7             PC ← PC + 1
    
    16-bit Opcode:
    
    1001  1000  AAAA  Abbb
     
    
    Example:
    
    cbi $12, 7                     ; Clear bit 7 in Port D
    
     
    
    Words: 1 (2 bytes) 
    
    Cycles: 2
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei einigen Chips, offensichtlich auch der tiny45 kann man einzelen Ausgänge toggeln indem man in das PinB Register ein 1 schreibt. In dem Beispiel oben macht der Befehl CBI wohl nichts (ggf. etwas mit anderen Pins !) und das SBI PinB,2 schaltet die LED abwechslend an und aus.

    Normalerweise ist da PinB Register zum lesen. Die Normale Ausgabe geht in die Register PortB.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78
    ... gefunden: es muß cbi PortB,2 nicht cbi PinB,2 heißen.

    Naja, vielleicht tappen andere auch in diese "Falle" und denen möge der Eintrag hier helfen.

Berechtigungen

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