-         

Ergebnis 1 bis 8 von 8

Thema: Anfänger kommt nicht weiter.

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.12.2007
    Ort
    Nördlinger Ries
    Beiträge
    7

    Anfänger kommt nicht weiter.

    Anzeige

    Hallo Zusammen,

    mein erstes Programm läuft nicht.
    Ich möchte mit einem Attiny13 ein Signal ausgeben.
    Ausgabe auf Pin b4.
    Der Puls ist 1ms.
    Je nach Zustand von Pin b0 soll die Pause 5 oder 2 ms sein.
    Es ist jedoch egal ob ich GND oder VCC an b0 anlege.
    Die Pause ist immer 2ms
    Warum?

    'Target ATtiny13'
    Code:
    $regfile = "ATtiny13.dat"
    'der mit internen 9,6MHZ getaktet wird (Fuse Takt/8 nicht gesetzt!)'
    $crystal = 9600000
    
    $hwstack = 32
    $swstack = 8
    $framesize = 8
    
    'Dims ---------------------------------------------------------------------------'
    
    Dim Eingabe As Word
    
    Dim Puls As Word
    Dim Pause As Word
    
    Config Pinb.0 = Input
    Config Pinb.4 = Output
    
    Do
    If Portb.0 = 1 Then
      Pause = 5
      Else
        If Portb.0 = 0 Then
          Pause = 2
        End If
    End If
    
    
    Portb.4 = 1
    Waitms 1
    Portb.4 = 0
    Waitms Pause
    
    Loop
    
    End

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    Abfragen von Pins gehen mit "Pin" nicht mit "Port"
    Also muss es heißen:
    if Pinb.0=1

    Wenn du mit einer "1" (High) schalten willst, muss der Pin mit einem Pulldown-Widerstand auf GND gelegt werden.

    Kannst es aber auch andersrum machen, den Internen Pullup des AVR benutzen, und nach GND schalten.

    Also:

    Code:
    config pinb.0 = input
    Portb.0 = 1                                                 'internen Pullup für den Pin einschalten
    
    do
       If Pinb.0 = 0 Then
         'mache irgendwas
       End If
    loop
    end

    Gruß
    Christopher

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    Hab zwar keine Ahnung warum die Pause immer 2ms lang ist aber soweit ich weiß funktiert wait... mit Variablen nicht. Da müsstest du Timer benutzen.

    mfg milkbubi

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    doch, Wait und Waitms funktionieren mit Variablen.
    Waitus allerdings nicht.

    Gruß
    Christopher

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    Ach so dann wars das, na dann hab ich wieder was gelernt.

    mfg milkbubi

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    13.12.2007
    Ort
    Nördlinger Ries
    Beiträge
    7
    Danke für die Infos,

    dass bei waitus keine Variablen erlaubt sind war mir nicht bekannt.
    Ich hab es getestet. Mit waitms klappt es mit waitus nicht!

    Super

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    24.09.2006
    Ort
    Nähe Mannheim
    Beiträge
    269
    Gibts eigentlich ne alternative für waitus ?
    wenn die zeit schon recht genau sein soll ?

    Ich mach das grad so

    dim z as integer
    dim z2 as integer
    z2 = 100
    for z = 1 to z2
    next z

    das is bei 8MHz rechenleistung in etwa 1us
    so pie x Dauemn halt ;P

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    Soweit ich weiß kannst du es alternativ nur mit Timer machen. Das ist auch günstiger, da parallel noch dein restliches Programm weiter laufen kann.

    mfg milkbubi

Berechtigungen

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