- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Ausgänge des Controllers negieren?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56

    Ausgänge des Controllers negieren?

    Anzeige

    Praxistest und DIY Projekte
    Hi,
    ich mache grade für Informatik ein Referat über Microcontroller.
    Um meinen Mitschülern das ganze etwas näher zu bringen, habe ich ne kleine Platiene mit nem Mega8 und 8 LEDs an Portb gemacht.
    Dazu nen kleines Prog das nen Lauflicht macht.
    Hier verwende ich z.B portb = &B01111110
    um die erste und die letzte LED leuchten zu lassen.(hab die LEDs gegen + gelegt).
    Dies ist für jemanden der vor 5minuten das erste mal von Microcontrollern gehört hat etwas schwerverständlich, warum da ne 0 ist um die LED anzumachen.
    Ich habe mal von einem Befehl gehört der einfach in den Programmkopf kommt und alle Ausgänge negiert.
    Wie heißt dieser befehl?
    Schonmal danke für eure Antworten!
    MfG
    Jan

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    Hallo Jan,

    ich glaube nicht, dass das so einfach (per Befehl) geht ...

    Du hättest die LED's gegen GND legen sollen. Aber das ist
    Dir sicherlich auch klar.
    Gruß: - Reinhard -

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    60
    Beiträge
    1.305
    Blog-Einträge
    1
    Warum legst Du die LED's nicht gegen Masse?
    Für eine normale LED reicht der Portstrom aus.


    Hier die Umkehrung:
    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 9600                                                ' Serrielle Schnittstelle definieren
    
    Config Portb = Output
    Config Portc = Output
    
    
    Dim X As Byte
    Dim Y As Byte
    Dim Z As Byte
    
    Do
       For X = 0 To 7
          Y = 2 ^ X     ' Y = 1 aus 8 - Lauflicht
          Z = Not Y     ' <- Invertiert Y
    
          Portb = Y
          Portc = Z
          Waitms 200
       Next X
    Loop
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    Hi,
    keine Ahnung warum ich die LEDs immer gegen + mache, hat sich wohl so eingebürgert...
    An die bolean negierung hab ich auch schon gedacht, aber das wird ja noch komplizierter...
    Ich bin mir aber sehr sicher, dass es dafür einen Befehl gibt... werd nochmal die ganze Hilfe von Bascom durchgehn (hab ich schonmal gemacht...).
    Wäre für weiter Tipps dankbar!
    MfG
    Jan

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    In Assembler würde z.B. ein com mit der Angabe eines Registers ausreichen ...

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.08.2004
    Ort
    Potsdam
    Beiträge
    190
    Das geht noch einfacher!
    Schließ die LED's "ganz normal" von Vcc über den üblichen Vorwiederstand gegen an den Controller an. (die meisten Ports können mehr Strom gegen Masse "sinken" als das sie ihn "sourcen" können. (find die Begriffe na ja - komisch )
    Das Programm kann folgende Zeilen enthalten:

    Config Portb = Output
    Dim A as Byte
    A= &b11111110

    Do
    Portb = A
    Rotate A, Left, 1
    Waitms 200
    Loop

    End


    "Rotate" schiebt sämtliche Bits von A in dieser Konfiguration um jeweils eine Position nach links. Das MSB wird bei jedem rotieren zum LSB.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    Hi,
    danke für die Antworten!
    Mir ist schon klar, dass ich das Problem wesentlich eleganter lösen könnte. Es geht mir aber dadrum, das totale Basic noobs das Programm verstehen...
    Ich werde es auf eine wirklich billige Methode machen, die viel speicher braucht aber leicht verständlich ist:

    ...
    do
    a = getadc(1) * 2
    portb = &B11111110
    waitms a
    portb = &B11111101
    waitms a
    portb = &B11111011
    waitms a
    portb = &B11110111
    waitms a
    portb = &B11101111
    waitms a
    portb = &B11011111
    waitms a
    portb = &B10111111
    waitms a
    portb = &B01111111
    waitms a
    loop

    Mir stellen sich zwar dabei die Nackenhaare auf, aber ich denke, dass es ut verständlich ist.
    Dazu kommt dann noch nen Interrupt, der mit dem man über einen Taster den Modus auswählen kann(andere Form des Lauflichts...).
    Ich weiß, das ganze ist verdammt billig und speicherfressend, aber meine Mitschüler haben grad erst die Programmiersprache(wenn man sie so nennen will) ""Logo"" gelernt.
    MfG
    Jan

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    du kannst zb

    portausgabe=&B10000001
    portausgabe=255-portausgabe 'negieren
    portx=portausgabe

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.08.2004
    Ort
    Potsdam
    Beiträge
    190
    @x8r:
    Du hast bis auf die Übernahme des Wertes aus dem AD-Wandler genau das gemacht was ich oben in meinen Codeschnippsel reingetippt hab.
    Egal ob jemand mit NULL-Basic-Ahnung oder nicht - so lange man etwas Englisch beherrscht sind die Basic-Befehle eigentlich selbsterklärend. Zur Not könntest Du auch die einzelnen Erklärungen aus der Hilfedatei nehmen und Deinen Studis unter die Nase halten.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.02.2006
    Alter
    54
    Beiträge
    781
    Zitat Zitat von E-Fan
    [...] die meisten Ports können mehr Strom gegen Masse "sinken" als das sie ihn "sourcen" können. [...]
    Das stimmt nicht, zumindest nicht bei neueren AVRs.
    Alle neueren Controller haben symmetrische Ausgänge, d.h. der Strom den sie sourcen können ist genauso hoch wie der Strom den sie sinken können.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests