Forum: Projekte & Code Menu zur Einstellung RTC per Fernbedienung


von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

Ein FB-RTC-Einstellmenu , funktioniert wie beim Handy mit Pfeil- und 
Zifferntasten. Andere Befehle können natürlich auch eingegeben werden.

von Hmm (Gast)


Lesenswert?

Das ist ja toll.
Und was willst du mit den Header-Files und überhaupt sagen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Diese Headerdateien scheinen Quelltext zu enthalten.

Sorry, aber das sollte sich der "grundschüler" nochmal genauer ansehen, 
und zwar unter Berücksichtigung folgender Gesichtspunkte:

- Was gehört in *.c-Dateien
- Was gehött in *.h-Dateien
- Wie wird Quelltext lesbar formatiert
- Wie sieht Dokumentation aus
- Wofür sind Kommentare da

von grundschüler (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> - Was gehört in *.c-Dateien
> - Was gehött in *.h-Dateien

Es hadelt sich weniger um header-files, eher um ausgelagerte Teile der 
main.c.

Ich hatte hier überlegt, eine andere extension als *.h zu nehmen, z.B. 
*.u. Das ist aber daran gescheitert, dass notepad keine *.u Dateien 
kennt.

Es fehlt mir also eine extension, die von notepad und eclipse als code 
dargestellt wird.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ich habe mal gerade ins Zip reingeschaut.

Der TO möchte offenbar mit dem Code bei irgendeinem 
Verschlüsselungs-Wettbewerb teilnehmen. Das Zeug ist ziemlich unlesbar.

Was ich aber (aus dem wenig bis gar nicht dokumentierten) Code 
herauslesen konnte:

Es sind drei Dateien drin:

1. FB_globals.h:

Den globalen Variablen-Definitionen wird jeweils ein 'v' vorangestellt. 
Was soll das sein? Vielleicht volatile? Wo ist der typedef dafür?

2. FB_irMenu.h:

Weder geht daraus hervor, wie man die Menüstruktur aufbauen muss, noch 
wie man sie anwendet.

Es werden jede Menge numerische Konstanten verwendet, die nicht abhängig 
von F_CPU über den Präprozessor berechnet werden.

Es werden Funktionen wie Gui_DrawPoint() und andere aufgerufen, die 
überhaupt nicht definiert sind.

FB_RC5_64.h:

Es werden lcd_xxx()-Funktionen aufgerufen, die überhaupt nicht definiert 
sind.

Ich vermisse auch die RTC-Routinen für die offenbar verwendete DS1307.

Ausserdem geht das ganze Zeug durch keinen Compiler.

Frage an den TO: Was soll das? Damit kann man nix, aber auch gar nix 
anfangen.

: Bearbeitet durch Moderator
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

grundschüler schrieb:
> Es fehlt mir also eine extension, die von notepad und eclipse als code
> dargestellt wird.

Die heißt *.c

Du solltest keine eigenen Standards erfinden, wo Definitionen und 
Deklarationen abgelegt werden, sondern Dich an seit Jahrzehnten 
etablierten Konventionen orientieren.

Das gilt insbesondere, wenn Du Deine Erkenntnisse anderen Leuten zur 
Verfügung stellen möchtest -- neben der Programmiersprache gehören auch 
diese Konventionen zur Sprache, mit der wir uns hier unterhalten.

Dazu gehören auch Konventionen für Quelltextformatierung (auch wenn da 
individuelle Abweichungen noch am ehesten toleriert werden), 
Konventionen für Namensvergabe und Konventionen für die Kommentierung.

In Deinen Dateien erkenne ich nichts davon.

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

Frank M. schrieb:
> Frage an den TO: Was soll das? Damit kann man nix, aber auch gar nix
> anfangen.

ich dachte, dass der FB_RC5_64.h-code aus sich heraus verständlich ist. 
Ist er offenbar doch nicht.

Im Prinzip wird das empfangene IR-Commando übergeben.

Handelt es sich um die Taste fb_green, erfolgt der Eintritt in die 
RTC-menu-Schleife. Ausgewertet werden hier nur Pfeil-Tasten, Ziffern, ok 
und Abbruch.

Ein Array
kkdat[0] =hou/10;
kkdat[1] =hou%10;
kkdat[2] =min/10;
kkdat[3] =min%10;
kkdat[4] =WDY;
kkdat[5] =DAY/10;
kkdat[6] =DAY%10;
kkdat[7] =MON/10;
kkdat[8] =MON%10;
kkdat[9] =YEA/10;

speichert die RTC-Werte als Ziffern. Step bestimmt, welcher Wert auf dem 
LCD angezeigt wird. das Arrayfeld[step] kann dann jeweils modifiziert 
werden: Pfeil-o/Pfeil-u/Ziffer. Bei Ziffer wird step erhöht und der 
nächste RTC-Wert selektiert. Mit Pfeil-r/l wird 1x step vor- oder 
zurückgesprungen
Bei ok wird der aktuell auf dem Lcd angezeigte Wert gespeichert. Bei 
back erfolgt Abbruch.

Es ist also schlicht und einfach aber dennoch nützlich weil es für das 
Einstellen einer RTC meines Wissens nach keine bessere Lösung gibt.

Das ganze ist Teil eines etwas umfangreicheren Programms. Ich habe die 
Programmteile für FB/Twilcd/ds1820/ds1307 herausgezogen und für einen 
Atmega328/winavr compiliert.

Auf meinem M328 läuft es. Allerdings muss man natürlich die 
LCD-Funktionen anpassen, wenn mann kein TwiLcd hat.

F_IR
1
//#if (defined(_AVR_IOM328P_H_) )
2
#define F_IR        82//75//=>FCPU/100000/9
3
//F_IR so einstellen, dass tmp[1]/F_IR =10 ergibt
4
#define takt_timer    31
5
//#endif

F_IR muss per Hand eingestellt werden. Dazu lässt man sich am besten Die 
Dauer der ersten Flanke tmp[1] anzeigen. Der von mir angesetzte Wert 
gilt für 8MHz intern.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

grundschüler schrieb:
> ich dachte, dass der FB_RC5_64.h-code aus sich heraus verständlich ist.

Sorry, der ist absolut unlesbar. Das macht die Zip-Datei, wo Du Objekt-, 
eep-, hex, Proj-, lss-, sym-Dateien zusammen mit dem Source 
reinklatschst, überhaupt nicht besser.

> #define F_IR        82//75//=>FCPU/100000/9

Warum schreibst Du denn nicht

#define F_IR        (F_CPU/100000/9)

hin? Dann läuft es nicht nur mit Deinem speziell gewähltem Takt. Und was 
macht die magische 9 in Deiner Formel?

Was bedeutet eigentlich die Endung .k, die Du für Deine Sources 
verwendest? "Kaputtes-C"?

Ich glaube, Du hast den Sinn und Zweck von "Projekte und Code" nicht 
verstanden. Hier stellt man seinen Code vor, damit andere ihn für eigene 
Projekte verwenden oder etwas daraus lernen können

Deinen Code zu studieren ist eine Zumutung. Keine Einrückungen, 
unverständliche Abkürzungen, um den Code (absichtlich?) unleserlich zu 
machen... Sorry, das tut sich keiner an.

: Bearbeitet durch Moderator
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.