-         

+ Antworten
Ergebnis 1 bis 10 von 10

Thema: Mehrfachnutzung der I/O's fraglich - inbes. ISP-Pins

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    17

    Mehrfachnutzung der I/O's fraglich - inbes. ISP-Pins

    Anzeige

    Hallo Zusammen,

    ich habe eine Frage in Zus. mit der doppelten (teilw. auch dreifachen) Nutzung der I/O's der Atmel AVR Controller.
    Habe hier bereits stundenlang gesucht, aber keinen passenden Hinweis gefunden.

    Das man i.d.R. die I/O's nur für einen Zweck nutzen kann - also entweder Eingang, Ausgang, A/D-Port / PWM, etc. ist mir soweit klar (legt man ja durch das Schaltungsdesign bzw. die Programmierung fest).
    Wenn man jedoch die max. Anzahl der möglichen Ausgänge nutzen möchte, kommt man nicht um die Ports herum, die normalerweise für das ISP bestimmt sind.

    Pin-Bel. MEGA8:.......Pin-Bel. Tiny26:

    MOSI = Port PB3 ...... Port PB0
    MISO = Port PB4 ...... Port PB1
    SCK = Port PB5 ........ Port PB2
    RESET = Port PC6 ..... Port PB7

    Ich benötige für meine Anwendung 15 Digital-Ausgänge und wollte den Tiny26 verwenden. Als Takt würde ich auf den int. 1MHz. Oszillator zurückgreifen, sodass ich keinen ext. Quarz benötige (= 2 freie Ausgänge mehr)
    Das man über die FUSE-Bits den Reset-Eingang deaktivieren kann, habe ich schon gelesen - auch die Folgen so einer Einstellung sind mir klar.
    Den RESET-Eing. bräuchte ich für meinen Anwendungsfall aber gar nicht "missbrauchen", da ja noch ein I/O übrig ist - das wird der RESET (Pin 10 /PB7).
    Wie das allerdings mit den ISP-Ports funktionieren soll, ist mir fraglich.
    Wie soll ich den AVR programmieren, wenn die dafür erforderlichen Anschlüsse (MOSI, MISO, SCK) als Ausgänge konfiguriert sind?
    Wie verträgt sich das mir meinem Programmieradapter (ich verwende den hier mit dem 74HC244 http://rumil.de/hardware/avrisp.html) Wenn der Prog-Dongle noch am AVR-Steckt, während das Programm startet zerschiesst es mir entweder den Controller oder den Dongel - oder beides!?

    Wäre für jeden Tipp sehr dankbar!

    Gruss,
    ULF

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Wenn du RESET als Port verwendest, ist es mit ISP eh Essig, da kann dir MOSI und Konsorten doch egal sein.

    Ansonsten schaltest du die ISP-Pins als OUT, das geht prima. Evtl mit Widerständen vom ISP-Progger abkoppeln. Musst eben man den Schaltplan zu deinem Progger anschauen.

    Beim ISP-Proggen zieht der Progger den RESET auf 0, wodurch die ISP-Pins wieder Eingänge sind und geproggt werden kann.

    Wenn RESET als Port verwendet wird, ist proggen ausschliesslich via paralleler HV-Programmierung möglich.
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    17
    Hallo,

    danke für den Tipp! Wie gesagt - den RESET-Eingang werde ich nicht als Ausgang verwenden, sondern seine ursprüngliche Funktion als RESET-Eingang beibehalten. Demnach kann der Tiny26 noch über das ISP programmiert werden.
    Wenn ich dich richtig verstanden habe, braucht man lediglich in die 3 Signalleitungen (MOSI, MISO und SCK) des Programmieradapters Widerstände einzuschleifen !? Ich schätze mal dass 10k zum Schutz des AVR's und des 74HC244 im Prog.-Adapter ausreichen. Reicht das dann aber noch für eine "saubere" Programmierung? Ich habe keine Ahnung, was im Moment des Programmierens für Stöme in die Ein-/Ausgänge des AVR's fließen - nicht dass es mir die Pegel verfälscht. (keine sauberen H-/L-Pegel, weil die meiste Spannung über dem Widerstand abfällt). Hat sowas schonmal jemand gemacht und kann mir ggf. einen Tipp bzgl. Dimensionierung geben?

    Vielen Dank!

    Ulf

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Die ISP-Pins als OUT zu verwenden geht ohne Probleme, wenn das Wackeln beim Proggen nicht zu Problemen im Rest deiner Schaltung führt. Die Pins als IN zu verwenden ist nicht so einfach, weil der ISP-Adapter bzw das IN-Signal die Pegel verzieht.

    Die ISP-Ports beim Proggen sind hochohmig, daher ist der Stromfluss minimal und beschränkt sich auf Input Leakage von ein paar µA und Aufladen der Port-Kapazität von 74*244 bzw AVR.

    Ich verwende nen zusammengeschusterten Simpel-Adapter ohne 74*244, selbst da gibt es keine Probs. Allerdings ist da die Anbindung von MOSI und SCK konstruktionsbedingt hochohmig, sofern man 4.7Ohm als hochohmig bezeichnen mag. MISO geht normal direkt durch zum COM-Port, da hab ich 1kOhm zwischengehangen. 10kOhm sollte auch unkritisch sein.

    Bei gestecktem Progger puste ich mit 600kByte/s Daten über SPI raus, ohne Zicken.
    Disclaimer: none. Sue me.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.03.2005
    Ort
    Bonn
    Beiträge
    32
    hallo ulfens!
    schau doch mal hier:

    http://www.roboternetz.de/phpBB2/zei...ag.php?t=12282

    der widerstand kommt nicht in die isp-leitung, sondern vor das teil was du anschliessen möchtest, um es nicht durch die programmiersignale des programmers zu beschädigen.
    alternativ kannst du an mosi, miso und co aber auch dinge anschliessen die nicht kauptt gehen können (z.b. taster!!!). piezos, ics, motortreiber usw. würde ich aber mit dem zusätzlichen 10K davor absichern. achso: falls wirklich jemand taster an die ISP pins anschließt, sollte er AUF KEINEN FALL die taster während der programmierung drücken!!! sonst werden die programmiersignale des programmers kurzgeschlossen!
    du kannst natürlich auch statt der widerstände, 2polige jumper (steckbrücken wie im pc!) verwenden. ist aber jedesmal ne fummelarbeit die zu montieren.

    atmel gibt noch infos dazu:
    http://www.atmel.com/dyn/resources/p...ts/doc2521.pdf
    versteht man auch einigermaßen, ohne gut englisch zu können.

    schau mal im doc2486 zum atmega8 von atmel (www.atmel.com) auf seite 220:
    Fusebit#7: Select if PC6 is I/O pin or RESET pin
    zu den fusebits: http://s-huehn.de/elektronik/avr-prog/avr-prog.htm ganz runter scrollen!

    da kannst du auch einen externen quarz einstellen, wenn dir der interne nicht schnell genug ist. du kannst den µC aber auch kaputt machen (durch setzen der falschen fusebits). an deiner stelle würde ich von den fusebits erstmal die finger lassen und den resetpin als resetpin lassen (so wie du es bereits geschrieben hast)!

    ich hoffe, das hat dir geholfen.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    du kannst natürlich auch statt der widerstände, 2polige jumper (steckbrücken wie im pc!) verwenden. ist aber jedesmal ne fummelarbeit die zu montieren.
    Oder wie ich auch schonmal vorgeschlagen habe, eine 5 polige Diodenbuchse nehmen, wie sie früher oft verbreitet war mit einem 5 poligen Umschalter.
    Beim Einstecken des Steckers vom Programmiergerät schaltet der Umschalter die restliche Schaltung von den ISP-Pins einfach frei. So können die für alles was man will verwendet werden.
    Da könnte sogar an Ausgang eines Pins ein Relais sein, der einen 5kW-Motor einschaltet an dessen Welle Messer angebracht werden. Im "Normalfall" könnte das tote geben. Mit der Buchse nicht, wenn sie richtig beschaltet wird.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    17
    Hallo Zusammen,

    nochmal vielen Dank für die Antworten! Hat mir wirklich sehr geholfen.
    Ich verwende jetzt in jeder meiner Schaltungen einfach 10k Widerstände in den Leitungen MISO, MOSI, SCK. Da kann ich - bei aufgestecktem Programmieradapter - diese Pins ruhig auch als Ausgang definiert und auf "H" gesetzt haben. Das macht Alles Nix Die Widerstände stören aufgrund der super-kleinen Ströme auch nicht beim "brennen" bzw. "programmieren". Es darf natürlich keine Last parallel an den Ausgängen hängen, die mir die Pegel wegzieht (z.B. eine LED) - aber sonst haut es prima hin.
    Nochmal vielen Dank!

    Gruss,
    Ulfens

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    alternativ kannst du an mosi, miso und co aber auch dinge anschliessen die nicht kauptt gehen können (z.b. taster!!!). piezos, ics, motortreiber usw. würde ich aber mit dem zusätzlichen 10K davor absichern. achso: falls wirklich jemand taster an die ISP
    Ich habe an meinem ATMega8 am MOSI-Pin (PB3) einen Taster angeschlossen, kann den aber gar nicht auslesen.
    Kann es sein, dass man den Pin nur als Ausgang aber nicht als Eingang verwenden kann?
    (Für den ISP brauche ich den PIN gar nicht, da ich seriell über Bootloader programmiere).

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    32
    Beiträge
    214
    Wie genau hast du den Taster denn angeschlossen?
    Mit Pullup- /Pulldown-Widerstand oder anders?

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Wie genau hast du den Taster denn angeschlossen?
    Mit Pullup- /Pulldown-Widerstand oder anders?
    Bei der Schaltung habe ich das erste mal auf externe Pullups verzichtet und wollte die internen Pullups nutzen.

    Der Taster hängt mit einer Seite direkt am MOSI-Pin und mit der anderen an GND. Icih programmiere mit Bascom und habe den internen Pullup eingeschaltet.

+ Antworten

Berechtigungen

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