Hi, ich schreibe gerade an einem AVR flasher (Standalone) Ich habe soweit alles am Laufen (fuses, device id etc) Jetzt wollte ich ein Testprogramm in den AVR schreiben, jedoch scheitere ich am Verständniss des Page-Konzepts Das Testprogramm togglet einen Pin und wartet danach (schleife) Im anhang ist das Binary-File Ich habe das Binary-file bascom-tauglich umgewandelt (siehe unten) Wenn ich das Datenblatt richtig verstanden habe wird immer eine Page erst geladen, dann sage ich in welche page es geschrieben werden soll. Eine Page hat 32 Words (64 byte), der tiny45 hat 64 pages also 64*2*32=4096 OK Aber jetzt muss ich die daten erstmal laden Load Program Memory Page, High byte, $48, adr MSB, adr LSB, high data byte in Load Program Memory Page, Low byte, $40, adr MSB, adr LSB, low data byte in angenommen ich will die ersten 64 bytes flashes, was ist dann low byte und was high byte? ich dachte es wäre ein 8 bit-controller, also nur bytes? Und selbst adr LSB und MSB zb wäre ja dann bei einer page size von 64 bytes viel zu groß, da reicht doch ein byte oder?? Also adr MSB immer 00?? und adr LSB 0-32?? data &H0E,&HC0,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H 18,&H95 data &H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H 8F,&HE5 data &H8D,&HBF,&HC8,&HE3,&HE0,&HE2,&H4E,&H2E,&H81,&HE0,&H8E,&HBF,&HD1,&HE0,&H F1,&HE0 data &H5F,&H2E,&HA8,&H95,&H84,&HB7,&H08,&H2E,&H87,&H7F,&H84,&HBF,&H88,&HE1,&H 99,&H27 data &H81,&HBD,&H91,&HBD,&HEE,&HEF,&HF0,&HE0,&HA0,&HE6,&HB0,&HE0,&H88,&H27,&H 8D,&H93 data &H31,&H97,&HE9,&HF7,&H66,&H24,&HBB,&H9A,&H88,&HE0,&H86,&HBB,&H84,&HEF,&H 91,&HE0 data &H0C,&HD0,&HFA,&HCF,&HF8,&H94,&HFF,&HCF,&H31,&H97,&HF1,&HF7,&H08,&H95,&H 68,&H94 data &H62,&HF8,&H08,&H95,&HE8,&H94,&H62,&HF8,&H08,&H95,&HEF,&H93,&HFF,&H93,&H EE,&H27 data &HE8,&H2B,&HE9,&H2B,&H31,&HF0,&HE0,&HED,&HF7,&HE0,&H31,&H97,&HF1,&HF7,&H 01,&H97 data &HD1,&HF7,&HFF,&H91,&HEF,&H91,&H08,&H95,&H00
Ein Befehlswort besteht aus 2 Bytes. Z.B. ist 'ldi r16,0xAB' als 0xEA0B codiert. Also wird an die betreffende Adresse zuerst 0x0B und dann 0xEA geschrieben.
Woher kommt dieses Binary? Das erste Wort sieht mir eher nach 0xC00E aus, d.h. nach einem 'rjmp', würde dann aber in der Tat in der Reihenfolge wie innerhalb des Binarys geschrieben, also erst 0x0E und dann 0xC0.
Das ist ein bascom compilat.... bascom source $regfile="attiny45.dat" $crystal=8000000 config portb.3=OUTPUT do portb.3=0 portb.3=1 loop end als hexfile :100000000EC0189518951895189518951895189567 :1000100018951895189518951895189518958FE5B1 :100020008DBFC8E3E0E24E2E81E08EBFD1E0F1E06B :100030005F2EA89584B7082E877F84BF88E1992713 :1000400081BD91BDEEEFF0E0A0E6B0E088278D9392 :100050003197E9F76624BB9AC398C39AFDCFF89409 :10006000FFCF3197F1F70895689462F80895E89406 :0400700062F8089595 :00000001FF
Okay, das ist ja wohl das Intel-Hex-Format; da stimmt die Reihenfolge bereits. Zu Bascom kann ich nichts sagen, ich arbeite in Assembler.
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.