Mit Asksinpp millis() nutzen

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

kbach
Beiträge: 112
Registriert: 21.01.2014, 14:24
System: Alternative CCU (auf Basis OCCU)
Wohnort: bei Berlin
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von kbach » 09.03.2023, 14:05

Oh, das wäre ja toll!
Wie gesagt das Ziel ist ein millis().
Im Moment habe ich im Test ein symetrisches Signal mit 1ms Impulsdauer . Bei jedem Interrupt wird ein Zähler incrementiert. Somit ergibt sich eine Auflösung von 1ms. Diese Variable Millis lese ich dann anstelle der Funktion millis(). Vielleicht kann man das Signal von Deiner LED Klasse auch einfach auf z.B. Pin 9 legen. Dann könnte ein Interrupt den Rest erledigen.

0,5ms an, 0,5ms aus, unendliche Wiederholung.

Vielen Dank!
Zuletzt geändert von kbach am 10.03.2023, 07:52, insgesamt 2-mal geändert.

kbach
Beiträge: 112
Registriert: 21.01.2014, 14:24
System: Alternative CCU (auf Basis OCCU)
Wohnort: bei Berlin
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von kbach » 09.03.2023, 14:17

NORTC habe ich nicht definiert.

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von papa » 10.03.2023, 08:38

Vergiss das mit der LED-Klasse - ich hatte verstanden, dass Du das Signal erzeugen willst. Aber Du willst es ja genau anders herum - Du willst es einlesen.
Ich glaube das einfachste wäre, das ganze in einen extra ATTiny (oder anderen billigen MCU) auszulagern. Das kannst Du dann ungestört alles in Echtzeit auswerten und einen Pin schalten.
Anfragen zur AskSin++ werden nur im Forum beantwortet

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: Mit Asksinpp millis() nutzen

Beitrag von TomMajor » 10.03.2023, 13:01

NORTC definieren dann solltest du timer2 ISR für deine eigenen Zwecke kompilieren können.
All defines has to set in the sketch before any header file is included.
https://github.com/pa-pa/AskSinPP#defin ... -code-size
Viele Grüße,
Tom

kbach
Beiträge: 112
Registriert: 21.01.2014, 14:24
System: Alternative CCU (auf Basis OCCU)
Wohnort: bei Berlin
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von kbach » 10.03.2023, 14:49

Ja, leider mit wenig Erfolg.
NORTC hatte ich gleich definiert und probiert nachdem papa mich danach gefragt hatte. Hat aber leider nichts genutzt. Dann hatte ich noch die Idee PWM- OC2B (braucht keine spezielle ISR) zu nutzen und an Pin 3 einen EnableInterrupt zu hängen. Funktioniert vom Prinzip her, auch wenn es 1024 statt 1000 Impulse/sek wären. Zum messen im Bereich von 5 bis 45ms stört das kaum. Aber leider funktioniert dann Pin 4 als Eingang nicht mehr. Ich sehe da zwar keinen Zusammenhang - hilft mir aber trotzdem erst mal nichts. Ich werde mir mal den ATTini durch den Kopf gehen lassen - ich hätte es aber lieber kompakt..

Danke für Eure Unterstützung.
Gruß

kbach
Beiträge: 112
Registriert: 21.01.2014, 14:24
System: Alternative CCU (auf Basis OCCU)
Wohnort: bei Berlin
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von kbach » 10.03.2023, 18:45

Woran könnte es nun liegen, dass
#define NORTC // vor allen #include's
nicht wirkt?

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: Mit Asksinpp millis() nutzen

Beitrag von TomMajor » 11.03.2023, 17:37

Deine Fehlerbeschreibung "wirkt nicht" ist nicht ausreichend (Glaskugel nicht vorhanden).
Viele Grüße,
Tom

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von papa » 11.03.2023, 20:17

kbach hat geschrieben:
10.03.2023, 18:45
Woran könnte es nun liegen, dass
#define NORTC // vor allen #include's
nicht wirkt?
Weil AlarmClock.cpp mit dem Arduino-Einstellungen übersetzt wird. Das muss per -DNORTC für alle Compileraufrufe gesetzt werden. Weiss aber l´nicht, ob/wie das in der Arduino-IDE geht. Nutze Eclipse mit Slober-Plugin.
Anfragen zur AskSin++ werden nur im Forum beantwortet

kbach
Beiträge: 112
Registriert: 21.01.2014, 14:24
System: Alternative CCU (auf Basis OCCU)
Wohnort: bei Berlin
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: Mit Asksinpp millis() nutzen

Beitrag von kbach » 12.03.2023, 08:53

Sorry Tom. Ich dachte, das hätte ich rübergebracht. Die Definition der ISR für den Timer führt zur Compiler Fehlermeldung.

Code: Alles auswählen

ISR(TIMER2_OVF_vect){ 
...
}

Fehlermeldung:
tmp/arduino-sketch-95DE732D785A68C3A1A6E18052C3CC7E/libraries/AskSinPP/AlarmClock.cpp.o (symbol from plugin): In function `as::sysclock':
(.text+0x0): multiple definition of `__vector_9'
/tmp/arduino-sketch-95DE732D785A68C3A1A6E18052C3CC7E/sketch/HB_LC-Bl1-RM-3.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1   
/code]

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: Mit Asksinpp millis() nutzen

Beitrag von jp112sdl » 12.03.2023, 11:38

kbach hat geschrieben:
12.03.2023, 08:53
Die Definition der ISR für den Timer führt zur Compiler Fehlermeldung.
Wie papa schon schrieb... es liegt wohl an der Arduino IDE, dass das im Sketch hinzugefügte #define NORTC im #ifndef NORTC in der AlarmClock.cpp Zeile 44 nicht funktioniert.
Notfalls wirfst du den ISR(TIMER2_OVF_vect) dort einfach raus.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“