-         

Ergebnis 1 bis 10 von 10

Thema: Alias und For-Schleifen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.02.2005
    Beiträge
    6

    Alias und For-Schleifen

    Anzeige

    Hallo!

    Ich versuche jetzt schon seit Stunden ein Problem zu lösen.
    Ich möchte bei einem Mega16 auf 22 Ausgänge eine PWM legen. Und zusätzlich bei den 22 Ausgängen ein Lauflicht laufenlassen.
    Ist Grundsätzlich kein Problem. Die Lampen (1-22) sind allerdings kreuz und quer mit den Ports verbunden (Layout).
    Jetzt dachte ich mir Folgendes:

    Aliasse anlegen in der Form
    Code:
    Lampe.1 alias Portb.1
    Lampe.2 alias Portc.1
    ...
    Lampe.22 alias Portb.0
    Um diese dann per FOR durchlaufen zu lassen.
    Code:
    For i = 1 to 22
    Lampe.i = 1
    next
    Leider gibt Bascom "Invalid Datatype" aus. Ich habe es auch schon mit Lampe(1) und Lampe(i) versucht. Geht leider auch nicht. Wenn ich dann noch Lampe(22) als array deklariere gibt Bascom zwar keinen Fehler mehr aus aber das "Lampe(1)" ist nicht mehr mit den Ports verbunden obwohl der Alias noch drinsteht.
    Wären die nicht kreuz und quer mit den Ports verbunden könnte ich in der Schleife Portb.i schreiben. Das geht vom syntax her. Geht aber leider in meinem Fall nicht.

    Hat sowas schon jemand gemacht?
    Die Ports alle einzelnd zu schalten geht zwar. Wäre aber unschön.

    Danke
    Gruß
    Matze

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Lampe.i = 1 kann nicht funktionieren.

    eventuell so

    Lampe.(i)=1

    Lampe.i wäre eine undefinierte Variable
    Du musst den compiler schon sagen , dass "i" der Zähler ist.

    MFG

    Bertl

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Was meinst du mit 22 PWM Ausgängen?
    Kein AVR hat 22 PWM`s.

    MFG

    Bertl

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    18.02.2005
    Beiträge
    6
    Hallo Bertl100,

    Lampe.(i) = 1 geht leider auch nicht.
    PWM wird in dem Fall per Software generiert.

    Auch so geht es nicht:
    Code:
    Lampe(1) Alias Portb.0
    Lampe(2) Alias Portc.0
    ...
    Lampe(22) Alias Portb.1
    
    ...
    For i = 1 to 22
    Lampe(i) = 1
    next
    Gruß
    Matze

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Probiers mal so



    Code:
    Dim Lampe(22) As Byte
    
    
    Lampe(1) Alias Portb.1
    Lampe(2) Alias Portc.1
    
    
    
     For i = 1 to 22
    Lampe(i) = 1
    Next

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Poste mal den ganzen code

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    18.02.2005
    Beiträge
    6
    Hatte ich ganz am Anfang so Probiert.

    Sobald ich das "Dim Lampe(22) as byte" drin habe:
    Geht fehlerlos durch den Check aber er "verliert" die Alias Anbindung an den Port. Sprich an den Ports kommt nix mehr an.

    Nehm ich das "Dim Lampe(22) as byte" wieder raus kommt wieder die Fahlermeldung bei "Lampe(i) = 1"...

    Keine Ahnung wie das geht... Ich nehm jetzt die Aliasse alle raus und schreib mir eine Funktion die das dann per If Then auswertet.

    Sonst fällt mir nichts ein.

    Gruß
    Matze

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Dann wäre eine case Anweisung besser.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Mir der case kannst du sicher mit den Aliassen arbeiten.

    eine Schleife darüber und es geht sicher

    MFG

    Bertl

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    18.02.2005
    Beiträge
    6
    Stimmt...
    Case ist besser.
    Allerdings kann ich mir die alliasses dann sparen.
    Dann kann ich auch gleich die Ports angeben im Case.

    Danke erstmal Bertl100!

Berechtigungen

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