Forum: Compiler & IDEs main.c ändern und als .Hex absprichern?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von weisnix (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich selbst kann nicht Programmieren und befürchte das ich das ganze in 
meinem Alter auch nicht mehr lernen werde.

Ein Programm mit einem serial Programmer und Pic Prog auf den Chip zu 
schieben geht gerade noch so.

Zu meinem Problem: Ich wollte eine Wortuhr aus dem Franzis 
Ping-Pong-Spiel bauen.

Kam nach einiger Zeit auf die Seite von Zabex, da er eine DCF77 
gesteuerte Wortuhr hatte und die Software bereitstellte.

Allerdings sagt man in unseren Breitengraden "Es ist virtel vor" anstatt 
"Dreivirtel".

Man sagte mir ich solle im main.c die Zeile 253
else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL; 
}
mit der Zeile
else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR; 
}
ersetzen.
Das funktioniert auch wunderbar, jedoch wie erzeuge ich damit ein für 
Ponyprog lesbares Programm (HEX o.ä.) und was muß ich setzen damit ich 
mir den Atmega8 nicht zerschieße.

Vielen Dank im Vorraus

von Joe S. (joesch)


Bewertung
0 lesenswert
nicht lesenswert
Du brauchst eine Toolchain. Also Compiler, Linker, Assembler und noch
ein paar Sachen. Am einfachsten lädst Du Dir von Atmel das Studio runter
und läßt Deine main.c passend für den Atmega8 (ist auf der pong platine 
verbaut) übersetzen. Nach dem übersetzen und linken solltest Du dann 
auch
ein .hex file finden. Das kannst Du auf den AVR schieben.

: Bearbeitet durch User
von Amateur (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Wenn Du genau weiß, was Du tust, kannst Du auch Deine Änderungen im 
Hex-File vornehmen. Ist aber etwas triky - vor allem wegen der Prüfsumme 
am Ende jeder Zeile.
Schau mal im Internet nach, ob Du nicht einen Hex-Editor findest, der 
das Ändern auch tatsächlich zulässt.

von qwertz (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Der dir gesagt hat was du ändern sollst, kannst du den bitten für dich 
die Änderung vorzunehmen und dann soll er das bin(hex) schicken, was 
kannst du falschen? Üblicherweise ist das ein bin File.
Ich habe noch nie mit AVR gearbeitet ausser mit Arduino, also du würdest 
einen Compiler (Crosstoolchain) benötigen, das kommt normalerweise als 
Entwicklungsumgebung von Atmel, aber da müssen dir andere weiterhelfen.

von Huh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
weisnix schrieb:
> Man sagte mir ich solle im main.c die Zeile 253
> else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL;
> }
> mit der Zeile
> else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR;
> }
> ersetzen.

Das wird aber nicht die einzige Änderung sein.

Zum Beispiel der Unterschied "Viertel Sechs" oder "Viertel nach Fünf".

Beides ist die gleiche Zeitangabe, aber hier muß die Stunde noch 
geändert werden.

von weisnix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
O.k. das hört sich nach viel Arbeit an.
Damit kann ich meinem Bekannten nicht kommen. Da bekommt er nur wieder 
Dollarzeichen in die Augen....

Ich muss mir also was einfallen lassen, oder mit der anderen 
Sprachvariante leben.

Danke nochmal für die gutgemeinte Hilfe, es hätte ja auch mal einfach 
werden können statt kompliziert.

mfg

weisnix

von weisnix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Letzte Rettung : hat jemand sowas gebaut mit "Hessischem Sprachsatz" und 
DCF was ich nachbauen könnte ?

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
weisnix schrieb:
> O.k. das hört sich nach viel Arbeit an.
> Damit kann ich meinem Bekannten nicht kommen. Da bekommt er nur wieder
> Dollarzeichen in die Augen....
>
> Ich muss mir also was einfallen lassen, oder mit der anderen
> Sprachvariante leben.
>
> Danke nochmal für die gutgemeinte Hilfe, es hätte ja auch mal einfach
> werden können statt kompliziert.
>
> mfg
>
> weisnix

