PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sehr sehr seltsames Problem



Powell
22.05.2008, 14:41
Hallo zusammen,

ich habe derzeit ein seltsames Problem. Schaut euch bitte den Ausschnitt meiner MC Schaltung im Anhang an.

Folgendes passiert hier: An CPC 18 und CPC 19 sind zwei Taster angeschlossen, die bei betätigung auf GND schalten.

Über die Pullups R13 und R14 wird der Eingang auf 5V gezogen, wenn nicht geschaltet wird.

Die Kondensatoren und Widerstände dienen zur Entstörung, da das ganze im KfZ Bereich eingesetzt wird (ohne die Elemente hat die Schaltung vorher verrückt gespielt).

In der Software wird nun PB3 und PB4 mit dem Debounce Befehl abgefragt, und wenn einer der Taster gedrückt wird, wird ein Motor kurz angesteuert.

So und hier nun mein Problem: 90% der Zeit funktioniert das ganze hervorragend, nur manchmal - es gibt keine erkennbare Ursache hierfür - funktioniert einfach ein Taster nicht mehr. Man drückt und drückt aber es passiert nichts. Das sonderbare ist dann, wenn man ein mal den anderen Taster drückt und dann wieder den Taster drückt, der eben nicht funktioniert hat, geht auf einmal alles wieder ganz normal....

Was kann das sein? Die Software schließe ich definitv aus, die ist ganz einfach und da ist kein Punkt an dem sie auf irgendeinen Befehl wartet.
Ist es möglich, dass der Controller "schlecht" Programmiert wurde, also irgendein Übertragungsproblem vorlag? (Bascom, Fehlermeldung hatte ich allerdings nicht).
Ich kann mir das einfach nicht erklären, und hoffe jemand von euch hat ne gute Idee.

Grüße Paul

PicNick
22.05.2008, 15:41
... schließe ich definitv aus..
Sei vorsichtig mit sowas :-)

Mir scheinen die 2 x 10k Werte etwas hoch, um die Pins sicher auf NULL zu ziehen, aber da kann ich mich täuschen.
Verwendest du die internen Pullups ?

PICture
22.05.2008, 16:03
Hallo!

Vor allem im störungsreicher Umgebung (KFZ) sollten keine Kondensatoren und möglichst kleine Widerstände an den digitalen Eingängen eines µCs benutzt werden.

Ich vermute, dass an CPC18 und CPC19 Taster angeschlossen sind. In dem Fall würde ich nur die pull-ups R14 und R13 übrig lassen und dessen Werte deutlich sogar unter 1k senken. Die minimale Werte lassen sich aus maximalem Strom, der durch die Taster fließen darf, berechnen. Im schlimmsten Fall müssen die Tastenzuleitungen geschirmt werden (nur ein Ende des Schirms mit Masse verbunden).

MfG

Powell
22.05.2008, 16:45
Hi Robert, Hi Picture,

Die internen Pullups werden nicht verwendet, die Eingänge werden auch sicher auf null gezogen, das habe ich schon überprüft.

@ robert: gerade durch diese Kondensatoren und Widerstände funktioniert das ganze. Ich habe es ursprünglich mal nur mit Pullup auf 5V gemacht, und dort wurden ständig Tasterbetätigungen erkannt, das Programm hat total verrückt gespielt. Mit dieser Beschaltung funktionierts hingegen einwandfrei.
Dass an CPC 18 und 19 die Taster angeschlossen sind ist richtig (hatte ich oben erwähnt). Wenn ich die Pullups derart reduzieren würde (Taster bis 3A zulässig) dann gibts ein Problem mit meinem 78L05 (0,1A). Nein, ich denke das kann nicht der Grund sein.
Ich frage mich die ganze Zeit: Wieso muss ich, wenn Taster A nicht mehr reagiert, Taster B drücken, um Taster A wieder funktionstüchtig zu machen? Das ist doch total unlogisch....

PICture
22.05.2008, 17:29
Dann müsste es doch ein unlogisches Softwareproblem sein.

MfG

Besserwessi
22.05.2008, 17:55
Die Fehlerbeschreibung sieht mehr nach einem Software Problem aus. Sonst könnte es eher ein Problem mit dem Spannungsregler oder dem Takt sein.

