Hallo! Bin blutiger Anfänger in der AVR-Programmierung und wollte fragen, ob folgender Code für den ATTiny15 funkionieren möchte (Ich möchte auf jeden 2. Pin 5V legen und damit eine LED zum leuchten bringen.) Leider funktioniert das nicht. Ich benutze zum Assemblieren AVRStudio und zum Programmieren PonyProg, da ich kein Board von Atmel habe (kann nicht direkt debuggen). ----------------------------------------------------- .include "tn15def.inc" .DEF mp = R16 .DEF i = R17 .DEF j = R18 main: ldi i,0x18 ;Watchdog ausschalten ldi j,0x00 out WDTCR,i out WDTCR,j ldi mp,0xFF ;alle Ports auf Ausgang out DDRB,mp loop: ldi mp,0x55 ;jeden 2. Port setzen out PORTB,mp rjmp loop ----------------------------------------------------- Für eine Antwort wäre ich super dankbar! Grüssle, Andreas Geiger
Hallo... Was du da mit dem Wachhund anstellst, verstehe ich jetzt nicht. Der ist nämlich beim Reset deaktiviert und braucht nicht behandelt zu werden. Der Rest (Datenrichtung in DDRB, Bitmuster in PORTB) ist in Ordnung und müsste funktionieren. Spiel das doch mal im Simulator von AVR-Studio durch (reine Softwaresimulation ohne AVR-Hardware), da siehst du, was passiert. Direkt debuggen kannst du den Tiny15 sowiso nicht. Das geht nur bei einigen ganz neuen AVRs und einigen großen Megas. Dazu ist auch spezielle Hardware erforderlich, die normalen ATMEL-AVR-Programmiergeräte bzw. STK500 reichen dazu nicht aus. ...
Hallo Hannes, erstmal danke für deine Antwort!!! Ich dachte mir auch, dass der Watchdog deaktiviert ist, aber genau nachlesen konnt ich es nicht... Die Ports sind doch dann abwechselnd über einen Widerstand an 5V angeschlossen, also müsste eigentlich eine LED leuchten, oder? Ich programmiere bei Ponyprog nur die FLASH Daten rein, da mekkert er auch nicht und ich kann sie auch wieder auslesen. Also dachte ich es müsste funktionieren, dass die Ports unterschiedlich gezogen sind (GND, 5V). Oder muss ich sonst noch was "hochladen"? Ich habe auch keine Direkten Seriell-Port sondern wg. Laptop einen Prolific USB to Serial Adapter, hoffe nicht dass es daran liegt... Muss ich den Reset eigentlich über Widerstand mit +5V verbinden oder geht das auch direkt? Auf deine Antwort freut sich... Andreas
Hi... Puuuhhhh..... - Viele offene Fragen... Also Reset gehört über einen Widerstand (3k...10k) an Vcc. An GND und Vcc gehört unbedingt ein Keramik-C von etwa 100nF. Bei Ponyprog kann ich nicht mitreden, das funktionierte bei mir anfangs nicht, da baute ich mir etwas Eigenes (eigene Hardware, eigene Software). Inzwischen weiß ich, dass es an der langen Parallelportleitung (incl. Umschalter!) lag, habe Ponyprog aber nie wieder probiert. Ich nutze trotz eines inzwischen angeschafften STK500 für ISP meist meine eigene Lösung, meist an einem Lappi über LPT. Auch bei den USB-Adaptern fehlt mir die Erfahrung. Einige sollen gehen, aber byteweises Protokoll mögen die nicht so, die sind (aufgrund des USB-Protokolls) mehr für packetweisen Datentransfer geeignet. Da dein Programm keine Interrupts nutzt, dürfte dein Programm (nach Entfernen des Watchdogzugriffs) vollständig sein. Wir hatten hier vor langer Zeit mal ein (eigentlich sinnloses) Projekt mit Tiny15 in ASM erarbeitet, viele deiner Fragen werden dort geklärt. Am besten, du liest dir diesen Thread mal durch und versuchst, das dort Erklärte nachzuvollziehen. http://www.mikrocontroller.net/forum/read-1-113815.html#115916 Auch dieser Beitrag könnte dir Hinweise zum Umgang mit dem Tiny15 geben: http://www.mikrocontroller.net/forum/read-1-219705.html#219912 Frohes Schaffen... ...
Den Reset kannst Du zum stabilisieren mit 1K an +5V verbinden. An den Reset halt dann noch die "Reset-Leitung" Deines Programmers, was ja klar sein sollte. Aber wie hast Du die LEDs nun angeschlossen? Gegen +5V oder gegen GND? Im ersten Fall geht eine LED an, wenn Du 0 (low) an den betreffenden Portpin schaltest, im zweiten Fall bei 1 (high). Probier mal 0xAA als Bitmuster. MfG Andi
Hallo! Vielen Dank erst mal für eure Antworten. Mit Reset 6k gegen +5V funktioniert es einwandfrei. Das stand leider im Datenblatt nicht drin und ich dachte da er eh als Ausgang konfiguriert ist... Wozu wird er denn genau gebraucht? Der Kondensator zwischen GND und Vcc ist zum Spannungen glätten, oder? Was ich festgestellt habe: Wenn ich bei einem anderen PC direkt über seriell rausgehe geht das Programmieren in 2 Sekunden. Mein neuer Laptop mit Prolific USB to Serial benötigt immer noch 3 Minuten. Das liegt dann wohl an oben erklärtem Grund?! Weiß jemand wie man so einen Adapter beschleunigt, oder geht das gar nicht? Habe schon einige Einstellungen der Schnittstelle (baudrate, etc) ausprobrobiert, war alles gleich langsam... Viele Grüsse, Andreas
> Vielen Dank erst mal für eure Antworten. Mit Reset 6k gegen +5V > funktioniert es einwandfrei. Das stand leider im Datenblatt nicht > drin und ich dachte da er eh als Ausgang konfiguriert ist... Du hast den Reset abgeschaltet? > Wozu wird er denn genau gebraucht? Also wenn du den Reset ausschaltest und statt dessen als Ausgang benutzt, dann sollte der Widerstand nicht nötig sein. Ich bezweifle aber mal, daß du das getan hast, denn dann könntest du kein ISP mehr nutzen. Und dann ist es eben so, daß low-Pegel am Reset-Eingang den Prozesser resettet und außerdem zum Umschalten in den ISP-Modus benutzt wird. Um das im Normalbetrieb zu verhindern, setzt man einen Widerstand ein, der ihn auf high-Pegel zieht, aber so, daß der Programmer ihn auch wieder auf low ziehen kann. Einen pull-up eben. Ob dazu was im Datenblatt steht, weiß ich grad nicht, aber mehr kannst du jedenfalls in der Appnote AVR042 "AVR Hadware Design Considerations" nachlesen. > Der Kondensator zwischen GND und Vcc ist zum Spannungen glätten, > oder? Er ist zum Abblocken von Spannungsspitzen. Auch das ist in AVR042 erklärt. Zum USB kann ich nichts sagen.
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.