Forum: Mikrocontroller und Digitale Elektronik main.c in xxx.hex umwandeln


von Ralf W. (tubefreak)


Lesenswert?

Hallo,
Bevor man mich hier zerfleischt, erst mal was zu meiner Person.
ich habe 1980 Fernmeldehandwerker gelernt. Ich habe nie ein Programm für 
ein µC geschrieben.
Das heisst ich kann nicht programmieren !!!!.
Ich gehe geradewohl auf die 60 zu und möchte es auch nicht mehr 
erlernen.

Soweit so gut.
Ich habe auf der Seite von Zabex eine Wortuhr mit DCF77 gesehen. Herr 
"Zabex"(Dr.-Ing. Dietmar Schröder) benutzt leider den bei uns in 
Mittelhessen unüblichen Ausdruck "Drei Virtel". Abhilfe schafft wohl:
Suche in main.c die Zeile (Z.253)
        else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL; 
}
und ersetze sie durch:
        else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR; 
}

O.k. wie gesagt kann ich nicht Programmieren, denke aber mal das ich die 
< 50 von oben beibehalten sollte und gegen die < 20 ersetzen sollte....
Bitte mal meinen Gedankengang bestätigen (oder eben auch nicht).

Und nun das Wichtigste, wie wandele ich die main.c in eine Flashbare 
Hex-Datei? geht das evtl mit Geany (ich nutze Linux )?

: Verschoben durch Moderator
von Horst G. (horst_g532)


Lesenswert?

Ralf W. schrieb:
> Ich gehe geradewohl auf die 60 zu und möchte es auch nicht mehr
> erlernen.

Wow... - sorry, wenn ich das so sage, aber das halte ich für eine 
sehr... unglückliche Einstellung.
Ich weiß ja nun selbst, dass das Erlernen neuer Dinge mit zunehmendem 
Alter immer schwerer fällt - andererseits ist ja 60 heutzutage ja noch 
"kein Alter" (bzw. sollte es nicht sein - immer dran denken, dass du 
noch rund ein Viertel des Lebens vor dir hast - und, sollte es nach dem 
Staat gehen, noch sieben oder zukünftig gar neun weitere Jahre arbeiten 
"darfst".

Zum Thema:

Ralf W. schrieb:
> Suche in main.c die Zeile (Z.253)
>         else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL;
> }
> und ersetze sie durch:
>         else if(g.uhrMM < 20){TEXT_VIERTEL; TEXT_VOR;
> }

Du planst also offenbar, Version 1 der Uhr zu bauen, da Version 2 einen 
Arduino einsetzt, ergo gar keine main.c mitbringt.
Nach kurzem Überfliegen des Quellcodes sollte deine Ersetzung so 
functionieren; lediglich verstehe ich nicht, warum du
1
g.uhrMM < 20

schreiben willst statt der ursprünglichen "< 50". Was Zabex in dieser 
Zeile macht, ist, dem µC zu sagen, "wenn der Minuten-Zähler kleiner als 
50 ist, schalte die korrekten LEDs ein" (in Verbindung mit den 
vorhergehenden Anweisungen wird diese Zeile allerdings nur ausgeführt, 
wenn der Minutenzähler ebenfalls mindestens 45 beträgt - deshalb würde 
eine einfache Ersetzung von 50 mit 20 an dieser Stelle auch nicht 
funktionieren).

Grundlagen zum Programmieren in C findest du z. B. im 
AVR-GCC-Tutorial.

Ralf W. schrieb:
> wie wandele ich die main.c in eine Flashbare Hex-Datei?

Dur brauchst einen sog. Compiler, der dir den Quellcode in der 
Programmiersprache C in den notwendigen Maschinencode übersetzt.
Das einfachste ist wohl die Installation des Atmel Studio 
Atmel Studio.
Für Version 2 der Wortuhr entsprechend die Arduino IDE.
Diese sogenannten IDEs behinhalten neben einem Texteditor auch den 
Compiler (und Linker; ein weiteres notwendiges Programm, welches 
vereinfacht gesagt die compilierten Codes aus mehreren Dateien zu einer 
einzigen Datei zusammenbaut), alle benötigten Programmbibliotheken (für 
Funktionen, die du einfach einbinden musst, ohne diese erst selbst 
schreiben zu müssen), und ein Tool zum Flashen deines Programms auf den 
µC.

von Franz (Gast)


Lesenswert?

Schreib doch dem zabex, er schreibt auf seiner Homepage, dass er gerne 
hilft: “Man kann mir aber schreiben, wenn man mal Hilfe beim selber 
bauen braucht (einfach auf Kommentieren klicken).“

Ganz unten auf der Seite.

von Ralf W. (tubefreak)


Lesenswert?

Sorry, hatte ich vergessen, ja Version1, die mit der Ping-Pong Platine 
von Franzis.
Das von dir Farbig hervorgehobene war die Antwort Mail von Zabex auf die 
Frage wie ich Drei virtel gegen Virtel vor tausche.
Mich hat bei dieser Antwort stutzig gemacht, daß ich die vorher Fünfzig 
in jetzt Zwanzig tauschen soll.....
Ich vermute einen "Kopier-Fehler" von Zabex.

Jetzt muss ich nur noch jemanden finden der mir erklärt wie ich das 
ganze mit dem Programm Geany (Linux) durchführen kann.

: Bearbeitet durch User
von nfet (Gast)


Lesenswert?

