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

Thema: AVR Problem (Tasterabfrage?) VERZWEIFEL!!!

  1. #1
    1hdsquad
    Gast

    AVR Problem (Tasterabfrage?) VERZWEIFEL!!!

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    ich bin am verzweifeln: Ich muß ein parr Taster mit meinem AVR abfragen, Entprellen nicht nötig. Ist in Bascom auch kein Problem, dachte ich bis jetzt. Das hier ist mein Testprogramm, es funktioniert NICHT.

    $regfile = "m8def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000

    Config Portd.5 = Output
    Config Portd.6 = Output
    Config Portd.7 = Output
    Config Pind.2 = Input
    Config Pind.3 = Input
    Config Pind.4 = Input

    Portd.2 = 1
    Portd.3 = 1
    Portd.4 = 1

    Do
    Portd.5 = Pind.2
    Portd.6 = Pind.3
    Portd.7 = Pind.4
    Loop
    End

    Ich habe andere Programme getestet, andere Chips getestet, andere Routinen getestet. Ergebnis: Nicht das, was ich wollte. Bei einem Tiny2313 funktionierte keine Abfrage, aber Interrupt waren teilweise möglich, und er kann auch zuverlässig LEDs zum Blinken bringen oder programmiert werden. Der MEGA8 und MEGA 16 fragten die Tasten ab, aber wenn ich sie drücke, blinken die LEDs. Das ganze fandt auf dem Pollin Atmel Evaluationsboard statt.
    Warum geht das nicht? Ich weiß nicht mehr weiter...
    MFG und auf Hilfe hoffend...

    P.S.: Ist Bascom schuld? Falsche Programmierung etc? PonyProg? Kabel? ...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    wenn du einzelne Pins auf Input oder Output umstellst heißt es immer "PIN"

    Also statt:
    Config Portd.5 = Output
    Config Portd.6 = Output
    Config Portd.7 = Output

    mal probieren:
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pind.7 = Output

    Gruß
    Christopher

  3. #3
    1hdsquad
    Gast
    Werd ich machen, aber steht es nicht immer überall anders?! Auch im Wiki? Die Ausgänge scheinen ja auch zu funktionieren, die LEDs blinken ja... Trotzdem danke!

  4. #4
    1hdsquad
    Gast
    Nein, hilft nicht. Ändert auch den HEX-Code nicht, das kann es nicht sein...
    MFG

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    29.09.2006
    Ort
    Kempen / Ndrh.
    Alter
    60
    Beiträge
    60
    Ich kenne Bascom ja nicht, aber bei CONFIG handelt es sich doch sicher darum, einem Port-Pin einen festen Namen zuzuweisen, oder ? Und PORTD und PIND sind doch ziemlich sicher reservierte Token in Bascom, oder etwa nicht ?
    Es muss doch auch in Bascom einen "Compiler-Lauf" geben. Und ich würde wetten, dass dieser einen, oder sogar mehrere Fehler ausgibt. Sicher würde es helfen, die Meldung dieses "Compiler-Laufs" hier mal reinzusetzen.

    Gruß, Andreas

  6. #6
    1hdsquad
    Gast
    Nein, keine Fehler. Und z.B. "Config Portd = Output" heißt nur, dass man den Port als Ausgang definiert. Das muß schon so...
    Man kann auch irgenwas mit DDRC oder so schreiben, kommt aufs gleiche raus...
    MFG

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von steveLB
    Registriert seit
    24.10.2005
    Beiträge
    481
    möglichkeit nr1:
    hat das wirklich keine auswirkungen ?
    z.b. bei Pind.2, einmal heißt es pind.2, dann zeilen später wieder portd.2 und zum schluß hiterm "=" zeichen ists wieder pind.2 , du benennst das selbe 2 mal um.
    Ist es in der "m8def.dat" so drinn das das pind das selbe ist wie portd ?

    möglichkeit nummer 2:
    wenn es egal ist wie man bennent , dann ist es wenn ich das programm richtig interpretiere , dann ist es egal was an input kommt, da du es später eh alles auf 1 setzt, somit wertest du gar kein ausgang aus

    gruß

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,

    beim konfigurieren eines kompletten Ports heißt es "PORT" :

    config porta = output
    config porta = input

    Beim konfigurieren eines Pins heißt es dann "PIN" :

    config pina.0 = output
    config pina.0 = input

    Bei lesen eines als Eingang konfigurierten Ports / Pins heißt es immer "PIN":

    a=Pina
    if pina.0=1 then

    Aber die internen Pullups werden, bei einem auf Input geschaltetetn Pin mit "PORT" eingeschaltet

    Porta.0=1


    Beim schreiben eines als Ausgang konfigurierten Ports / Pins heißt es dann wieder "PORT"

    Porta=255
    Porta.0=1

    Leicht verwirrend


    Vielleicht solltest du mal die Pullups einschalten ?
    (Hier wieder mit "PORT" ! )

    Portd.2 = 1
    Portd.3 = 1
    Portd.4 = 1

    Uuups, übersehen, das hast du ja schon...

    Gruß
    Christopher

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    29.09.2006
    Ort
    Kempen / Ndrh.
    Alter
    60
    Beiträge
    60
    Also sollte das Programm dann doch jetzt so aussehen, oder ?

    Code:
    $regfile = "m8def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000
    
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pind.7 = Output
    Config Pind.2 = Input
    Config Pind.3 = Input
    Config Pind.4 = Input
    
    Portd.2 = 1
    Portd.3 = 1
    Portd.4 = 1
    
    Do
    Portd.5 = Pind.2
    Portd.6 = Pind.3
    Portd.7 = Pind.4
    Loop
    End
    Wobei D5, D6, und D7 im Ruhezustand "1" sein müssten (wegen der Pullups) und nur durch eine Verbindung von D2, D3 oder D4 nach Masse ihren Zustand ändern ...

  10. #10
    Erfahrener Benutzer Roboter-Spezialist Avatar von steveLB
    Registriert seit
    24.10.2005
    Beiträge
    481
    also ich hab mir mal die Wiki durchgelesen und ich würd das so versuchen :

    $regfile = "m8def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000




    Config Portd.5 = Output // stimmt laut Wiki
    Config Portd.6 = Output
    Config Portd.7 = Output
    Config Pind.2 = Input // stimmt laut Wiki
    Config Pind.3 = Input
    Config Pind.4 = Input

    Portd.2 = 1 // das ist doch um die pullups zu setzten oder ?
    Portd.3 = 1
    Portd.4 = 1

    Taster1 Alias Pind.2
    Taster2 Alias Pind.3
    Taster3 Alias Pind.4
    Ding1 Alias Portd.5 // ding ist einfach ein name
    Ding2 Alias Portd.6
    Ding3 Alias Portd.7

    Do
    if taster1=0 then
    Ding1=1
    else
    Ding1 = 0 '
    endif

    if taster2=0 then
    Ding2=1
    else
    Ding2 = 0 '
    endif

    if taster3=0 then
    Ding3=1
    else
    Ding3 = 0 '
    endif

    Waitms 100
    loop
    End

    alles hinter // sind komments

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad