IAR Embedded Workbench

Nov 28, 2004 10 Replies

Hallo!



Ich möchte einen 8051 uC (AT89C51SND1 von Atmel) programmieren. Dazu verwende ich Flip von Atmel und den IAR Embedded Workbench. Das Flip möchte ein hex File haben. Nun kann ich im Embedded Workbench verschiedene File Formate auswählen: output format: nec, mpds-i, msd-i, msd-m, msd-t, nec2, tektronix, zax-i



Alle diese Formate heißten *.hex. Aber welches von denen muss ich jetzt verwenden?



Noch eine zweite Frage bezüglich des SND1. Wie aktiviere ich hier das SPI als Master?



Ich habe es auf folgende Art und weise versucht, es gibt jedoch nichts aus: SPCON = 0xFE; Also SPR1 und SPR2 auf 1, SPR0 auf 0 -> Divide Faktor 128 SPEN auf 1 -> SPI Enable SSDIS auf 1 -> SS Pin disablen MSTR auf 1 -> Master CPOL und CPHA auf 1



Anschließend schreibe ich Daten ins SPDAT Register. Leider kann ich mit dem Oszi nichts an CLK des SPI messen. Habe ich was vergessen?



Wenn mir jemand bei den Fragen vielleicht weiterhelfen könnte wäre ich sehr dankbar!



Viele Grüße Steffen


Steffen schrieb:

Ist irgendwas dabei das intel im Namen trägt?

Habe IAR leider nur für andere uCs am laufen.

Gerald

Flip kommt mit Intel-Hex klar. Schau mal, ob eines der Formate so aussieht:

:nnaaaaaadddd..ddcc

Also Textdatei, alles Hex-Ziffern, nn=Anzahl Bytes in Zeile, aaaaaa=Adresse, dd = Datenbytes, cc=Prüfsumme. Das sollte dann funktionieren.

Steng nach Datenblatt müsste es gehen.

Wie schreibst Du? Ein Byte? Das ist schwierig zu sehen am Oszi. Viele Bytes? Wartest Du dann auch immer, bis das vorige Byte rausgeschoben wurde? Wenn nicht, ist nicht so genau klar, was CLK machen soll, vermutlich ändert sich der Pegel dann nicht, wenn Du schneller neue Bytes nach SPDAT schreibst als ein CLK-Zyklus dauern sollte...

Gruß

Tassilo

µC Assembler-IDE für AVR, 8051, Z80, 8048 => http://www.theeg.de/aside/index.html ================================================================ de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/

Als Format denke ich solltest du intel-standard auswählen.

hth, Thomas

Hallo!

OK, werde ich mal schauen - ich melde mich dann wieder!

Das dachte ich auch

Ich schreibe ein Byte, dann warte ich mit einer while Schleife, bis das SPIF gesetzt ist und sende dann das Byte wieder. Also sollte eigentlich eine Endlosschleife mit immer dem selben Byte rauskommen. Ich dachte, es liegt evtl. daran, dass das Output Format nicht passt ... Viele Grüße

Steffen

Hallo!

Das hat als Ausgabeformat *.a03 - Ich probies jetzt einfach mal mit umbenennen.

Viele Grüße Steffen

Hm - es geht leider immer noch nicht. Hier mal mein Programmcode:

void main (void) { // set Ports P0 = 0x00; P1 = 0x00; P2 = 0x00; P3 = 0x00; P4 = 0x00; P5 = 0x00;

// SPI Config SPCON = 0xFE; // set SPR2, SPEN, SSDIS, MSTR, CPOL, CPHA, SPR1

do { SPDAT = 0xAA; do { } while (SPSTA

Hallo!

Ja - es gibt Intel Standard. Damit habe ich es jetzt versucht. Leider ohne Erfolg. Es dürfte aber wohl an etwas anderem liegen (nicht am Fileformat).

Danke für deine Hilfe! Steffen

Da müsste SPSTA < 128 stehen.

Das File ist ok, habs mal durch nen Disassembler gejagt, Format paßt und der Compiler macht auch was er soll (wenn auch ziemlich umständlich, jedes Paar { } wird ein Unterprogramm, Stack sparen ist wohl out...)

Das ist in der Tat merkwürdig, denn auch ohne Init sollte da high anliegen (wenn SPI disabled ist). Nach dem Programmieren mit FLIP, startest Du das Programm auch, entweder per Flip oder durch /ISP=high und RESET?

Gruß

Tassilo

µC Assembler-IDE für AVR, 8051, Z80, 8048 => http://www.theeg.de/aside/index.html ================================================================ de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/

Hallo! Danke für deine Antwort!

Ja - das war einer der beiden Fehler. Ich habe den anderen auch noch gefunden. Ich setze Standardmäßig alle Ports auf 0 - beim 8051 muss man sie jedoch auf 1 setzen, wenn man die Special Functions nutzen will.

Jetzt geht wenigstens die SPI Ausgabe. Fehlt nur noch das Display. Aber das kriege ich schon noch geregelt, wenn ich dann mal mein Digital Oszi nächte Woche kriege ;-)

Schaut so aus :) Danke für die Mühe, die du dir gemacht hast!

ISP high und reset

Grüße Steffen

Oh je, da hatte ich wohl Tomaten auf den Augen, hätte mir auffallen können. Na Hauptsache es klappt jetzt bei Dir!!

Gruß

Tassilo

µC Assembler-IDE für AVR, 8051, Z80, 8048 => http://www.theeg.de/aside/index.html ================================================================ de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required