Hallo, aus Interesse habe ich mich mit der ISP SPI-Programmierung eines ATtiny13 20-PU mit Tasten beschäftigt. -> www.elektronik-labor.de/AVR/KursAssembler/T13asm13.html Ich habe die Tasten korrekt entprellt, MISO antwortet richtig auf die Anfragen. Alles mit 5V durchgeführt. Programmieren wollte ich die Tabelle, die die MISO - LED einmalig einschaltet und eingeschaltet lässt. Wenn ich jedoch nach dem letzten Bit die Reset-Brücke nach GND entferne, geht die LED aus. Zur Sicherheit habe ich sogar einen Pull-Up-Widerstand von Reset nach +5V mit 10k ausprobiert. Könnt ihr mir irgendwie helfen? Muss ich nach dem Eingeben der binären Zustände irgendwie einen "Stopp"-Befehl" eingeben? Oder nur die Reset-Brücke entfernen? Ich bin total ratlos... Vielen Dank für jede Hilfe im Voraus.. Pascal
Sie beziehen sich auf den 5. Tag?
> irgendwie einen "Stopp"-Befehl"...
Nein, das Programm wird gestartet, indem Reset freigegeben wird.
Genau, der 5. Tag. Kann es sein, dass der uC durch einen fehlgeschlagenen Versuch so umprogrammiert wurde, dass ein externer QO zum Takten angeschlossen werden muss?
Ach ja, um sicher zu gehen noch eine Frage: Bei der Tabelle, gebe ich da für aaddr in der letzten Zeile LOW (0) ein?
> ...fehlgeschlagenen Versuch so umprogrammiert ... Könnte sein. Wahrscheinlicher aber ist es, dass beim Eintippen der 256 bits ein Fehler passiert ist. > noch eine Frage ... Ja, da es sich um die Page 0 handelt. Erlauben Sie mir die Frage, ist es wirklich Ihre Absicht, Maschinensprache von Hand einzutippen? Das wird wirklich ausgesprochen mühsam und frustrierend, worauf ja auch der Autor der Kurses bereits hingewiesen hat. Ich habe so etwas vor etwa drei Jahrzehnten auf einem 8080/8085 gemacht, für einen AVR8 sehe ich es zum ersten Mal; versuche aber gerne, Sie, so gut ich eben kann, zu unterstützen.
(Es sind wohl eher vier Jahrzehnte, wenn ich's recht bedenke). Um sicher zu sein: Konnten Sie unter "4. Tag" die Signatur korrekt auslesen mit 1E 90 07?
Ja, das ist meine Absicht. Vielen Dank für Ihre Unterstützung. Ich werde zu Hause den ATtiny13 austauschen. Da MISO immer richtig geantwortet hat, vermute ich, dass alle Werte richtig eingegeben worden sind. Außerdem habe ich das jetzt schon 6mal probiert. Sobald ich das versucht habe werde ich mich wieder melden (ca. in ½h)
Sie sollten versuchen, Ihre Eingabe in den Flash zu verifizieren, indem Sie ihn einfach wieder auslesen, die Anleitung steht in "7.Tag": 0 L: B9 H: 9A 1 L: C1 H: 9A 2 L: FF H: CF
Übrigens konnte das
> dass ein externer QO zum Takten angeschlossen werden muss?
nicht sein, sonst wäre gar kein Zugriff mehr möglich gewesen (fiel mir
auf Anhieb leider nicht auf).
Danke für Ihre Hilfe! Bei Adresse 1 habe ich anscheinend einmal beim HIGH-Bit eine 1 nicht eingegeben: statt 10011010 ist 00110100 erschienen
Bist du dir sicher, dass der Code, den du da eingetippt hast, auch hundertprozentig korrekt ist und du ihn fehlerfrei eingetippt hast? Nicht, dass du den Code zwar korrekt eingegeben hast, er aber nicht funktionieren kann... Schau dir mal das Video hier https://www.youtube.com/watch?v=UJHeDvr_doM an. Machst du das auch genau so?
> er aber nicht funktionieren kann ...
Die Werte aus dem Kurs stimmen, hier das Assemblerlisting:
000000 9ab9 sbi DDRB,1
000001 9ac1 sbi PORTB,1
000002 cfff rjmp pc
Leider ist mein Datenvolumen verbraucht.. Was macht der Typ am Ende, nachdem der Befehl zum Laden in den Flash Speicher gegeben wurde?
Pascal schrieb: > Was macht der Typ am Ende, nachdem der Befehl zum Laden in den Flash > Speicher gegeben wurde? Der uC wartet auf weitere Programmierbefehle, solange bis Reset freigegeben wird. Pascal schrieb: > Bei Adresse 1 habe ich anscheinend einmal beim HIGH-Bit eine 1 nicht > eingegeben: > statt > 10011010 > ist > 00110100 > erschienen D.h. aus sbi wurde cpi; wenn das beim ersten Befehl passierte, hätte die LED noch ganz schwach leuchten müssen (Stichwort pullup), beim zweiten Befehl bleibt die LED aus.
D.h. ich muss versuchen den code noch einmal sehr genau einzugeben?
Ja, das fürchte ich, sonst fällt mir nichts ein; es kommt auf (fast) jedes Bit an, und es gibt keine Warn- oder Fehlerhinweise. Das meinte ich mit frustrierend.
Respekt. Erinnert mich an meinen ersten Urlader fuer den Z80. Das war ein 74154 (1 aus 16-Dekoder) mit einer Handvoll Dioden die einen Urlader fuer den Z80 enthielten. Da konnte Mann bitweise fuer die Adresse ein Highbyte, dann ein Lowbyte eintippen und dann die Daten in den RAM. Natuerlich auch bitweise. Viel Erfolg.
Ich vergaß: > Respekt. > Viel Erfolg. auch von mir. (in der Hoffnung, dass kein gegenteiliger Eindruck entstanden ist)
> kein Erfolg
Geht die Verifizierung schief, d.h. das Ausgelesene weicht vom
Geschriebenen ab, oder bleibt nach dem Entfernen der Reset-Brücke die
MISO-LED aus?
Sie verwenden den Schaltplan von "3.Tag", ggf. ohne Beschaltung von PB3
und PB4? Auf jeden Fall erstmal ohne den Piezo-Piepser an PB1.
Ich arbeite ja auch oft altmodisch und zu Fuß, aber das dieses Projekt ist echt was für Masochisten.
Hallo, melde mich mal, da ich mich mit diesem Thema interessen halber mal befasst habe. Also es gibt keine prellfreien Taster, selbst „Impulstaster“ haben bei mir öfters Probleme verursacht. Darum habe ich mir ein kleines Tool entwickelt: http://www.elektronik-labor.de/AVR/KursAssembler/T13asm13.html (ganz unten „P1- Bascom.zip“) Eine Stufe höher: http://www.elektronik-labor.de/AVR/T13contest/HexEditor.html Noch eine Stufe höher: http://www.elektronik-labor.de/AVR/PalmAVRasm.html Wenn es schief geht: http://www.elektronik-labor.de/Arduino/Fuses.html Sicher wird man keine großen Programme eingeben, aber man schaut mal hinter die „Kulissen“ Viel Erfolg H. Fritzsch
> Auch hier brauchte ich mehrere Anläufe bis MISO richtig antwortete Wie kann man einen Pin Miso nennen, wenn doch gar kein SPI genutzt wird? Der komplette Verzicht auf Kondensatoren....(außer entprellen) Ist das modern? Selbst der Regler vom 9V Block auf Betriebspannung hat keine... Sorry, aber wäre DAS Tutorial mein Einstig in die AVR Welt gewesen, dann hätte ich sicher aufgegeben und die Brocken frustriert in die Ecke geworfen.
an Pascal: Also bei mir klappt das (dann endlich im dritten Versuch); wenn auch, in Ermangelung eines ATtiny13, auf einem 85. Wenn man eine effiziente LED hat, reicht es auch aus, nur den internen Pullup einzuschalten mit /sbi PORTB,1/; lässt man dann den uC noch durch das (sonst gelöschte) Flash voller FFs rasen, reduziert sich das Programmieren auf: Reset -> GND AC530000 Programming Enable AC800000 Chip Erase 400000C1 sbi PORTB,1 (low) 4000009A - " - (high) 4C000000 Write Program Memory Page 0 Reset freigeben
Und für dieses Mal muss man sich keinerlei Sorgen wegen eines zu hohen SPI-Taktes machen.
Ich habe es noch nicht ausprobiert, allerdings fällt mir folgendes auf: S. Landolt schrieb: > reduziert sich das Programmieren auf: > > Reset -> GND > AC530000 Programming Enable > AC800000 Chip Erase > 400000C1 sbi PORTB,1 (low) > 4000009A - " - (high) > 4C000000 Write Program Memory Page 0 Laut diesem Umrechner (binaer-dezimal-hexadezimal-umrechner.miniwebapps.de) entspricht 4C000000 in binär 1001100000000000000000000000000 Allerdings steht in der Tabelle 01001100000000000000000000000000
Stimmt doch, denken Sie sich einfach vor den ersten Rattenschwanz noch eine 0.
Ah, ich sehe Ihr Problem, also nicht nur denken, sondern auch schreiben, sonst fehlt ein Bit bei der Programmierung.
Pascal schrieb: > Laut diesem Umrechner > (binaer-dezimal-hexadezimal-umrechner.miniwebapps.de) > entspricht > 4C000000 > in binär > 1001100000000000000000000000000 > > Allerdings steht in der Tabelle > 01001100000000000000000000000000 Der Umrechner lässt einfach die führende 0 weg und zeigt nur 31 Stellen. Mathematisch ist das OK, aber ob das bei der Eingabe der Daten Probleme macht, ist eine andere Sache.
Reset -> GND AC530000: 10101100 01010011 00000000 00000000 AC800000: 10101100 10000000 00000000 00000000 400000C1: 01000000 00000000 00000000 11000001 4000009A: 01000000 00000000 00000000 10011010 4C000000: 01001100 00000000 00000000 00000000 Reset freigeben Die Blanks dienen natürlich nur zur besseren Übersicht.
Die MISO-LED wird ja gegen +Vcc geschaltet. Allerdings schaltet der ATtiny13 ebenso +Vcc durch. Deshalb muss die LED an GND gelegt werden! (was im o.g. Kurs nicht erwähnt wird)
Ja schon, aber: - so steht es im Schaltplan von "3.Tag" sowie "4.Tag" - wie konnten Sie dann überhaupt irgendetwas auslesen, z.B. die Signatur?
Das haben Sie falsch verstanden, z.B. im Schaltplan von "3.Tag" sind 3 LEDs gegen GND geschaltet, und die MISO-LED leuchtet (sinnvollerweise) bei '1'.
Da haben Sie Recht. Das ist von mir ein sehr dummer Fehler beim Aufbau gewesen.
"Dumm" nicht, aber zeitraubend; das haben Fehler leider nun mal oft so an sich.
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.