Forum: Mikrocontroller und Digitale Elektronik Uhr ATtiny13 Befehle gesucht (Arduino AS ISP -> C)


von Pascal (Gast)


Lesenswert?

Hi,
ich suche für die Arduino-IDE einen Befehl wie in Assembler rjmp zum 
Sprung innerhalb des Programmes.
sollte das nicht gehen (ich komme eh mit C und diesem Loop-Zeugs nicht 
klar) würde ich mich über einen Tipp bzgl. der Realisierung freuen.
Bitte nur ein Tipp, nicht ein fertiges Programm. Im Gegensatz zu vielen 
Anderen im Forum möchte ich noch etwas selber denken.
Bauen möchte ich eine Mini-Uhr:
Ich baue einen CMOS-Quarz-Oszillator, dessen Ausgang kommt an Pin 6 des 
Tiny13.
An Pin 5 kommt eine LED mit Vorwiderstand (2mA).
An Pin 2 und 3 kommen entprellte Taster.
Nach Drücken auf den Taster an Pin 3 wird die Uhrzeit über eine LED 
ausgegeben (das ist nicht das Problem, also meinerseits).
Nach langem Drücken (4 Sekunden) auf den Taster an Pin 2 kann die 
Uhrzeit eingestellt werden (durch kurzes Drücken).
Gut zu wissen wäre auch, wie man einem Zahlenwert die Nachkommastellen 
entzieht, da ich mit den 86400 Sekunden arbeiten möchte.

Danke

Pascal

von STM-8-C-Anfänger (Gast)


Lesenswert?

Pascal schrieb:
> ich suche für die Arduino-IDE einen Befehl wie in Assembler rjmp zum
> Sprung innerhalb des Programmes.
> sollte das nicht gehen (ich komme eh mit C und diesem Loop-Zeugs nicht
> klar) würde ich mich über einen Tipp bzgl. der Realisierung freuen.

Da solltest Du schon mal bekanntgeben, was Du mit dem Sprung bezwecken 
willst.

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Wenn Du die Variabel als (irgend ein passendes) INT declarierst, sind 
Nachkommastellen kein Problem mehr.
Da 86k Sekunden 'etwas' mehr als 65535 sind, reichen 16bit nicht mehr 
aus.
Ob Du 24bit nehmen kannst, oder 32bit nehmen musst, ist mir aber nicht 
bekennt.

MfG

von Stefan F. (Gast)


Lesenswert?

Willst du nicht lieber einen etwa größeren ATtiny verwenden und den 
direkt mit einem 32kHz Quarz takten?

Für ein Uhr-Programm sollten 32kHz auch als Systemtakt locker 
ausreichen. Damit habe ich schon wesentlich komplexere Sachen gamcht.

von Einer K. (Gast)


Lesenswert?

Pascal schrieb:
> ich suche für die Arduino-IDE einen Befehl wie in Assembler rjmp zum
> Sprung innerhalb des Programmes.

Goto ?!?!?!


Oder inline Assembler, dann tuts auch dein rjump

Oder eine Lib mit *.S Datei basteln. Dann kann die Arduino IDE auch 
Assemblerstrecken kompilieren.

Pascal schrieb:
> (ich komme eh mit C und diesem Loop-Zeugs nicht
> klar)
Dann lass die setup() und loop() doch weg.
Keiner zwingt dich damit zu arbeiten.

von Manuel (Gast)


Lesenswert?

Arduino F. schrieb:
> Dann lass die setup() und loop() doch weg.
> Keiner zwingt dich damit zu arbeiten.

heißt das, ich kann auch alle befehle außerhalb dessen eingeben und 
diese werden dann einmalig ausgeführt? (nacheinander)

von Manuel (Gast)


Lesenswert?

Ich habe nämlich ein ähnliches Problem, bei der analogen 
Signalverarbeitung

von Einer K. (Gast)


Lesenswert?

Manuel schrieb:
> heißt das, ich kann auch alle befehle außerhalb dessen eingeben und
> diese werden dann einmalig ausgeführt? (nacheinander)

Nein!

Dann wirst du eine main() einführen müssen.
Und darin kannst du dann "alle befehle" "eingeben und diese werden dann 
einmalig ausgeführt"

von TMK (Gast)


Lesenswert?

Die Arduino IDE liefert halt schon eine main() mit, und ruft daraus dann 
setup() und loop(), vermutlich um es den Einsteigern etwas zu 
erleichtern.
main() muss vorhanden sein, weil das die Standardfunktion in C/C++ ist, 
wo das Hauptprogramm beginnt.
"Einen Sprung innerhalb des Programms" braucht man quasi nie. Schleifen 
kann man mit "break" abbrechen, will man zig geschachtelte Schleifen 
verlassen, darf es auch mal ein "goto" sein. Daneben gibt es noch 
setjmp.h, das habe ich niemals gebraucht.
Pascal: Wenn dir C zu schwer ist, programmiere doch in PASCAL. ;-))
Sorry - der Witz musste sein.

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.