Hallo, Ich habe von Pollin.de ein IR empfänger gekauft der mit einem ATTINY2313-20 PU bestückt ist. Die software für den Käfer kann man auf der Seite herunterladen, allerdings nur in C ?! glaube ich. Jedenfalls müsste ich daran etwas ändern und arbeite nur mit dem AVR studio in assembler. Ich habe mich ein bisschen durchs internet gesucht und herausgefunden das man die C Dateien in asm Daten umwandeln kann. Wie das ganze funktioniert verstehe ich jedoch nicht. Ich habe hier von pollin.de nun mehrere daten; main.c uart.c uart.h ir60.c ir60.h bekomme ich das nun irgendwie in asm umgewandelt ? Welche Software? Vorgehensweise ? Klapt das am Ende auch wenn ich es übertragen, übersetzen und Flashen würde ? Mfg christian
Du brauchst den AVR GCC. Gibt es bei Atmel auf der Seite auch als separaten Download (AVR GCC Toolchain)
Christian schrieb: > bekomme ich das nun irgendwie in asm umgewandelt ? nein (nicht sinnvoll, so das du etwas darin ändern könntest) > Vorgehensweise ? WinAVR installieren, C -> HEX -> µC wenn du etwas ändern willst, dann mache das im C.
Peter II schrieb: > wenn du etwas ändern willst, dann mache das im C. Ich kann kein C, absolut nicht ich hab nichtmal irgendwas davon installiert :(
Christian schrieb: > Ich kann kein C, absolut nicht ich hab nichtmal irgendwas davon > installiert :( dann kannst du es halt nicht machen.
Christian schrieb: > Peter II schrieb: >> wenn du etwas ändern willst, dann mache das im C. > > Ich kann kein C, absolut nicht ich hab nichtmal irgendwas davon > installiert :( Dann erklär uns doch mal Deine Änderungswünsche. Wenns nur ne Kleinigkeit ist, kriegen wir das hier vielleicht gemeinsam hin. Frank
Timmo H. schrieb: > Du brauchst den AVR GCC. Gibt es bei Atmel auf der Seite auch als > separaten Download (AVR GCC Toolchain) und dann bekomm ich es in asm ? in AVR studio steht was von GCC Ich hab einfach mal jetzt die main.c aufgemacht und den inhalt in avr studio gepackt. jetzt soll ich winAVR herunerladen. wird mir das was bringen ?
Mein Gott, warum so stur? Einfach WinAVR installieren und Dateien compilieren und ggf. ändern. Kann man notfalls einem 6-jährigem Kind beibringen...
Peter II schrieb: > Christian schrieb: soll, so das du etwas darin ändern könntest) > >> Vorgehensweise ? > WinAVR installieren, C -> HEX -> µC > > wenn du etwas ändern willst, dann mache das im C. Richtig ist es C -> ASM -> HEX -> µC, die frage ist ob der gcc das intern macht oder auch auswirft, die Lesbarkeit dürfte aber recht schlecht sein.
Frank Werner schrieb: > Dann erklär uns doch mal Deine Änderungswünsche. Wenns nur ne > Kleinigkeit ist, kriegen wir das hier vielleicht gemeinsam hin. Das Programm leitet grundsätzlich alle empfangenen Telegramme per UART weiter, und reagiert auf ein paar bestimmten insofern, das es ausgänge vom AVR Toogelt, also jedes mal wenn eine bestimmte taste gedrückt wird schaltet ein ausgang um. Ich möchte nun das er nicht nur UART sendet, sondern UART Telegramme auch empfangen kann und dementsprechent die Ausgänge umschaltet.
K. J. schrieb: > Richtig ist es C -> ASM -> HEX -> µC, die frage ist ob der gcc das > intern macht oder auch auswirft, die Lesbarkeit dürfte aber recht > schlecht sein. klar kann man ASM sich ausgeben lassen, nur ändern ist fast unmöglich. Weil mal alle Adressen selber neu ausrechnen müsste. Es gibt keine Labels mehr
K. J. schrieb: > die Lesbarkeit dürfte aber recht > schlecht sein. notfalls muss ich halt nacharbeiten, damit es lesbar und verständlich wird. ich lade jetzt WinAVR herunter.
Peter II schrieb: > Weil mal alle Adressen selber neu ausrechnen müsste. Womit das Thema mit der Nacharbeit dann wohl gelaufen wäre -.-
Hi >klar kann man ASM sich ausgeben lassen, nur ändern ist fast unmöglich. >Weil mal alle Adressen selber neu ausrechnen müsste. Es gibt keine >Labels mehr Es gibt durchaus Disassembler die aus dem Hex-File ASM-Code mit Labels generieren. MfG Spass
spess53 schrieb: > Es gibt durchaus Disassembler die aus dem Hex-File ASM-Code mit Labels > generieren. damit habe ich es auch probiert an IDA Pro bin ich verzweifelt. wen sich damit einer auskennt dann würde das natürlich super sein
Christian schrieb: > damit habe ich es auch probiert an IDA Pro bin ich verzweifelt. wen sich > damit einer auskennt dann würde das natürlich super sein vergiss es, in einem aus C generierten ASM code etwas größere zu ändern ist schwerer als C zu lernen.
Ein kleiner Tip: Schalte alle Optimierungen aus. Wie das geht steht in der Dokumentation und hier gibt es auch einige Einträge. Das hat den Vorteil, dass Du, einige Ausdrücke in C durchaus durch Analogiebildung aus der Mathematik wiedererkennen kannst und die Entsprechung in Assembler schnell findest. Dennoch wird Dir Einiges ungewohnt oder sogar merkwürdig vorkommen. Z.B. der Zugriff auf Funktionsargumente. Wenn Du gut Assembler kannst, wirst Du Dich aber schnell reinfinden.
Peter II schrieb: > vergiss es, in einem aus C generierten ASM code etwas größere zu ändern > ist schwerer als C zu lernen. Ich würde es zumindest gern einmal versuchen
Christian schrieb: > Ich würde es zumindest gern einmal versuchen die Frage, wenn du so gut ASM kannst, warum du es nicht gleich neu schreibst?
ConvertsQuestíonsToAnswers schrieb: > Wenn Du gut Assembler kannst, wirst > Du Dich aber schnell reinfinden. Ich komme generell irgendwie mit sowas nicht zurecht. an Java bin ich auch gescheitert. wenn ich schon VOID lese dreh ich durch :D
Nachtrag: du musst dafür z.b. noch Lernen welche Register du nicht verwenden darfst, weil C sie für etwas besonders vorgehen hat.
>Ich würde es zumindest gern einmal versuchen
Dazu kann ich Dich nur ermutigen. Schau Dir das Assembleristing an. Dort
sind die C-Zeilen und der daraus erzeugt Assemblercode
gegenübergestellt. Einem einigermaßen intelligenten Menschen sollte es
nicht schwerfallen, zumindest zu erkennen was das abläuft.
Konstanten und globale Variablenadressen zu ändern sollte auch nicht
schwer sein. Etwas komplizierter werden Änderungen am Kontrollfluss.
Aber es würde mich nicht wundern, wenn Du aus dem was Du da siehst genug
C lernst um wenigstens einfache Änderungen sogar im C-Programmtext
durchführen zu können.
Christian schrieb: > notfalls muss ich halt nacharbeiten, damit es lesbar und verständlich > wird. Besser ist es du lernst entweder 'C' oder du entwickelst das Programm neu. In einer generierten Assembler ist es nur mit grosser Muehe etwas zu aendern. Beim anschliessenden Linken brauchst du auch noch die Libs dazu.
ConvertsQuestionsToAnswers schrieb: > Schau Dir das Assembleristing an. Dort > sind die C-Zeilen und der daraus erzeugt Assemblercode > gegenübergestellt. Einem einigermaßen intelligenten Menschen sollte es > nicht schwerfallen, zumindest zu erkennen was das abläuft. > Konstanten und globale Variablenadressen zu ändern sollte auch nicht > schwer sein. Etwas komplizierter werden Änderungen am Kontrollfluss. er will aber etwas kompliziertes ändern. Und sich nicht nur den ASM-Code anschauen.
Du kannst zum compilieren des C-Programms, in den Optionen des Compilers, das Erzeugen einer List-Datei aktivieren. In dieser List-Datei ist der Assemblercode enthalten. Der Dateiname ist der des C_Programms, aber der Extend ist ".LSS". Ist aber pfrimelig den zusätzlichen Kram aus der Textdatei zu entfernen. Einige Compiler können, einstellbar in den Optionen, direkt Assemblerdateien aus dem C-Code erzeugen. Ich weiß nicht, ob der GCC das auch kann, wäre aber einen Blick in sein Handbuch wert. Gruß. Tom
ConvertsQuestionsToAnswers schrieb: > Dazu kann ich Dich nur ermutigen Wie kann ich mir das ansehen? ich hab nun folgendes gemacht: winavr installiert, avr studio neu getartet, neues projekt in GCC angelegt simulator ausgewählt, AVR ausgewählt. Die main.c datei mit texteditor geöffnet und alles in das neue projekt von avrstudio gepackt. die anderen daten (uart.c, uart.h, ir60.c, ir60.h ) mit in das Projektverzeichnis gepackt. wieso bekomme ich Fehler wenn ich auf Build klicke ? unten stehen folgende meldungen; C:\Users\Christian\Desktop\IR\TRYYYY\default/../TRYYYY.c:156: undefined reference to `uart_putc' die anderen sehen fast genau so aus, also auch "undefined reference"
Christian schrieb: > die anderen sehen fast genau so aus, also auch "undefined reference" du musst die uart.c und ir60.c zum projekt hinzufügen.
spess53 schrieb: > Welcher IR Empänger ist es denn? 8 Kanal IR empfänger: http://www.pollin.de/shop/dt/NTc5OTgxOTk-/Bausaetze_Module/Bausaetze/8_Kanal_IR_Fernbedienungs_Bausatz_IR8.html
Tom schrieb: > Ich weiß nicht, ob der GCC das auch kann, wäre aber > einen Blick in sein Handbuch wert. Doch kann er. Option -s Das ganze sieht dann so aus:
1 | __SP_H__ = 0x3e |
2 | __SP_L__ = 0x3d |
3 | __CCP__ = 0x34 |
4 | __tmp_reg__ = 0 |
5 | __zero_reg__ = 1 |
6 | .section .debug_abbrev,"",@progbits |
7 | .Ldebug_abbrev0: |
8 | .section .debug_info,"",@progbits |
9 | .Ldebug_info0: |
10 | .section .debug_line,"",@progbits |
11 | .Ldebug_line0: |
12 | .text |
13 | .Ltext0: |
14 | .global main |
15 | .type main, @function |
16 | main: |
17 | .LFB2: |
18 | .LM1: |
19 | /* prologue: function */
|
20 | /* frame size = 0 */
|
21 | .LM2: |
22 | sbi 36-32,1 |
23 | .LM3: |
24 | ldi r24,lo8(64) |
25 | sts 128,r24 |
26 | .LM4: |
27 | ldi r24,lo8(9) |
28 | sts 129,r24 |
29 | .LM5: |
30 | ldi r24,lo8(1600) |
31 | ldi r25,hi8(1600) |
32 | sts (136)+1,r25 |
33 | sts 136,r24 |
34 | .L2: |
35 | rjmp .L2 |
36 | .LFE2: |
37 | .size main, .-main |
38 | .section .debug_frame,"",@progbits |
39 | .Lframe0: |
40 | .long .LECIE0-.LSCIE0 |
41 | .LSCIE0: |
42 | .long 0xffffffff |
43 | .byte 0x1 |
44 | .string "" |
45 | .uleb128 0x1 |
46 | .sleb128 -1 |
47 | .byte 0x24 |
48 | .byte 0xc |
49 | .uleb128 0x20 |
50 | .uleb128 0x0 |
51 | .p2align 2 |
52 | .LECIE0: |
Da jetzt was zu aendern wuerde ich mit nicht freiwilig antun wollen.
:
Bearbeitet durch User
Ohje, übersichtlich ist etwas anderes. Bevor man sich da durchgewühlt hat, hat man sich auch ein wenig in C eingearbeitet. :(
>die anderen daten (uart.c, uart.h, ir60.c, ir60.h )
mit in das Projektverzeichnis gepackt.
Du musst diese C-Dateien auch noch dem Projekt "hinzufügen". D.h. dem
AVRStudio bekannt machen, das diese Dateien mit compiliert werden
sollen.
Ich weiss nicht, welche AVRStudio-Version Du hast. Mit Version 4 geht es
so, das Du die Dateien, über das Kontextmenue des "Projektfensters"
hinzufügen kannst. Also oben rechts-klich auf das Projekt. Da erscheint
dann ein Punkt "Add". Ich glaube es geht bei der Version 6 ähnlich. Aber
ich kenne sie nicht.
Helmut Lenzen schrieb: > Da jetzt was zu aendern wuerde ich mit nicht freiwilig antun wollen. Jap. Peter II schrieb: > du musst die uart.c und ir60.c zum projekt hinzufügen. Hab ich jetzt kommen neue Fehler; ../uart.c:21: error: 'F_CPU' undeclared (first use in this function) Ich nehme an er möchte das ich in der hauptdaei vom Projekt F_CPU Deklariere. wie mache ich das ?
ConvertsQuestionsToAnswers schrieb: > Ich weiss nicht, welche AVRStudio-Version Du hast. Mit Version 4 geht es > so, das Du die Dateien, über das Kontextmenue des "Projektfensters" > hinzufügen kannst. Also oben rechts-klich auf das Projekt. Da erscheint > dann ein Punkt "Add". Ich glaube es geht bei der Version 6 ähnlich. Aber > ich kenne sie nicht. Klappt genauso bei 4 hab ich nun aich gemacht.
Christian schrieb: > Ich nehme an er möchte das ich in der hauptdaei vom Projekt F_CPU > Deklariere. wie mache ich das ? nein, das machst man in den Projekt Einstellungen. Irgendwo kann man dort defines setzen - dort muss man es eintragen.
>Klappt genauso bei 4 hab ich nun aich gemacht.
Das es bei Version 4 so geht ist klar. Was ich nicht weiss, ist, ob es
bei 6 auch so geht.
Gut. Ich schliesse das Du Version 4 hast. (Gute Wahl :-) )
Es fehlt also noch F_CPU.
Click auf "Project" (links) und dann auf "Configuration Options". In das
Feld "Frequency" trägst Du die Frequenz in Hertz ein. Nimm was
vernünftiges wie 16MHz.
Hi >8 Kanal IR empfänger: >http://www.pollin.de/shop/dt/NTc5OTgxOTk-/Bausaetz... Da ist aber keine Software. Aber von Hannes Lux gibt es alternative Software in Assembler: http://www.hanneslux.de/avr/pollin_ir8/index.html MfG Spess
Bitte einen längeren Text eingeben. Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.
>Nimm was vernünftiges...
"Take something reasonably reasonable" Hihi.
spess53 schrieb: > Da ist aber keine Software. Aber von Hannes Lux gibt es alternative > Software in Assembler: Die muss man bei Kontakt --> downloads --> produkt auswählen herunterladen
Tom schrieb: > Einige Compiler > können, einstellbar in den Optionen, direkt Assemblerdateien aus dem > C-Code erzeugen. Ich weiß nicht, ob der GCC das auch kann, wäre aber > einen Blick in sein Handbuch wert. Selbstverständlich kann er das. Ein Compiler, der kein Assembler-Listing ausgeben kann, wäre ja auch sein Geld nicht wert. :-)
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.