- LiTime Speicher und Akkus         
Ergebnis 1 bis 9 von 9

Thema: einfacher Zähler funktioniert im Simulator, real jedoch nich

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.03.2010
    Beiträge
    5

    einfacher Zähler funktioniert im Simulator, real jedoch nich

    Anzeige

    Powerstation Test
    Hey,
    Ich möchte in der nächsten Zeit eine Geschwindigkeitsanzeige programmieren. Nun habe ich erstmal angefangen etwas zu programmieren, damit eine Zahl bei jeder steigenden Taktflanke, die durch einen einfachen Schalter ausgelöst werden soll um 1 erhöht wird. Im Bascom-Simulator funktioniert das Programm. In der Realität sieht es jedoch folgendermaßen aus: Solange der Schalter nicht betätigt ist, zählt das Programm einfach schnell nach oben ohne Halt. Sobald man den Schalter betätigt, bleibt der Zähler stehen. Löst man den Schalter wieder, zählt das Programm weiter.
    Woran kann das liegen?
    Folgendes ist der Quellcode:
    Code:
    $sim
    $regfile = "m32def.dat"
    $crystal = 16000000
    Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
    Config Portd.2 = Input
    Config Int0 = Rising
    Enable Interrupts
    Enable Int0
    Cls
    
    Initlcd
    Dim D As Integer
    Enable Interrupts
    
    
    Config Lcd = 20 * 4
    D = 0
    On Int0 Abc
    Do
    Initlcd
    Cls
    Lcd D
    Loop
    End
    
    Abc:
    D = D + 1
    Return

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Wie schaut denn die Hardwareanbindung vom Taster aus?
    Der Beschreibung nach hat der Pin INT0 bei nicht gedrücktem Schalter keinen festen Pegel.
    #ifndef MfG
    #define MfG

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.03.2010
    Beiträge
    5
    Der Taster ist an - (5V) angeschlossen.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Naja... wie genau?
    Oder anders gefragt: Hat der Pin am AVR bei nicht gedrücktem Schalter einen definierten Pegel oder hängt der frei in der Luft und wird nur bei gedrücktem Schalter auf +5V bzw. Masse gezogen?
    Falls letzteres: Schlecht. Dem Programm nach soll der Schalter den Pin anscheinend nach +5V bringen. D.h. es fehlt ein Widerstand am Pin, der ihn nach Masse runterzieht.
    Ohne irgendwas sucht sich der Pin irgendeinen Pegel; darum feuert der Interrupt auch die ganze Zeit.
    #ifndef MfG
    #define MfG

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.03.2010
    Beiträge
    5
    Ich habe einen internen Pull-Up-Widerstand genutzt. Also so sieht der Quelltext aus, mit dem ich die Schaltung getestet habe.

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
    Config Lcdbus = 4
    
    
    Config Pind.2 = Input
    
    Config Portd.2 = 1
    
    Enable Interrupts
    
    Cls
    
    Initlcd
    Dim D As Integer
    Enable Interrupts
    
    
    
    D = 0
    
    
    Do
    If Portd.2 = 0 Then D = D + 1
    
    Locate 1 , 1
    Lcd D
    Loop
    End

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    Hallo alle zusammen
    ich versuche auch so was zu realisieren doch ich hab festgestelt, dass auf meinem Display sofort hochgezählt wird wenn ich an meinem rn-contoler Bord den Portd.2 (into) mit einem draht berühre der aber an keiner Spannung oder Masse angeschlossen ist. Ich hab nicht herausfinden können an was das liegt. Falls ihr ne idee habt also mir kommt das ihrgendwie komisch vor ich hab auch schon gemessen ob ihrgend wie ein kurzschluss vorhanden ist , is aber keiner.
    Würed mich über ideen freune

    lg Micha

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    D.h. der Interne Pullup zieht nach 5V und der Taster beim drücken nach GND? Wäre dann Pegelmässig ok.


    Nur wundert mich, wenn es mit dem Quelltext geklappt hat, da die Zeile:
    If Portd.2 = 0 Then D = D + 1
    nicht das liest, was du haben willst. Zum Einlesen von Tastern braucht man Pind.2.

    Und was genau hast du mit Config Portd.2 = 1 vor? Den auf 1 setzen? Dann braucht man Config nicht. Zum Einschalten der Pullups auch nicht.
    Config braucht man da nur zum Festlegen, ob der Pin Input oder Output sein soll.


    dass auf meinem Display sofort hochgezählt wird wenn ich an meinem rn-contoler Bord den Portd.2 (into) mit einem draht berühre der aber an keiner Spannung oder Masse angeschlossen ist.
    Und das ist genau das Problem mit dem nicht definierten Pegel. Da nur ein Draht dranhängt, wirkt dieser Draht (oder idealerweise schon der Pin des Controllers) als Antenne. Jedes el. Feld in der Nähe zieht den Pegel irgendwohin; hängt von Mondphase, Sauberkeit der Katze, etc. ab, also im Prinzip nicht vorhersagbar.
    Darum braucht man hier eben einen Pullup/Pulldown-Widerstand, der den Pin im unbeschalteten Zustand trotzdem auf einen definierten Pegel bringt.

    Hängt also nur der Draht am Pin und sonst nichts, ist das ein total normales Verhalten.

    Ich hab das gleiche Phänomen mal bei den ADC-Pins gehabt, d.h komplett unbeschaltete Pins (nur ca. 10cm Kabel bis zum Stecker) und dann mal ständig die Spannung am Pin gemessen. Resultat:
    http://www.youtube.com/watch?v=-1LVgI2BDJ0
    Die Netzfrequenz von 50Hz (die ja eigentlich überall ist) hat sich mit der Abtastfrequenz überlagert und damit dieses langsame Schwingen erzeugt.
    #ifndef MfG
    #define MfG

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    hey Jaecko

    vielen dank des mit dem internen pillup wiederstand hab ich ihrgendwie verpeilt das man da kein config braucht dake( anfänger fehler )

    ich muss des dann mal ausprobieren aber ich denk dan gibts keine probleme

    noch mal danke
    lg Micha

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    hey Jaecko
    noch mal danke hatte jetzt mal zeit des kurz zu testen und hat alles problemlos geklappt
    gruß micha

Berechtigungen

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

LiFePO4 Speicher Test