^Hallo, ich habe eine kurze Frage, ich baue mir gerade einen eigenen ISP
Programmer mit einem Mega328P. Programmieren will ich zuerst mal einen
Tiny85.
Ich muss doch MOSI mit MOSI und MISO mit MISO verbinden, oder?
Oder muss das wie bei UART gekreuzt werden?!
Oliver S. schrieb:> Ja.>> Schreib die Abkürzungen aus, dann verstehst du es auch.>> Oliver
Was bedeutet ja?!
Ja, ich muss es drehen oder ja es muss 1:1 gemacht werden, also MISO auf
MISO und MOSI auf MOSI
STMxP schrieb:> Was bedeutet ja?!
Ja ist die Antwort auf deine Frage - aus streng logischer Sicht korrekt,
nur versteht das in der Realität niemand und es hilft auch nicht
weiter.
"Ausschreiben" war das Stichwort, oder: "Master ist ein Master ist ein
Master", hier der uC im Programmer, also der ATmega328, Slave ist der
Ziel-uC, also der ATtiny85.
Was sollte da "gedreht" werden?
Armin schrieb:> STMxP schrieb:>> Was bedeutet ja?!> Ja ist die Antwort auf deine Frage - aus streng logischer Sicht korrekt,> nur versteht das in der Realität niemand und es hilft auch nicht> weiter.
Klar verstehe ich das, ein einfaches "JA" auf 2 Fragen beantwortet dann
die letzte mit Ja, sprich ich muss es kreuzen.
"Also WAS ist jetzt Trumpf"?
Spaß beiseite - auch aus Sicht des Ziel-uCs ist der Programmer der
Master, folglich nichts mit kreuzen. Zeigt aber sehr schön, dass es
sinnvoll ist, bei so einem Selbstbau-Programmiergerät Schutzwiderstände
vorzusehen.
Beim Arbeiten mit ISP wird der Takt der Schnittstelle vom progger
vorgegeben, also ist der progger der Master und das Ziel der slave.
Wer den Takt vorgibt ist der Master.
MOSI des proggers muss an MISO des Ziels.
Aber, warum probierst Du es nicht einfach aus?
Bei andren Aufgaben kann der dann programierte Kontroller als Master
programmiert sein und dann selbst den Takt angeben.
Edi R. schrieb:> Peter R. schrieb:>> MOSI des proggers muss an MISO des Ziels.>> Bist du da wirklich sicher?>> "Master out" verbinden mit "Master in"?
Also ich habe es jetzt nicht gekreuzt gemacht. MISO an MISO MOSI an MOSI
Bei mir läuft das aber nur bedingt gerade. Ich kann bspw. den Chip erase
durchführen aber ich kann nichts auslesen. Chip ID auslesen bekomme
überall 0x00 zurück. Einer eine Idee woran das liegen könnte? MISO ist
als Eingang der Rest als Ausgang konfiguriert.
16 Mhz mit 128 Teiler => 125 kHz der Tiny läuft mit 8 Mhz also /4 Regel
passt.
Werte schreiben geht ja anscheinend aber warum nicht auslesen?!
Nutze CLK_LOW_DAT_RIS SPI MODE 0
STMxP schrieb:> Bei mir läuft das aber nur bedingt gerade. Ich kann bspw. den Chip erase> durchführen aber ich kann nichts auslesen. Chip ID auslesen bekomme> überall 0x00 zurück. Einer eine Idee woran das liegen könnte?
Du machst es wohl falsch.
Darf man erfahren, warum du etwas selber programmierst, was es dutzende
Male fertig gibt? Falls deine Antwort lautet, daß du etwas dabei lernen
willst: warum machst du das dann nicht? Fehlersuche ist ein fester
Bestandteil des Programmierens. Warum sollten wir dir das abnehmen?
S. Landolt schrieb:> Ohne das Programm zu sehen wird da schwerlich jemand helfen> können.
Noch gibt es kein richtiges PRogramm:
CPHA und CPOL ist 0 (SPI 0 Modus, andere machen aber kein Unterschied)
Axel S. schrieb:> STMxP schrieb:>> Bei mir läuft das aber nur bedingt gerade. Ich kann bspw. den Chip erase>> durchführen aber ich kann nichts auslesen. Chip ID auslesen bekomme>> überall 0x00 zurück. Einer eine Idee woran das liegen könnte?>> Du machst es wohl falsch.>> Darf man erfahren, warum du etwas selber programmierst, was es dutzende> Male fertig gibt? Falls deine Antwort lautet, daß du etwas dabei lernen> willst: warum machst du das dann nicht? Fehlersuche ist ein fester> Bestandteil des Programmierens. Warum sollten wir dir das abnehmen?
Ich will nichts dabei lernen, ich finde den Fehler nicht sitze da schon
lange dran, deswegen auch die Frage ob es vertauscht ist, weil langsam
weiß ich echt nicht mehr was hier falsch läuft. ich brauche das für ein
Gerät wo man weitere kleine Module updaten können soll auf die selber
kein Bootloader passte. Daher um 3 Ecken.
S. Landolt schrieb:> (Autsch, ich hatte auf Assembler gehofft)> Wie sind diese 'Sig_irgendwas' definiert, und was ist 'SPDR0'?
Sig_irgendwas sind nur die Befehle für die entsprechende ID, Man, etc.
nach der Tabelle.
SPDR0 gibt es nicht, es muss SPDR sein, das Empfangsregister. Warum mir
das Atmel Studio beim Mega32P zugelassen hat, gute Frage und genau das
war der Fehler!!!
Ich küsse dein Nacken vielen Dank! Endlich läuft es! Das hat mir eine
Zeit gekostet, wahnsinn. Wegen einer blöden 0
Peter R. schrieb:> MOSI des proggers muss an MISO des Ziels.
Nein. MOSI an MOSI, MISO an MISO. Wenn das Device als SPI-Master
arbeitet, ist MOSI ein Ausgang und MISO ein Eingang, bei Slave-Betrieb
ist es umgekehrt.
Peter R. schrieb:> Aber, warum probierst Du es nicht einfach aus?
Viel einfacher und materialschonender wäre ein Blick ins Datenblatt.
Hmmm schrieb:> Wenn das Device als SPI-Master> arbeitet, ist MOSI ein Ausgang und MISO ein Eingang,
Hängt vom Device ab, z.B. ATtiny 2313 als Three-wire SPI Master ist der
Ausgang DO, das ist B6, was aber MISO ist(MISO/DO/PCINT6).
Arduino Fanboy D. schrieb:> Selbst ein ScratchMonkey Dingen lässt sich dafür bauen.> https://github.com/microtherion/ScratchMonkey
Das sieht interessant aus, danke für den Link. *Aber:* glaubst du, dass
der TE das zum Laufen bekommt, wenn er doch noch nicht mal die
ISP-Verdrahtung zusammenbekommt – und halt auch gar nicht lernen will?
Ich meine, als ich das erste Mal davorstand, habe ich mich genau das
Selbe gefragt. Die Ratlosigkeit ließ sich aber in weniger als 30s
eigenständig beheben.
Edits: irgendwann … werde ich schon noch dahinterkommen, nach welchem
Muster das Fettschreiben mal funktioniert, und mal nicht …
Helmut H. schrieb:> Hmmm schrieb:>> Wenn das Device als SPI-Master>> arbeitet, ist MOSI ein Ausgang und MISO ein Eingang,>> Hängt vom Device ab, z.B. ATtiny 2313 als Three-wire SPI Master
Na gut, bei SPI per USI sieht's natürlich anders aus.