AVR ISP Protokoll, gibt nur 255 zurück

Gast #4007106
Lesenswert?

Hi,

ich versuche einen tiny45 per avr zu flashen, und scheitere bereits an 
der ersten sequenz ;-)

Vielleicht hats ja jemand schonmal gemacht

Die vier ausgegebenen bytes sind immer 0xff, sollten jedoch die 
antwortsequenz sein. habe bereits mit mehreren optionen "gespielt", 
phase, polarity etc.

Hat jemand ne idee??
1
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = yes , Polarity = low , Phase = 0 , Clockrate = 128 , Noss = 0
2
Spiinit
3

4
chip_reset=1
5
wait 5
6

7
chip_reset=0
8
waitms 20
9

10
? "Start sending..."
11

12

13
b(1)=&hAC
14
b(2)=&H53
15
b(3)=&h00
16
b(4)=&H00
17
spiout B(1),4
18
'waitms 1
19

20
spiin b(11),4
21
? b(11)
22
? b(12)
23
? b(13)
24
? b(14)
25
waitms 10
26
chip_reset=1
#4007236
Lesenswert?

Ich denke, du musst spimove benutzen.
Denn das ISP Interface antwortet ja schon, während spiout bereits die 
nächsten Bytes raustaktet.

Dieses spiout bzw. spiin ist sowieso missverständlich.
SPI arbeitet grundsätzlich so, dass es sich dabei um den Austausch von 
Bytes handelt. Die Denkweise 'erst sende ich was' dann 'sendet der 
Partner was' ist nicht besonders zielführend.
#4007271
Lesenswert?

Karl Heinz schrieb:

> SPI arbeitet grundsätzlich so, dass es sich dabei um den Austausch von
> Bytes handelt. Die Denkweise 'erst sende ich was' dann 'sendet der
> Partner was' ist nicht besonders zielführend.


D.h. das ist so zu verstehen:
Während dein SPI 1 Byte raustaktet, wird gleichzeitig in der 
Gegenrichtung ebenfalls 1 Byte übertragen.

Tiny45 Datenblatt
1
3. The serial programming instructions will not work if the communication
2
   is out of synchronization. When in sync. the second byte (0x53),
3
   will echo back when issuing the third byte of the Programming
4
   Enable instruction. Whether the echo is correct or not, all four
5
   bytes of the instruction must be transmitted. If the
6
   0x53 did not echo back, give RESET a positive pulse and issue
7
   a new Programming Enable command.

das ist also so zu verstehen
1
   dein µC                        Tiny45
2
                0xAC
3
        ------------------------>
4
        <-----------------------
5
                 ??                         welcher Wert da rückübertragen
6
                                            wird, ist nicht dokumentiert.
7
                                            Ich würde mal 0x00 schätzen
8

9
                0x53
10
        ------------------------>
11
        <-----------------------
12
                 ??                         ditto
13

14
                0x00
15
        ------------------------>
16
        <-----------------------
17
                0x53                        dokumentierte Antwort, dass
18
                                            das Kommando verstanden wurde
19

20
                0x00
21
        ------------------------>
22
        <-----------------------
23
                 ??                        wieder nicht dokumentiert, was
24
                                           da kommen müsste

genau diese Austauschoperation ist aber die Domäne von spimove. spiin 
versucht ledigliche vom Partner zu lesen, in dem es ihm weitere 0x00 
Bytes rübertaktet. Da ist aber die Antwort vom Tiny schon lange durch 
(und wurde rückübertragen, als der spiout die bytes rausgetaktet hat. 
Nur das sich spiout nicht darum kümmert, was es im Gegenzug für jedes 
rausgetaktete Byte bekommen hat)
Gast #4007541
Lesenswert?

Aha!

Danke!

Ich werd es morgen mal probieren....

Wenns spimove ned kann schreib ich die routine eben selber das sollte 
kein Problem darstellen...

Wenn ichs recht in Erinnerung habe hatte der logic analyzer dauerhigh 
auf dem input pin

Aber ich guck nochmal. Und bzw meine Programme sehen immer so laienhaft 
aus bis das funktioniert. Danach kann man das noch ordentlich machen. 
Aber was nutzt mir ein tolles profiprogramm wenn ich noch nicht 
verstanden habe was es machen soll.
Gast #4008381
Lesenswert?

Ich liebe diese ewige bascom/c diskussion.

Ich finde die inkompetenz klasse. Bascom ist ein basic compiler. er 
erzeugt maschinencode.

Das kann man nicht mit basics auf vintage hardware vergleichen, da lief 
auf dem gerät ein interpreter, der quasi zur laufzeit den basic code 
übersetzt.

Wenn ich lese "apple 2" oder "c64" weiss ich das da jemand nicht 
bescheid weis oder einfach nur trollen will.

ich hatte schon des öfteren mit bascom effizienteren code erstellt als 
mein kollege mit seinem geliebten C. Hat er halt studiert. jeder wie er 
will. (in diesem fall bin ich mit 16mhz hingekommen, der C code 
benötigte mindestens 20mhz um die Daten einlesen zu können) - klar es 
gibt auch bei den C programmern nixkönner.

However - die diskussion tut nix zum thema. sondern verschwendet nur 
zeit.
Gast #4008388
Lesenswert?

Basti schrieb:
> Ich liebe diese ewige bascom/c diskussion.

Falls du dir auf den Schlips getreten fühlst - ich wars nicht.

Ich habe nur gesagt:

spiMöchtegern schrieb:
> Niieeeee wieder sowas. Das war zu Apple-Gründerzeiten.

Darin steht weder ein Angriff auf dich noch eine Beleidigung.
Nur meine persönliche Meinung.

Wenn du irgendetwas Ungeschriebenes zwischen den Zeilen liest
dann ist das allein dein Problem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren