Hallo zusammen, ich möchte mir eine Schaltung zur Motoransteuerung mit Hilfe eines 8-pin AtTiny aufbauen. Gleichzeitig möchte ich, daß das Ganze in der Schaltung immer noch programmierbar bleibt, ohne Jumper, Schalter oder ähnliches umzuschalten. Die Ansteuerung des Motors geschieht über PWM und externe H-Brücke. Dazu benötige ich 2 Ausgänge. Dann noch 2 Ausgänge für LEDs und einen Eingang für eine serielle Schnittstelle. Das Ganze belegt von den 6 Port-Pins also schon 5. Ich habe leider bislang noch keine Erfahrung mit ISP. Es scheint aber, daß ich dafür insgesamt 4 Pins benötige, MOSI MISO SCLK und Res. Wie muß ich jetzt meine Schaltung aufbauen, damit ich per ISP programmieren kann und nach der Programmierung die Schaltung wie gewünscht verwenden kann? Über ein Schaltungsbeispiel wäre ich echt dankbar. Pumpernickel
wie genau stellst du dir das denn vor?? seriel 1 pin?? h-brücke 2 pins?
Einige Denkanstöße findest du hier: http://www.brummbaerhannes.de/hannes/avr/fr_t12/Fahrst3.html ...
@Hannes Vielen Dank für den Link. Ich habe mir deine Schaltung mal angeschaut. Wie laüft denn da die Programmierung per ISP genau ab? Läßt du dabei die H-Brücke angeschlossen? @Jason Danke für den Hinweis. Die angegebene Schaltung benutzt laut Schaltplan die Pins ausschließlich für ISP. Ich habe aber das Problem der Doppelbelegung, d.h. Programm läuft = normale Schaltung, ISP läuft = ISP Spannungen/Datenströme. Oder habe ich da jetzt etwas übersehen? @Sebastian seriell 1 pin: Ein serieller Datenstrom wird über einen Eingangspin empfangen. h-brücke 2 pins: Wie in Hannes' Schaltung angegeben. Der eine Pin gibt eine PWM zur Drehzahlregelung an den Motor aus. Wird die PWM am anderen Pin ausgegeben dreht der Motor in Gegenrichtung. Werden beide Pins gleichzeitig auf High oder Low gelegt wird der Motor kurzgeschlossen und somit per elektrodynamischer Spannung abgebremst.
Die H-Brücke liegt an den Pins, die vom ISP nicht genutzt werden. Es gibt zwar H-Brückenschaltungen, die bei gleichzeitigem Ansteuern beider Brückenzweige den Motor kurzschließen, es gibt aber auch H-Brücken (die Mehrheit), bei denen gleichzeitiges Ansteuern beider Zweige verboten ist, da dann die Betriebsspannung über die Brücke kurzgeschlossen wird. Einige andere Schaltungen mit AVRs findest du hier: http://www.brummbaerhannes.de/hannes/avr/avr.html Bei Nutzung der ISP-Leitungen für andere Zwecke sind zwei Dinge zu beachten: - Die ISP-Leitungen dürfen durch die angeschlossene Hardware nicht belastet oder gar kurzgeschlossen werden. - Das "Klappern" (ISP-Pegel und Impulse) an den ISP-Leitungen darf an der Peripherie nix aktivieren, was Schaden anrichten kann. Wenn da während des Programmupdates ein paar LEDs blinken, dann ist das ok, wenn aber Motoren anlaufen, dann ist das nicht so gut. ...
@Hannes, vielen Dank für deine Antwort. Ich habe mir auch gleich sämtliche Schaltungen mit ATtiny auf deiner Website angeschaut. Das hat mir wirklich weitergeholfen. Ich werde also meinen seriellen Eingang und die beiden LED-Ausgänge für SCK, MISO und MOSI verwenden. Wird programmiert sende ich einfach keine seriellen Daten, damit reicht ein Entkopplungswiderstand. Und die LEDs haben sowieso Vorwiderstände. Den Reset-Pin benutze ich dann in meiner Schaltung weder als Ein- noch als Ausgang. Damit müßte das Ganze doch dann funktionieren? Mal was anderes: Wäre es auch möglich in solch einem ATtiny einen Bootloader unterzubringen und das neue Programm über den seriellen Pin runterzuladen? Oder sind diese 8-Füßler dazur zu "tiny"? Pumpernickel
Ich weiß ja immer noch nicht, welchen AVR du nutzen willst. Ist ja auch dein Bier und nicht meins. Aber: Der Tiny12 und Tiny15 unterstützt kein SPM, damit gibt es auch keinen Bootloader. Dass der Platz dafür auch etwas eng ist steht auf einem anderen Blatt. Der Tiny12 und Tiny15 hat auch kein UART, unterstützt also auch keine serielle Schnittstelle (RS232) per Hardware. Wenn du sie per Software machen möchtest, dann müsstest du den INT0-Pin dafür nutzen. Hohe Übertragungsqualität wirst du vermutlich nicht erreichen, dazu ist der interne RC-Taktgenerator nicht stabil genug, auch nicht bei ordentlicher Kalibration. Vielleicht solltest du doch erstmal das Datenblatt etwas genauer lesen um zu sehen, welche Features (und Befehle) verfügbar sind und wie man sie nutzt. Den Reset-Pin brauchst du als Reset für ISP. Wenn du ihn per Fuse zu einem Portpin umfunktionierst, dann kann der AVR kein ISP mehr. Du bekommst ihn nur im Hochvolt-Modus wieder zurück. ...
@Hannes Vielen Dank für deine Hilfe. Dem Hinweis "SPM" werde ich nachgehen, habe aber keine große Hoffnung auf einen Bootloader. Daß AtTiny12 und AtTiny15 keinen HW-UART haben hatte ich schon bemerkt, dann werde ich das Ganze entweder wie von dir vorgeschlagen per Interrupt betreiben oder wie in der AN305/AVR305 (DOC0952.pdf) von Atmel beschrieben als Software UART programmieren. Allerdings setzt auch diese AN einen Quarz voraus. Da die Daten aber alle 35ms wiederholt werden sollten evtl. verfälschte Bytes (genauer: von der SW durch Taktschwankungen falsch interpretierte Bytes) nicht allzuviel ausmachen. Ich kann zwar nach Datenblatt den Worst-Case nachrechnen aber wie oft der wirklich in der realen Schaltung auftritt sagt dies leider nicht aus, deshalb "Versuch macht kluch." Letzte Möglichkeit wäre warten auf die AtTiny25/45/85 Typen. Die haben immerhin eine HW-USI. Damit soll laut AN307/AVR307 (DOC4300) auch eine UART-Funktion programmierbar sein. Ob die mit dem internen Oszillator besser funktioniert wie die Softwarelösung habe ich aber noch nicht nachgelesen. Das mit dem Resetpin ist mir klar, ich benötige ja nur 5 Port-Pins, bleibt also noch der Reset-Pin übrig. Also nochmals vielen Dank für deine Hilfe. Pumpernickel
Hi Juergen... Seit heute ist ja auch bei Reichelt der Tiny13 verfügbar. Ich habe mir seine Features aber noch nicht genauer angesehen. Er taktet intern zwar schneller, hat aber nur einen Timer. Daher sehe ich für meine Anwendungen keinen Grund vom Tiny15 auf den Tiny13 umzusteigen. Mit dem Tiny25 wird das wohl noch etwas dauern. Ich betrachte einen neuen Typ erst als verfügbar, wenn er bei Händlern wie Reichelt lieferbar ist. In welcher Sprache willst du programmieren?
Hallo Hannes, Mit der Verfügbarkeit des Tiny25 hast du natürlich recht. Was ich wirklich hasse ist die Fehler/Probleme bei solchen Erstentwürfen rauszufinden. Man ist sich nie sicher macht man selbst den Fehler oder doch die HW oder der neue Assembler/Compiler/Simulator/Emulator. Und der Support weiß meist auch von nichts. Deshalb werde ich wohl Tiny13 oder Tiny15 einsetzen. Ob der eine Timer des Tiny13 ausreicht weiß ich noch nicht genau. Da muß ich die Datenblätter noch mal in Ruhe vergleichen. Da das Programm nicht sonderlich kompliziert werden wird gedachte ich in Assembler zu programmieren. Mit C komme ich nicht wirklich gut zurecht, BASIC habe ich nie verwendet sondern nur gelesen und Pascal scheint mir für solch einen Winzling doch etwas zu groß zu sein. Spricht etwas aus deiner Erfahrung dagegen? Welche Entwicklungswerkzeuge verwendest du denn?
Hi... Ich nutze AVR-Studio und schreibe in Assembler. Ich glaube auch nicht, dass man kleine Mikrocontroller mit einer Hochsprache sinnvoll programmieren kann, wenn man Null Ahnung von Assembler hat. ASM ist also für den Einstieg die richtige Wahl. Bisher sind meine Projekte so klein (überschaubar), dass sie noch mit ASM realisierbar sind. C ist natürlich gut (wenn man es kann), ist mir aber noch zu kryptisch. Bei ASM findet man alle benötigten Informationen im Datenblatt und der Befehlsreferenz (Hilfe des AVR-Studios), bei einer Hochsprache kommt noch die Doku des Compilers und vor allem der Bibliotheken dazu. Das ist mir dann doch zuviel Sucherei. BASCOM halte ich nicht für die beste Wahl. Denn es verdummt. Man hat zwar den "schnellen Erfolg", wenn man mit Null Wissen ein LCD oder die serielle Schnittstelle nutzt, aber man ist dem Compiler und den vorgefertigten Bibliotheken auf Gedeih und Verderb ausgeliefert. Ein Blick ins Datenblatt bringt keine Erkenntnisse, da es für jedes Hardwarefeature eine (kryptische) Config-Anweisung gibt. Da ist mir das Setzen der (im Datenblatt beschriebenen) Bits in den I/O-Registern des AVRs bedeutend lieber. Und die Grenze der Demo-Version ist schnell erreicht, dann ist Kaufen angesagt. Von PASCAL habe ich keine Ahnung, auf dem PC schreibe ich in QB und VB. Auf dem Commodore Plus/4 schrieb ich in BASIC und Assembler, auch gemischt, also BASIC mit eingebundenen ASM-Routinen. Von C habe ich eigentlich auch keine Ahnung, aber ich schau mir immer öfters Beiträge zum Thema C an. Doch bisher halten mich die gestellten Fragen und deren Antworten noch davon ab, mir das anzutun und mit C zu beginnen. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.