do-loop-Schleife "toggelt" meinen Port

    • do-loop-Schleife "toggelt" meinen Port

      Hallo liebe User,
      ich bin dabei eine Wortuhr zu programmieren - es funktioniert auch fast alles. Ich verwende einen Arduino Nano - sprich ATMEGA 328, lese über eine RTC die Uhrzeit ein und steuere die LED über die entsprchenden Ports. Allerdings werden in der do loop-Schleife die gesetzten Ports getoggelt. 1s LED an, 1s LED aus usw. Hat einer eine idee, wie ich das unterbinden kann?

      hier das gekürzte Programm:
      $regfile = "m328pdef.dat"
      $crystal = 16000000
      $hwstack = 256
      $swstack = 256
      $framesize = 256
      $baud = 57600
      Config Pind.2 = Input 'Stellen
      Config Pinb.5 = Output
      Led Alias Pinb.5

      Config Pinb.0 = Output
      Config Pinb.1 = Output
      Config Pinb.2 = Output
      Config Pind.6 = Output
      Config Pind.7 = Output

      'Hauptschleife

      Do

      ' Unterprogramm zum m auslesen .....
      Gosub Lesen

      If M > 4 And M < 10 Then '
      Pinb.0 = 0
      Pinb.1 = 1
      Pinb.2 = 0
      Pind.6 = 1
      Pind.7 = 0
      End If
      Wait 1

      Loop

      Lesen:
      '
      '
      M = 6
      Return
    • Schreib mal statt pin port. Es gibt 2 verschiedene Register für einen Port. Ein's, das man lesen kann, pin, und ein's das man schreiben kann, port. Du willst schreiben, also port, bzw. portx.y. Warum das zum toggeln führt, kann ich mir nicht erklären. Prinzipiell werden Ausgänge mit portx.y geschaltet. Beim config-Befehl kannst du pin oder port nehmen.

      Wie ist dein hw-Aufbau? Led-matrix?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()

    • Erst mal vielen Dank für die schnelle Hilfe.Das war natürlich mein Fehler. Hundermal das Programm durchgegangen - dass ich PIN statt PORT geschrieben hab, hab ich echt nicht gesehen. Erstaunlich, dass das trotzdem geklappt hat - bis auf das Toggeln. Manchmal ist man echt blöd.
      @tschoeatsch: hw teils, teils. Die Stunden hab ich über eine 4x3 Matrix angesteuert. Den Rest über je ein Port und 'nen Treibertransistor.

      Mit dem Ports hatte ich mich schon mal angesch.... Ich habe beim ATMEGA 328 portc.7 und portc.8 als Output programmiert und mich gewundert, dass ich keine LED zum Leuchten gebracht hab.. Onkel Google hat mir dann gesagt, dass ich die nur als Input programmieren kann. Tja, jetzt geht es endlich.

      Gruß Manuel
    • Der Anschluß vom portc.7 ist leider, wegen pin-Mangel nicht herausgeführt, er liegt aber als kleiner Drahtwickel im Gehäuse. Vorsichtig den oberen Teil des Gehäuses abheben und du kannst den Draht gefühlvoll ausrollen. Achtung! Er ist nicht sehr lang, eine Zugentlastung ist leider nicht vorhanden. Portc.8 ist eine Fälschung! Wenn dir der im Datenblatt zugesichert wurde, dann ist das Programmiererfängerei!
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Portc.6 und Portc.7 meinte ich natürlich. Wird Zeit, dass ich für heute ins Bett gehe... Ansonsten besten Dank für den Tipp. Ich werde morgen mal den IC öffnen und nach dem Drahtwickel suchen.. So'n Extraport kann man ja immer gut gebrauchen. ;)
      Gute Nacht..
    • Das geht??? ich hab ja davon gehört, dass es möglich ist so'n 2,5mm² Cu-Draht anlöten kann- aber wo bekommt man solchen dünnen Draht her?? wenn das geht, dann kann man ja aus einem ATM644 ein paar Ports vorsichtig mit einer Flex ausschneiden und in einem ATM328 einfügen - GENIAL!!! 8o ATMEGA3264 im TQFP40-Gehäuse.....