-
        

Ergebnis 1 bis 7 von 7

Thema: Inputten am ATMega 128L macht Probleme

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21

    Inputten am ATMega 128L macht Probleme

    Anzeige

    Hallo,

    ich habe ein (dringendes ) Problem: Ich habe einen ATMega 128L. Genaugenommen ist der auf einer Platine, die ich einzeln gekauft habe und die eigentlich für den "Robonova" gedacht ist. Aber es gibt folgendes Problem: Die Ausgänge gehen, also ich kann an jedem Port eine LED zum leuchten bringen. Auch Servos gehen erfolgreich an jedem Port. Nur mit dem Sensoren hackt es. Und zwar gewaltig. Ich schließe einen ganz normalen Drucktaster an, der 5 Volt an einen der AD-Ports (Mit den Normalen Ports habe ich es auch schon erfolglos probiert) durchschaltet. Wenn ich dann mit einem einfachen Programm (siehe nachfolgend) den Taster abfragen will, tut sich nichts. Ich habe schon alles ausprobiert. Ist mit allen Ports so. Hoffentlich könnt ihr mir Helfen.
    MfG
    Hier noch der Code:


    DIM Schalter AS INTEGER
    Schalter = 0

    Beginn:

    Schalter = AD(0)
    IF Schalter = 1 THEN
    OUT 5,1
    ELSE
    OUT 5,0
    ENDIF
    GOTO Beginn

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Simon92,

    einen Taster sollte man nicht an einen Analog-Port anschließen, wenn es nicht unbedingt sein muss.
    Wenn doch (dein Beispiel), dann kann man nicht einfach auf "If Schalter = 1" testen, weil je nach uC hier an einem Analogeingang Werte von 0 bis 255 oder 1023 o.ä. gemessen werden. Wenn also ein Taster nach +5V schaltet, wird ein Wert nahe am Maximum (255 oder 1023) anliegen, wenn man den Taster drückt. Drückt man nicht, hängt der Eingang "in der Luft" und liefert irgendwelche Werte. Um das zu vermeiden, braucht man einen "Pulldown-Widerstand von z.B. 10 kOhm nach GND am Eingangspin.

    Das mit dem Widerstand gilt auch für digitale Eingänge. Die Abfrage geschieht aber tatsächlich mit 0/1 für nicht gedrückt/gedrückt.

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Simon,
    noch als Ergänzung zu Dirks Antwort:
    Du scheinst von einem anderen Basic Dialekt zu kommen. Du verwendest einige Befehle, die Bascom so nicht versteht:

    Den AD-Wandler musst du mit der Funktion GetADC(x) ansprechen, wobei x abhängig von deinem µC von 0-7 (bei neueren Typen glaube ch sogar bis 15) gehen kann. Vorher musst du den AD Wandler mit Config ADC noch konfigurieren oder zumindest mit Start ADC starten.

    Einen Eingangspn fragt man z.B. mit
    If PINX.Y = 1 Then ...
    ab, wobei X der Port (A-L) und Y der Pin des Ports (0-7) ist. Inwieweit die vorhanden sind, hängt wieder von deiner Hardware ab.
    Einen Ausgangspin setzt man z.B. mit
    PORTX.Y = 1
    X und Y wieder wie oben.
    Fast jeder Pin kann als Eingang oder als Ausgang benutzt werden. Dies kann man mit
    Config PORTX = Output oder Config PINX.Y = Output (bzw. = Input) festlegen. Alternativ kannst du das DatenRichtungsRegister setzen, z.B. mit
    DDRX.Y = 1 als Ausgang oder
    DDRX.Y = 0 als Eingang.

    So, genug der Einführung. Den Rest solltest du in der Hilfe unter Language Fundamentals nachlesen.

    Gruß

    Rolf

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21
    @ Dirk

    Wie meinst du das mit dem Widerstand? Also ich habe es jetzt so, das, wenn der Schalter geschlossen wird, einfach 5 Volt an den Port gegeben werden. Dann stimmt das so nicht?


    @ for_ro

    Nein, das geht so leider nicht. Ich nehme nämlich ein Programm, das "roboBASIC" heisst. Ich würde gerne Bascom nehmen, aber irgendwie krieg ich da keine Verbindung zustande. Die Befehle, die du mir gegeben hast, gehen alle unter roboBASIC nicht.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21
    Hallo Dirk,
    habe es ausprobiert mit den Pull-down-Widerständen. Jetzt funktioniert es einwand frei. Dankeschön

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von Simon92
    @ for_ro

    Nein, das geht so leider nicht. Ich nehme nämlich ein Programm, das "roboBASIC" heisst. Ich würde gerne Bascom nehmen, aber irgendwie krieg ich da keine Verbindung zustande. Die Befehle, die du mir gegeben hast, gehen alle unter roboBASIC nicht.
    Sorry, ich hatte gedacht, du hättest im Bascom Forum gepostet.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2008
    Beiträge
    113
    wenn du gerne Bascom nutzen möchtest, dann geht das auch

    Was benutz du für ein Proggramiergerät?
    Was kommt für eine Fehlermeldung?
    Was hast du unter Einstellungen-->Proggrammer eingestellt?

    MfG

Berechtigungen

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