Forum: Mikrocontroller und Digitale Elektronik attiny13 mit Tasten programmieren


von Pascal (Gast)


Lesenswert?

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

von S. Landolt (Gast)


Lesenswert?

Sie beziehen sich auf den 5. Tag?

> irgendwie einen "Stopp"-Befehl"...
Nein, das Programm wird gestartet, indem Reset freigegeben wird.

von Pascal (Gast)


Lesenswert?

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?

von Pascal (Gast)


Lesenswert?

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?

von S. Landolt (Gast)


Lesenswert?

> ...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.

von S. Landolt (Gast)


Lesenswert?

(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?

von Pascal (Gast)


Lesenswert?

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)

von Pascal (Gast)


Lesenswert?

Ja, die Signatur war korrekt

von Pascal (Gast)


Lesenswert?

Ich tausche nun den uC aus..

von Pascal (Gast)


Lesenswert?

Und es geht auch nicht...

von S. Landolt (Gast)


Lesenswert?

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

von S. Landolt (Gast)


Lesenswert?

Ü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).

von Pascal (Gast)


Lesenswert?

Danke für Ihre Hilfe!
Bei Adresse 1 habe ich anscheinend einmal beim HIGH-Bit eine 1 nicht 
eingegeben:
statt
10011010
ist
00110100
erschienen

von S. R. (svenska)


Lesenswert?

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?

von S. Landolt (Gast)


Lesenswert?

> 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

von Pascal (Gast)


Lesenswert?

Leider ist mein Datenvolumen verbraucht..
Was macht der Typ am Ende, nachdem der Befehl zum Laden in den Flash 
Speicher gegeben wurde?

von S. Landolt (Gast)


Lesenswert?

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.

von Pascal (Gast)


Lesenswert?

D.h. ich muss versuchen den code noch einmal sehr genau einzugeben?

von S. Landolt (Gast)


Lesenswert?

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.

von Pascal (Gast)


Lesenswert?

OK, ich werde es weiterhin probieren.
Danke

von schlaubischlumpf (Gast)


Lesenswert?

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.

von S. Landolt (Gast)


Lesenswert?

Ich vergaß:

> Respekt.
> Viel Erfolg.

auch von mir.
(in der Hoffnung, dass kein gegenteiliger Eindruck entstanden ist)

von Pascal (Gast)


Lesenswert?

Bis jetzt leider kein Erfolg...

von S. Landolt (Gast)


Lesenswert?

> 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.

von Stefan F. (Gast)


Lesenswert?

Ich arbeite ja auch oft altmodisch und zu Fuß, aber das dieses Projekt 
ist echt was für Masochisten.

von H.F. (Gast)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

> 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.

von S. Landolt (Gast)


Lesenswert?

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

von S. Landolt (Gast)


Lesenswert?

Und für dieses Mal muss man sich keinerlei Sorgen wegen eines zu hohen 
SPI-Taktes machen.

von Pascal (Gast)


Lesenswert?

Ich werde es gleich ausprobieren

von Pascal (Gast)


Lesenswert?

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

von S. Landolt (Gast)


Lesenswert?

Stimmt doch, denken Sie sich einfach vor den ersten Rattenschwanz noch 
eine 0.

von Pascal (Gast)


Lesenswert?

OK. Ich probiere es jetzt aus.

von S. Landolt (Gast)


Lesenswert?

Ah, ich sehe Ihr Problem, also nicht nur denken, sondern auch 
schreiben, sonst fehlt ein Bit bei der Programmierung.

von Dietrich L. (dietrichl)


Lesenswert?

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.

von S. Landolt (Gast)


Lesenswert?

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.

von Pascal (Gast)


Lesenswert?

Ich habe den Fehler gefunden!

von Pascal (Gast)


Lesenswert?

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)

von S. Landolt (Gast)


Lesenswert?

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?

von Pascal (Gast)


Lesenswert?

Die LED, die laut den Schaltplänen gegen +Vcc geschaltet wird, zeigt 
durch das Leuchten eine 0 an

von S. Landolt (Gast)


Lesenswert?

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'.

von Pascal (Gast)


Lesenswert?

Da haben Sie Recht.
Das ist von mir ein sehr dummer Fehler beim Aufbau gewesen.

von S. Landolt (Gast)


Lesenswert?

"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
Noch kein Account? Hier anmelden.