Moment mal. Soooo kompliziert ist das nicht.

Wenn Du uns genau sagst, was für ein Betriebssystem Du hast, dann geht 
die Installation in vielleicht drei oder vier Schritten. Hast Du in 
einer Stunde oder weniger erledigt.

Um das Tutorial für absolute Anfänger hier zu zitieren:
"Auf dem PC muss das AVR-Studio, WinAvr und ggf. Ponyprog zum Übertragen 
der Hex-Files installiert sein."

Das ist alles. Ponyprog hast Du ja schon. Also fehlt nur noch AVRStudio 
und WinAVR. Da musst Du auch nicht die neueren Versionen nehmen. Die 
älteren reichen und die sind noch relativ klein und einfacher zu 
bedienen.

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habs mal schnell kompiliert. Ein paar Warnings, aber nicht weiter 
schlimm.
1
Warning  1  variable 'pulsdauer' set but not used [-Wunused-but-set-variable]  C:\Transfer\GccApplication1\GccApplication1\GccApplication1.c  395  5  GccApplication1
2
Warning  2  variable 'neuesDatum' set but not used [-Wunused-but-set-variable]  C:\Transfer\GccApplication1\GccApplication1\GccApplication1.c  390  12  GccApplication1
3
Warning  3  variable 'monat' set but not used [-Wunused-but-set-variable]  C:\Transfer\GccApplication1\GccApplication1\GccApplication1.c  389  23  GccApplication1
4
Warning  4  variable 'wtag' set but not used [-Wunused-but-set-variable]  C:\Transfer\GccApplication1\GccApplication1\GccApplication1.c  389  17  GccApplication1
5
Warning  5  variable 'tag' set but not used [-Wunused-but-set-variable]  C:\Transfer\GccApplication1\GccApplication1\GccApplication1.c  389  12  GccApplication1
6
Warning  6  variable 'ss' set but not used [-Wunused-but-set-variable]  C:\Transfer\GccApplication1\GccApplication1\GccApplication1.c  386  18  GccApplication1

Was willst Du genau geändert haben?

Grüsse,
René

PS: ich spreche kein Hessisch :-)

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
René H. schrieb:
> Was willst Du genau geändert haben?


Man sagte mir ich solle im main.c die Zeile 253
else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL;
}
mit der Zeile
else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR;
}
ersetzen.

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das stand jedenfalls im ersten Post.

Hessisch spreche ich auch nur nach ein paar Flaschen ... irgendwas. :-)

von weisnix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also zur verfügung stehen 2 Rechner wobei auf dem einen Linux mint 17.3 
Rosa läuft, auf dem anderen XP . Mit Linux selbst hab ich wiederum 
nichts zu tun, Ich hab mit Ach und Krach nen Drucker zum Laufen 
bekommen.
PonyProg ist installiert auf dem Windows Rechner.Die anderen Programme 
WinAVR und AtmelStudio müsste ich nachinstallieren.


PS: ein USBASP steht auch noch zur Verfügung.

von René H. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bitte schön.

Grüsse,
René

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ah. Siehst Du. Rene war so nett. Muss Weihnachten sein. :-)

OK. Hast Du noch Fragen?

von weisnix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mann Mann Mann, Heute ist doch erst der 22 Dezember, So früh hab ich 
nicht mit nem Weihnachtsgeschenk gerechnet.

Vielen herzlichen Dank.

Hab trotzdem nochmal eine frage zu den zu ersetzenden Zeilen .

Was bedeuten die Zahlen hinter der spitzen Klammer  < 50  und <20

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
weisnix schrieb:
> Mann Mann Mann, Heute ist doch erst der 22 Dezember, So früh hab ich
> nicht mit nem Weihnachtsgeschenk gerechnet.
>
> Vielen herzlichen Dank.
>
> Hab trotzdem nochmal eine frage zu den zu ersetzenden Zeilen .
>
> Was bedeuten die Zahlen hinter der spitzen Klammer  < 50  und <20

Kleiner als....

Wenn Du mir genau sagst, was Du haben willst (also Textmässig) kann ich 
Dir das machen, dass ist wirklich nicht der Aufwand. Aber ich muss es 
wissen, da ich dem Hessisch nicht mächtig bin.