Lunarman
22.05.2008, 21:36
Vll. könntest du ma das programm posten? Ich würd eigentlich ausschließen dass es einen nicht bemerkten Übertragungsfehler gegeben hat der ne ganze if-abfrage einbaut UND nicht bemerkt wird. Naja viel Glück noch!

MfG

shaun
23.05.2008, 11:46
@Picture: dann musst Du mal bei Bosch, Hella und wie sie alle heissen anrufen. Die machen das nämlich falsch und setzen an jede Leitung zur Aussenwelt einen Kondensator und häufig auch noch mal direkt an den Controller. Gerade erst gesehen, als ich ein Testprogramm für eine Klimasteuerung geschrieben habe.

X-917
23.05.2008, 12:07
Hallo zusammen,
Was passiert denn, wenn man beide Taster gleichzeitig drückt?
Reagiert er einfach auf den, der eine Millisekunde früher gedrückt wurde?
Könnte es sein dass sich der Kondensator des Tasters, den man eben
gedrückt hat, noch nicht aufgeladen hat und so den Port auf 0 hält, während du den anderen Taster drückst? Obwohl, eher unwahrscheinlich, da die Kondensatoren sehr klein sind. Ich empfehle auch kleinere Pullups (z.B. 4K7 oder so)
MfG X-917

Powell
23.05.2008, 21:32
Hi zusammen,

also hier mal mein Code:


'">>>>>>>>>>>>>>>>>>>>>>>SOFTWARE E3V1.6 <<<<<<<<<<<<<<<<<<<<<<<<<<<"

'PB3= IN 1 <-> PB0= OUT 1

'PB4= IN 2 <-> PB1= OUT 2

'PB2= Abfrage Schalter S1

$regfile = "attiny25.dat"

$crystal = 1000000

$eeprom

Declare Sub Hoch

Declare Sub Runter





'---------------------------------------------------------

Ddrb = &B00000011 'Pin Pb0,1 Ausgang, rest Eingang

Portb.2 = 1 'Pullups von PB2 aktiviert 'PullUp von Pin PD0+1+rest aktivieren

'----------------------------------------------------------


Do


Debounce Pinb.3 , 0 , Hoch , Sub

Debounce Pinb.4 , 0 , Runter , Sub

Loop

'----------------------------------------------------------

Sub Hoch



Portb.0 = 1
Portb.1 = 0

If Pinb.2 = 0 Then
Waitms 100

Else
Waitms 75

End If


'^^^^^^^^^^^^^^^^--------------------------------------------- Schaltzeit

Portb.0 = 0
Portb.1 = 0





End Sub

Sub Runter


Portb.1 = 1
Portb.0 = 0

If Pinb.2 = 0 Then
Waitms 100

Else
Waitms 75

End If
'^^^^^^^^^^^^^^^^--------------------------------------------- Schaltzeit

Portb.1 = 0
Portb.0 = 0




End Sub


End

Wie gesagt, wirklich ganz einfach das Programm...

Beide Taster gleichzeitig drücken habe ich noch nciht ausprobiert, allerdings denke ich dass auch hier das Programm erst nur auf den Taster reagiert, der "das Programm wieder normalisiert" und danach dann auch der andere Taster wieder funktionstüchtig ist.

Dummerweise ist es immer so, dass wenn ich will dass es nicht geht, es immer geht... verflixte Technik da.

Was mir noch eingefallen ist, was unter umständen (aber auch sehr unwahrscheinlich) diesen Fehler verursachen kann: Die Controller steuern einen VNH2SP30 Motortreiber an, dieser hat die Eingänge INA und INB, wenn INA=INB wird gebremst, wenn INA logisch ungleich INB dann dreht sich der Motor links oder rechts. Außerdem gibts noch einen ENA und ENB eingang, wenn der Chip ein Problem hat oder der Pin auf 0 gezogen wird, wird eine Halbbrücke abgeschaltet. Bei mir liegen die Pins aufeinander und werden über einen 1K Pullup auf 5v gezogen. Wenn einer abschalten würde, dürfte das ganze gar nicht mehr reagieren und nicht nur in eine Richtung...
Wer Erfahrung mit diesem Chip hat, und es dort evtl. einen Bug gibt... immer her mit den Tips... ich bin hier am verzweifeln... ](*,)