Forum: Mikrocontroller und Digitale Elektronik Port B als Eingang - nun kann ich nicht mehr flashen


von Paul H. (paul_h20)


Lesenswert?

An einem Atmega32 der mit 16MHz läuft habe ich an Port B
4 Stück Dreh-encoder angeschlossen.

DDRB = 0x00;   // rotary inputs
PORTB = 0xFF; // enable  pullups

Wenn keiner daran dreht, dann verhalten sich diese wie offene Taster,
also ca. 20cm Kabel.
Wegen diesen 20cm Kabel geht jetzt die ISP Programmierung auf den 
Leitungen PB5-7 nicht mehr:

avrdude: Device signature = 0x000000

Wenn ich den Stecker mit dem Kabel zu den Dreh-encodern entferne, dann 
geht's wieder.

Kann ich das irgendwie entstören, so dass ich den Stecker mit dem Kabel 
zu den Dreh-encodern dran lassen kann ?

von Roland .. (rowland)


Lesenswert?

Paul H. schrieb:
> Wenn keiner daran dreht, dann verhalten sich diese wie offene Taster,
> also ca. 20cm Kabel.

Sicher? Gewöhnliche Encoder mit AB-Signal verbinden auch wenn keiner 
Dreht je nach Stellung einen oder beide Signalausgänge mit dem 
Gemeinsamen Anschluss.

Ansonsten können die 20cm Kabel auch stören. Einfach mal nur mit dem 
Kabel probieren, und den Encoder abklemmen.

von D. V. (mazze69)


Lesenswert?

Paul H. schrieb:
> Wenn keiner daran dreht, dann verhalten sich diese wie offene Taster

Wenn dem so wäre, dürften sie die Programmierung nicht behindern.
Was sagt denn das Datenplatt der Drehenkoder dazu?

von F. F. (foldi)


Lesenswert?

Ich erlebe Ähnliches bei dem Tiny10, aber da habe ich die als Ausgang 
und das Programmieren funktioniert auch nur mit getrennter Peripherie.

In einigen Atmel Dokumenten, so auch doc8169.pdf, weisen die auf 
Probleme beim Programmieren hin, auch auf zu verwendende Kapazitäten, 
aber sie schreiben auch, das betrifft jetzt aber speziell PDI beim 
Xmega, dass man die Pullups und Kapazitäten trennen soll, während des 
Programmierens.

Vielleicht ist das ein generelles Problem.
Werde mal verschiedene Varianten bei dem ATTiny10 ausprobieren und dann 
schreib ich das, wenn gewünscht.

von spess53 (Gast)


Lesenswert?

Hi

>Wenn keiner daran dreht, dann verhalten sich diese wie offene Taster,

Wenn es mechanische Encoder sind, dann verhalten sie sich wie Schalter, 
nicht wie Taster.

Die Lösung deines Problems ist in der AppNote AVR042 beschrieben.

MfG Spess

von Paul H. (paul_h20)


Lesenswert?

Roland ... schrieb:
> Sicher?

Ja, hab ich gemessen. nur wenn die  Position zwischen 2 Rasten befindet,
dann schaltet er zum mittleren pin durch.

so sieht das Bauteil aus:
http://i.bosity.com/office_cache/259/14002056/220000011315191619_14002056_3_image.jpg


Ich hab meine IOs nun etwas anders verteilt.
Flashen funktioniert wieder – auch nachdem ich PB4(SS) und PB5(MOSI) 
wieder als Eingang für einen Rotary Encoder benutze.

PB6 und PB7 habe ich jetzt frei gelassen - sie werden nur noch beim 
flashen verwendet.


http://blog.cipworx.org/laserman/2013/12/29/home-cockpit-baubericht-teil-4/

von Achim M. (minifloat)


Lesenswert?

Serienwiderstände 1kΩ in die entsprechenden ISP Leitungen rein.

von Amateur (Gast)


Lesenswert?

Jump and feel good!

Ein Jumper, der alternativ die Verbindung zum ISP oder zum Encoder 
herstellt und das Problem ist gegessen.
In der Luxusversion: Schalter vorsehen. Es gibt auch Umschalter in 
DIP-switch-größe.
Eine dauerhafte Lösung, sollte einschließen, dass der Encoder genau 
zwischen zwei Stellungen steht und Dir das Programmieren zur Freude 
macht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.