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


von weisnix (Gast)


Angehängte Dateien:

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)


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)


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)


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)


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)


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)


Lesenswert?

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

von Hilfer (Gast)


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)


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)


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)


Lesenswert?

Das stand jedenfalls im ersten Post.

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

von weisnix (Gast)


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:

Lesenswert?

Bitte schön.

Grüsse,
René

von Hilfer (Gast)


Lesenswert?

Ah. Siehst Du. Rene war so nett. Muss Weihnachten sein. :-)

OK. Hast Du noch Fragen?

von weisnix (Gast)


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)


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)


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)


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)


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)


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)


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)


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)


Lesenswert?

Die Zahlen hinter dem "<" (Kleinerzeichen) werden wohl die Minuten 
wiederspiegeln.

von Huh (Gast)


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)


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)


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)


Lesenswert?

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

Überschnitten :-)

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
Noch kein Account? Hier anmelden.