Also z.B: drei Viertel Fünf statt Viertel vor Sechs (oder wie auch 
immer).

Hilfer schrieb:
> Hessisch spreche ich auch nur nach ein paar Flaschen ... irgendwas. :-)

Ich bin Schweizer, nach ein paar Flaschen reicht das bestenfalls zum 
Berndüütsch....

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
René H. schrieb:
> Hilfer schrieb:
>> Hessisch spreche ich auch nur nach ein paar Flaschen ... irgendwas. :-)
>
> Ich bin Schweizer, nach ein paar Flaschen reicht das bestenfalls zum
> Berndüütsch....

Dachte ich mir schon, aufgrund des Rufzeichens. Muss immer an die gute 
alte HB9CV denken.

Bern? Da böte sich doch ein Neuenburger Schwarzschräubchen an. Zum Wohl. 
:-)

von weisnix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hab nochmal ein bischen gegoogelt und wiederum hier aber bei einem 
anderen Beitrag gelandet.
https://www.mikrocontroller.net/articles/Word_Clock#Deutsch_.283-sprachig.29

Wessi-Modus:

 es ist ein uhr
 es ist fünf nach eins
 es ist zehn nach eins
 es ist viertel nach eins
 es ist zehn vor halb zwei
 es ist fünf vor halb zwei
 es ist halb zwei
 es ist fünf nach halb zwei
 es ist zehn nach halb zwei
 es ist viertel vor zwei
 es ist zehn vor zwei
 es ist fünf vor zwei

Rhein-Ruhr-Modus:

 es ist ein uhr
 es ist fünf nach eins
 es ist zehn nach eins
 es ist viertel nach eins
 es ist zwanzig nach eins
 es ist fünf vor halb zwei
 es ist halb zwei
 es ist fünf nach halb zwei
 es ist zwanzig vor zwei
 es ist viertel vor zwei
 es ist zehn vor zwei
 es ist fünf vor zwei

Ossi-Modus:

 es ist ein uhr
 es ist fünf nach eins
 es ist zehn nach eins
 es ist viertel zwei
 es ist zehn vor halb zwei
 es ist fünf vor halb zwei
 es ist halb zwei
 es ist fünf nach halb zwei
 es ist zehn nach halb zwei
 es ist dreiviertel zwei
 es ist zehn vor zwei
 es ist fünf vor zwei

Das wäre dann der Rhein-Ruhr-Modus.
René wenn du das mal machen könntest....Mein Dank würde dir ewig 
nachschleichen, dich vermutlich aber nie erreichen......

Gruß Weisnix (do1frw)

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@ Weisnix

Das ist ja im Originalcode schon so.

@ Rene

Mir fällt gerade auf, dass ich Dich möglicherweise in die Irre geführt 
habe - falls Du Dich denn in die Irre hast führen lassen ...

Ich habe hier Beitrag "Re: main.c ändern und als .Hex absprichern?" auf 
Deine Frage, was denn geändert werden soll, den Text aus dem 
Eröffnungspost zitiert:

> Man sagte mir ich solle im main.c die Zeile 253
> else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL;
> }
> mit der Zeile
> else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR;
> }
> ersetzen.

Allerdings war im Originalcode diese Ersetzung sinngemäß, aber nicht 
wörtlich, schon gemacht worden.

Neu:
> else if(g.uhrMM < 50){TEXT_VIERTEL; TEXT_VOR;

Ich fürchte nun, dass Du möglicherweise genau diese Ersetzung gemacht 
haben könntest.

Neu (aber falsch):
> else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR;

Ich nehme an, dass es Dir aufgefallen ist, aber es schadet ja nichts, 
wenn ich es erwähne.

Tut mir leid.

von weisnix (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ja, diese Änderung hatte ich bereits gemacht. Deshalb auch die Frage was 
die Zahlen hinter dem "Kleiner als" Zeichen zu bedeuten haben.

Ich sollte Zeile 253 die original so aussieht
else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL;
}


ändern in:
else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR;
}


