Port B als Eingang - nun kann ich nicht mehr flashen

OP #3461369
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 ?
#3461374
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.
#3461381
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.
Gast #3461385
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
OP #3481672
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/
Gast #3481748
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.