Mit Asksinpp millis() nutzen
Moderator: Co-Administratoren
-
- 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
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!
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.
-
- Beiträge: 705
- Registriert: 22.05.2018, 10:23
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 120 Mal
Re: Mit Asksinpp millis() nutzen
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.
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
-
- Beiträge: 1793
- Registriert: 30.08.2017, 23:25
- Hat sich bedankt: 175 Mal
- Danksagung erhalten: 399 Mal
- Kontaktdaten:
Re: Mit Asksinpp millis() nutzen
NORTC definieren dann solltest du timer2 ISR für deine eigenen Zwecke kompilieren können.
https://github.com/pa-pa/AskSinPP#defin ... -code-sizeAll defines has to set in the sketch before any header file is included.
Viele Grüße,
Tom
Tom
-
- 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
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ß
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ß
-
- Beiträge: 1793
- Registriert: 30.08.2017, 23:25
- Hat sich bedankt: 175 Mal
- Danksagung erhalten: 399 Mal
- Kontaktdaten:
Re: Mit Asksinpp millis() nutzen
Deine Fehlerbeschreibung "wirkt nicht" ist nicht ausreichend (Glaskugel nicht vorhanden).
Viele Grüße,
Tom
Tom
-
- Beiträge: 705
- Registriert: 22.05.2018, 10:23
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 120 Mal
Re: Mit Asksinpp millis() nutzen
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
-
- 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
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]
-
- Beiträge: 12116
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 849 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: Mit Asksinpp millis() nutzen
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.