Habe aber geändert in:
else if(g.uhrMM < 50){TEXT_VIERTEL; TEXT_VOR;
}

da ich nur vermute, daß die Zahl wohl bleibt, der Text sich dahinter 
aber ändert, sonst wäre es ja das selbe wie :
 else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_NACH;               }


Stimmt das so?
oder liege ich damit total daneben?

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Geändert hatte ich am Original Code nichts, da es wie mir schien, schon 
gemacht worden ist.

Ich werde das neu durchgehen, mit der Liste von oben.

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
weisnix schrieb:
> ja, diese Änderung hatte ich bereits gemacht.

Na ja. Es wäre nützlich gewesen das zu erwähnen und nützlich gewesen, 
wenn ich es vorher nachgeprüft hätte, bevor ich René antwortete.

Hoffentlich ist es ihm aufgefallen. Aber Du kannst den Code ja einfach 
schonmal in den AVR programmieren, dann siehst Du es.

Zwischen den Minuten 45 und 54 (inklusive müsste die Ausgabe "zehn vor" 
sein, falls das schief gelaufen ist.

> [...]
> da ich nur vermute, daß die Zahl wohl bleibt, der Text sich dahinter
> aber ändert,
> [...]
> Stimmt das so?
> oder liege ich damit total daneben?

Nein. Das ist ganz richtig so.

von sup (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Zahlen hinter dem "<" (Kleinerzeichen) werden wohl die Minuten 
wiederspiegeln.

von Huh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
René H. schrieb:
> Ich werde das neu durchgehen, mit der Liste von oben.

Hast du auch das mit bedacht?:

Huh schrieb:
> Zum Beispiel der Unterschied "Viertel Sechs" oder "Viertel nach Fünf".
>
> Beides ist die gleiche Zeitangabe, aber hier muß die Stunde noch
> geändert werden.

von Hilfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
René H. schrieb:
> Geändert hatte ich am Original Code nichts, da es wie mir schien, schon
> gemacht worden ist.
>
> Ich werde das neu durchgehen, mit der Liste von oben.

Falls Du auf meine Meinung noch Wert legst ...

Ich habe das auch mal verglichen und dabei ist mir überhaupt erst 
aufgefallen, dass der Code schon dem "Rhein-Ruhr"-Modus entspricht.

Jedenfalls stimmt der Code so, denke ich. Hüstel. :-)

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also, ich würde sagen, dass stimmt im Hex bereits schon.
1
    if(     g.uhrMM <  5){TEXT_UHR;                              }
2
    else if(g.uhrMM < 10){TEXT_FUENF1;  TEXT_NACH;               }
3
    else if(g.uhrMM < 15){TEXT_ZEHN1;   TEXT_NACH;               }
4
    else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_NACH;               }
5
    else if(g.uhrMM < 25){TEXT_ZWANZIG; TEXT_NACH;              }
6
    else if(g.uhrMM < 30){TEXT_FUENF1;  TEXT_VOR;    TEXT_HALB;  }
7
    else if(g.uhrMM < 35){TEXT_HALB;                            }
8
    else if(g.uhrMM < 40){TEXT_FUENF1;   TEXT_NACH;    TEXT_HALB;  }
9
    else if(g.uhrMM < 45){TEXT_ZWANZIG; TEXT_VOR;               }
10
    else if(g.uhrMM < 50){TEXT_VIERTEL; TEXT_VOR;                             }
11
    else if(g.uhrMM < 55){TEXT_ZEHN1;    TEXT_VOR;                }
12
    else if(g.uhrMM < 60){TEXT_FUENF1;   TEXT_VOR;                }

Teste es einfach mal und melde Dich wieder sollte etwas nicht so sein, 
wie Du es Dir vorstellst.

Grüsse,
René

Hilfer schrieb:
> Bern? Da böte sich doch ein Neuenburger Schwarzschräubchen an. Zum Wohl.
> :-)

Nein, nein. Ich bin Luzerner, ein Innerschweizer.

von René H. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hilfer schrieb:
> Jedenfalls stimmt der Code so, denke ich. Hüstel. :-)

Überschnitten :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.