Also das einfachste wäre, du lässt es dir von jemanden umwandeln. Der 
Aufwand dazu ist nicht sehr groß, wenn man die passenden Programme schon 
installiert hat. Bin leider gerade nur am Handy, sonst würde ich es für 
dich versuchen.

Prinzipiell müsste es mit ungefähr den folgenden Befehl ausgeführt in 
einer Shell im Ordner Software/default gehen:
"make all"

Das sollte das beiliegende makefile aufrufen und danach sollte es ein 
neues Hex File geben. Gut möglich, das wichtigste Programm dazu wäre 
wohl der aber gcc, der unter Debian z.B. mit  "sudo apt-get install 
binutils gcc-avr avr-libc" installieren lassen müsste.

Viel Erfolg, ich versuche morgen nochmals hier rein zu schauen, ob's 
erfolgreich war.

von Ralf W. (tubefreak)


Lesenswert?

Hab versucht den AVR8 Burn-O-Mat nach AVRdude zu installieren, ich 
bekomm das teil irgendwie nicht zum laufen, da soll noch java 
installiert werden, daran scheitert es wohl.

von Einer K. (Gast)


Lesenswert?

Horst G. schrieb:
> Für Version 2 der Wortuhr entsprechend die Arduino IDE.
Auch die Version 1 geht durch die Arduino IDE.

Zusätzlich nötig:
Eine ATMega8 Borddefinition beschaffen/basteln und den exotischen Takt 
und die Fuses dort eintragen.
Ein fast beliebiger ISP Programmer.

von Ralf W. (tubefreak)


Lesenswert?

sodele, Uhr läuft, jedoch halt mit "Dreivirtel" statt virtel vor....

hab das dcf77 modul mit 3V am laufen, Pon mit GND gebrückt, somit brauch 
ich nur 3 Drähte. K2 ist also nicht mit + verbunden. Ist das relevant?

bräuchte jetzt nur das neue Hex. Ich hoffe ja dass sich noch jemand 
meiner erbarmt.

Danke an alle helfenden.

von Alex C. (bulettenbronko)


Lesenswert?

Ralf W. schrieb:
> bräuchte jetzt nur das neue Hex. Ich hoffe ja dass sich noch jemand
> meiner erbarmt.

Ich habe dir eine Nachricht hinterlassen (weiss jedoch nicht, ob diese 
angekommen ist) und könnte das kurz für dich erledigen.

von Andreas B. (bitverdreher)


Lesenswert?

Horst G. schrieb:
> Ralf W. schrieb:
>> Ich gehe geradewohl auf die 60 zu und möchte es auch nicht mehr
>> erlernen.
>
> Wow... - sorry, wenn ich das so sage, aber das halte ich für eine
> sehr... unglückliche Einstellung.
+1

Ralf W. schrieb:
> Hab versucht den AVR8 Burn-O-Mat nach AVRdude zu installieren, ich
> bekomm das teil irgendwie nicht zum laufen, da soll noch java
> installiert werden, daran scheitert es wohl.
Laß die ganze GUI und rufe avrdude von der Kommandozeile auf. Das 
ersppart viele Probleme.

Gerade gesehen, daß Zabex das mit Arduino gemacht hat.
Warum installierst Du Dir also nicht einfach Arduino und gut ist?

Aber wenn ich so etwas schon lese (O-Zitat website):
"Einen Schaltplan habe ich nicht. Den muss man sich halt aus den 
Kommentaren im Quellcode und den beigelegten Infos zum Max7219 
zusammenreimen."
Das ist schon ziemlich abschreckend.

: Bearbeitet durch User
von Andreas B. (bitverdreher)


Angehängte Dateien:

Lesenswert?

Hier mal folgendes geändert:
Zeile 253:
1
else if(g.uhrMM < 50){TEXT_DREI1;   TEXT_VIERTEL;      }
auf
1
else if(g.uhrMM < 50){TEXT_VIERTEL;   TEXT_VOR;            }

von Stefan F. (Gast)


Lesenswert?

Ralf W. schrieb:
> Hab versucht den AVR8 Burn-O-Mat nach AVRdude zu installieren, ich
> bekomm das teil irgendwie nicht zum laufen, da soll noch java
> installiert werden, daran scheitert es wohl.

Ich hatte mit AVR8 Burn-O-Mat und einer relativ aktuellen Java Version 
auch Probleme. Man muss es

a) entweder mit Java 7 (oder 8?) laufen lassen oder
b) neu compilieren und eine Bibliothek austauschen

Der Download von http://stefanfrings.de/avr_tools/AVR8-Burn-O-Mat.zip 
läuft auch mit Java 11 und einigen neueren Versionen (welche genau habe 
ich nie ausprobiert).

Aber eigentlich brauchst du AVR8 Burn-O-Mat nicht. Denn dieses ruft 
letztendlich nur AVRdude auf, das kannst du auch selbst tun.

von Ralf W. (tubefreak)


Lesenswert?

Hallo Andreas, erstmal vielen Dank für das erstellen der Hex Datei. Ja, 
Zabex macht die größere 2te variante mit Arduino. Die erste also der 
Pong uhr Bausatz von Franzis aber nicht.

von nfet (Gast)


Lesenswert?

Oh, ich hatte ja auch versprochen gestern nochmal rein zu schauen, nun 
ist es aber doch erst heute geworden. Wie ich sehe hat Andreas dir schon 
dass Hex File gebaut. Viel Erfolg damit.

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.