- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: PB2 am ATMEGA 8 Konfigurieren?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    39
    Beiträge
    207

    PB2 am ATMEGA 8 Konfigurieren?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute,

    habe ein Problem: Mein Portb.2 am ATMEGA8-16 TQPF32 will nicht als eingang arbeiten.

    Ich ziehe ihn über einen Taster auf Masse und frage ab ob er auf 0 oder 1 ist. Allerdings erkennt der Controller das signal einfach nicht. Er tut so als wäre er permanent auf 1 (ich habe mit dem Multimeter direkt am Pin nachgemessen, das Signal kommt definitiv an).

    Das Programm 1:1 auf Portb.1 abgeändert funktioniert problemlos

    Ebenso funktioniert alles problemlos, wenn ich den Portb.2 als Ausgang definiere (lasse ihn z.b. ein Rechtecksignal ausgeben was er auch anstandslos ausführt).

    Nun frage ich mich ob man im programm noch irgendwas spezielles konfigurieren muss wenn man den Portb.2 als I/O Eingang nutzen will?

    Anders als der Portb.1 hat Portb.2 neben der OC1 funktion nämlich noch die funktion als slave select pin worunter ich mir jetzt leider auch nichts vorstellen kann...

    vielleicht weiß jemand bescheid... ich sehe das problem nicht
    Grüße Paul

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    SS ist für SPI.
    Sicher das du nicht irgendwo nen kurzen auf der Platine/Schaltung hast?
    Zeig mal deinen Code,manchmal macht man Fehler die man selbst nicht findet.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    39
    Beiträge
    207
    Hi,

    hier ist mein Code. Genauso hab ichs getestet, also ganz einfach gehalten:

    Code:
    ' E4V12 mit ATMEGA8 @ 8Mhz intern
    
    '---------------------------------------------------------
    
     '$sim
     $regfile = "m8def.dat"
     $crystal = 8000000
    
    
    
      '---------------------------------------------------------
    
    
    Config Pinc.0 = Input                                       'ADC freier Eingang
    Config Pinc.1 = Input                                       'ADC "winkelsensor"
    Config Pinc.5 = Input                                       'ADC Current Sense VNH2SP30
    
    Config Pind.2 = Input                                       'freier I/O input
    Config Pind.4 = Input                                       'freier I/O input
    Config Pind.6 = Input                                       'freier I/O input
    Config Pinb.0 = Input                                       'freier I/O input (ICP)
    
    Config Pinb.1 = Input                                       'Hochschalten
    Config Pinb.2 = Input                                       'Runterschalten
    
    Config Pinb.3 = Output                                      'Motor IN A
    Config Pinb.4 = Output                                      'Motor IN B
    Config Pinb.5 = Output                                      'ZU Relais
    
     '---------------------- Variablen -----------------------------------
    
    
    
    '++++++++++++++++ Hauptprogramm +++++++++++++++++++++++++++++++++
    
    Portb.2 = 1
    
    Do
    
    
    
    If Pinb.2 = 0 Then
    
    Portb.5 = 1
    
    Waitms 300
    
    Portb.5 = 0
    
    End If
    
    If Pinb.1 = 0 Then
    
    Portb.5 = 1
    
    Waitms 300
    
    Portb.5 = 0
    
    End If
    
    
    
    
    
    Loop
    
    '+++++++++++++++++++++++++++++++++++++++++++++++++
    
    
    
    End
    Grüße Paul

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2006
    Ort
    Dortmund
    Alter
    36
    Beiträge
    379
    "Portb.2 = 1"
    Ersetz das mal mit PinB.2 = 1
    Und in den Output Confings schreibt man PortB.X anstatt PinB.X.
    Hoffe ich konnte dein problem beseitigen

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    39
    Beiträge
    207
    Hi,

    nein sorry, da muss ich dir leider widersprechen. Zum einen kann man in den configs sowohl Port als auch Pin schreiben, zum anderen kann man auch nicht pinb.2 = 1 schreiben (compiler gibt fehler aus, cannot write to pin register). Hab das alles zur sicherheit auch noch probiert.

    Das komische ist ja wirklich dass ich direkt am Pin (ganz oben am Beinchen vom Controller) nachgemessen hab und da auch ein Statuswechsel stattfindet, der Controller diesen aber nicht annimmt (Hardware ist also fehlerfrei)

    stehe also noch vor genau dem gleichen Problem wie vorher
    Grüße Paul

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2006
    Ort
    Dortmund
    Alter
    36
    Beiträge
    379
    Mist da hab ich mich wohl komplett vertan. Zum einen hast du tatsächlich recht mit dem Pullup aber das man bei Inputs auch Port schreiben kann ist mir absolut neu. Ich war immer der Meinung das das nicht den gewünschten Effekt bringt. Sorry für die Fehlinfo

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Ist mehr raten, als wissen...
    aber schonmal mit "Debounce ..." versucht?

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Eine Portabfrage bei Eingangspins geht meines Wissens nur mit
    "PIN". VG Micha

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    39
    Beiträge
    207
    Hi zusammen,

    schätze mal der Controller hat irgendwie einen Knacks, kann mir das anders nicht erklären. Werd hier wohl oder übel die Hardware ein bisschen umfrickeln müssen...
    Grüße Paul

Berechtigungen

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

Labornetzteil AliExpress