Go Down

Topic: Timer 2 15 khz frequenz mit variabler duty cycle (Read 5136 times) previous topic - next topic

Serenifly

Bei den Pin Chnage Interrupts teilen sich immer 8 Pins einen Interrupt Vektor. Und sie triggern bei jedem Flankenwechsel. Daher ist da noch etwas Code nötig um herauszufinden welcher Pin was gemacht hat.

Die "richtigen" externen Interrupts haben für jeden Pin einen eigenen Vektor und es man kann gezielt auf die Flanken triggern.

Doc_Arduino

okay verstehe, noch nicht im Detail wie die Lib intern arbeitet, aber das Prinzip ist klar.   :)
Ein Pin einer Gruppe löst einen Gruppen-ISR aus und man muß näher hinschauen welcher das war.

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

murdok1980

Ich nutze micros. Timer0 ist allso belegt.
Das mit dem PinChange Interrupt wäre ne Alternative da steig ich Moment aber noch nicht durch.
Ich hab irgendwo schon mal gesehen da wurde mit einem Timer ein x beliebiger Pin getoggelt und damit eine H-Brücke angesteuert.
Grüße
Andre

Doc_Arduino

#48
Feb 12, 2016, 03:24 pm Last Edit: Feb 12, 2016, 03:27 pm by Doc_Arduino
Hallo,

sowas ähnliches hatten wir auch schon gemacht. In einem Timer ISR x beliebige Pins toggeln lassen. Da gings glaube ich um eine Flüssigkeitspumpe. Der Code ist da auch umfangreicher.
Edit: das war hier drin    http://forum.arduino.cc/index.php?topic=359685
Neuland wäre mal die vorgeschlagene Lib auszuprobieren.  :)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Doc_Arduino

Hallo,

die EnableInterrupt Lib funktioniert bei mir nicht so richtig.
Das Bsp. HiSpeedAllPin reagiert hin und wieder, aber nicht auf alle.
Alle anderen Bsp. davon reagieren überhaupt nicht.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Serenifly

#50
Feb 12, 2016, 08:56 pm Last Edit: Feb 12, 2016, 08:59 pm by Serenifly
Mhh, du kannst mal die alte PinChangeInt Lib probieren:
https://github.com/GreyGnome/PinChangeInt

Hier gibt es noch eine:
https://github.com/NicoHood/PinChangeInterrupt
Ist neuer und unterstützt mehr Prozessoren

Doc_Arduino

Hallo,

die PinChangeInt habe in der Zwischenzeit probiert.
Einige Bsp. sind nicht verwendbar, weil da  eine ByteBuffer.h includiert wird muß. Nur woher nehmen?
Halbwegs aber nicht nachvollziehbar funktiniert das Bsp. PinChangeIntSpeed. So richtig klar auf Tastendruck gehts auch hier nicht.  Bin ich zu blöd dafür?

Die andere teste ich auch gleich.



Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Doc_Arduino

Hallo,

die PinChangeInterrupt Lib scheint zu funktionieren.
Bis auf das Low Level Bsp. Erhalte mehrere Compilerfehler.
Alle Pins kann man lt. Beschreibung nicht nutzen. Vielleicht ist das das Problem bei den anderen Libs ?
Aber diese funktioniert jedenfalls erstmal auf Anhieb.

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Doc_Arduino

#53
Feb 12, 2016, 10:06 pm Last Edit: Feb 12, 2016, 10:21 pm by Doc_Arduino
Hallo,

wie vermutet, die PinChangeInt Lib funktiniert nicht mit Pin 4 oder 5 zum Bsp.
10,11,12 funktioniert. Bsp. "PinChangeIntExample2560".
#define MYPIN...  abändern

mit dem SpeedTest Bsp. komme ich dennoch nicht zurecht.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Serenifly

Hast du einen Mega? Da gehen klar nicht alle Pins!

http://pighixxx.com/megapdf.pdf
Nur wo PCINTxx dabei steht

Doc_Arduino

Hallo,

siehe links, ja habe einen Mega2560.  :)
Nur PCINT Pins. Jetzt macht das alles wieder Sinn.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

murdok1980

Hab mal kurz das Pinout des Mega überflogen. Pin 11 bis 13 sind da dem Timer 1 zugeordnet OC1A bis C.
Das wär für mich eigentlich ideal. Die Hardware ist halt bissl groß. Ich werd mal schauen ob es noch andere Hardware gibt.
Mit der Library werd ich auch noch einmal testen .
Grüße
Andre

Doc_Arduino

Hallo,

such mal nach "mega2560 mini". Allerdings muß man dann erst den Bootloader flashen, damit er wie jetzt gewohnt programmierbar wird.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279


Doc_Arduino

#59
Feb 13, 2016, 03:33 pm Last Edit: Feb 13, 2016, 03:40 pm by Doc_Arduino
Hallo,

haste aber nicht lange gesucht.  :)
Mußt mehr über Google suchen, nicht direkt bei ebay. Warum auch immer.

Bei dem haste kein gewohntes USB dran. Ein ISP Programmer wird dann Pflicht.

bei dem hier muß man alles selbst löten.
http://www.mikrocontroller-elektronik.de/mini-controllerboard-mit-atmel-atmega2560-und-usb/

der wird eher was sein
http://www.ebay.com/itm/New-Small-Meduino-Mega2560-R3-Pro-Mini-ATMEGA16U2-Arduino-Mega2560-Compatible-/161757302117
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Go Up