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.
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
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.
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
"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
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
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![]()
Ist mehr raten, als wissen...
aber schonmal mit "Debounce ..." versucht?
Eine Portabfrage bei Eingangspins geht meines Wissens nur mit
"PIN". VG Micha
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
Lesezeichen