Pulse im ns Bereich mit µC möglich?

#2325227
Lesenswert?

vorzugsweise ein msp430.

die pulse sollen allerdings nicht kontinuierlich erzeugt werden, sondern 
nur sporadisch.

durch einen externen interrupt getriggert soll ein zähler loslaufen und 
bei erreichen eins bestimmten wertes den puls auslösen.


ist sowas möglich?

wenn man mit 20Mhz taktversorgung rechnet muss der controller schon 
ganzschön viele "instructions per cycle" mit machen um einen so kurzen 
puls zu erzeugen...

g
Gast #2325231
Lesenswert?

JA.

Aber welche Auflösung/Toleranz wird benötigt ?  zb 100 +- 5 ns ?

Dann rechne mal den notwendigen Takt aus.

10MHz sind mal gerade 100 nsec.
Also etwas Verarbeitungszeit dazu, etwas Spielraum zum einstellen der 
Pulsbreite.
Dann wird wohl ein µC mit so 100 MHz Takt aufwärts rauskommen.

Was vielleicht auch geht wäre ein externes Flipflop,  µC Pin direkt an 
den SetEingang des Flipflop und über ein RC Glied an den ResetEingang.
damit sollte der Reset etwas Zeitverzögert kommen.
Dimensionierung müsste man mal durchrechnen ob damit deine Pulsbreite 
getroffen werden kann.
#2325478
Lesenswert?

Den von dir favorisierten MSP430 kenne ich nicht inwendig.

Vielleicht hat er ja ähnliche Timer-Features wie jeder "olle" Atmel AVR: 
Da kann man mit der "output compare" Funktion eines Timers genaue Pulse 
definieren. Auflösung bis maximaler Prozessortakt. (20 MHz, also 50 ns.)
Es gibt 2 Compare-Register, für jedes kann man konfigurieren was bei 
einem "match" passieren soll. Eine der Möglichkeiten ist, einen 
korrespondierenden Pin des uC zu setzen oder zu löschen.

Wenn der Timer auch ein "input capture" hat geht das auch präzise 
synchron zu externem Trigger:
Wenn am Capture-Pin die konfigurierte Flanke auftritt wird der Timerwert 
automatisch in ein Hardwareregister kopiert und z.B. ein Interrupt 
ausgelöst. Die Interruptroutine kann nun "in Ruhe" diesen Wert auslesen, 
mit einem gewünschten Offset die Compare-Register programmieren und 
weiterhin die Dinge auf sich zukommen lassen.

Jörg
#2325514
Lesenswert?

Hi Jörg.


Wertvoller Input den du mir da gibst :)


50ns hören sich doch richtig gut an :)
kann ich den Controller nicht auch um faktor 2 übertakten um noch 
kürzere pulse zu erzeugen?

muss nicht zwingend ein MSP430 sein... Hauptsache es geht mit einem 
günstigen Kontroller der weitverbreitet ist.

AVRs wären sogar fast besser, da ich schon ein STK500 rumfahren habe :)
Gast #2325540
Lesenswert?

Hallo,

lass 'mal raten: Du willst einen 20 ns-Impuls erzeugen, da Du gerade 
einen schönen Artikel auf Heise gelesen hast, dass man damit die 
XBox360-Sicherheitsmechanismen aus dem Tritt bringen kann ;-)

Falls es das ist: es geht darum, zu einem geeigneten Zeitpunkt einen 
I2C-Taktgenerator zu resetten, ohne den Hauptprozessor in den Reset zu 
schicken, um dann die Takt-Teiler neu zu programmieren. Welche 
Anforderungen daraus an die Flankensteilheit u.ä. resultieren, könnte ja 
für das Thema auch interessant sein.

Nur daran denken (da ja nach günstigen, weit verbreiteten Controllern 
gefragt wurde): Das Herstellen und Vertreiben eines solchen 
Kopierschutz-Ausheblers wird in Deutschland mit Freiheitsstrafe bis 1 
Jahr oder mit Geldbuße bis 50.000 Euro geahnded (§108b UrhG). Privat 
darfst Du es zwar auch nicht basteln, es ist jedoch nicht strafbewehrt.

Schöne Grüße,
Martin
#2325551
Lesenswert?

mein beileid, wer solche news von heise bekommen muss...

kopierschutz wird keiner ausgehebelt, es wird lediglich möglich sein 
selbst geschriebenen code auf der maschine auszuführen.

wer den artikel gelesen hätte, wüsste auch worum es geht.
...und der taktgenerator wird nicht resettet.
und schon garnicht über I2C



glaubst du ernsthaft ich würde mir vorschreibenlassen was ich mit ein 
bisschen elektronik anstellen darf und was nicht?
#2325552
Lesenswert?

Einige der aktuellen MSP430 kannst du mit 25MHz betreiben, wenn du einen 
der Timer-Ausgänge benutzt, kannst du Pulse mit 40ns Auflösung erzeugen. 
Das könnte für die XBOX ausreichend sein. :)
Noch besser gehts wohl mit einem AT90PWM...der hat eine PLL drin, die 
PWM ausgänge können da meines Wissens mit bis zu 64MHz laufen, was 
15,625ns minimale Pulsbreite wären. Damit kommst du den 20ns für den 
Prozessor-Hack schon Nahe...

Soweit ich gelesen habe, wird der Taktgenerator beim Booten auf eine 
niedrigere Frequenz eingestellt, und das per I2C.
Gast #2325670
Lesenswert?

Hallo,

o.k. sorry, ich hatte nicht weiter gesucht und hatte gedacht, dass das 
Timing-IC zurückgesetzt werden muss, bevor die Register wieder 
geschrieben werden können (kommt vor); anscheinend wird aber tatsächlich 
eine racing-condition ausgenutzt, die auftritt, wenn der Prozessor 
langsam getacktet wird und dann der Reset zu kurz betätigt wird.

Lässt sich in der nächsten Harware-Generation ganz leicht durch eine 
modifizierte Beschaltung der Resetleitung ändern. Interessant finde ich 
nur, welches Insider-Wissen vom Prozessor man haben muss, um auf diese 
Racing-Condition zu kommen.

Wie immer gilt halt: Nichts ist unknackbar - den Wettlauf zwischen 
Rüstung und Geschoss gewinnt immer das Geschoss.

Und im übrigen: der §95a UrhG schützt halt alle technische Maßnahmen, 
die sicherstellen sollen, dass ein urheberechtlich geschütztes Werk nur 
so verwendet wird, wie es der Rechteinhaber vorsieht. Kopierschutz ist 
also nur ein Beispiel, schon das nicht vorgesehene Verwenden irgendeines 
XBOX360-Kernel-Bestandteils ist nicht erlaubt (und somit auch das Laden 
eigener Software). Man kann somit das Gesetz nur ignorieren (mit 
entsprechenden Konsequenzen bei gewerblichem Umfang), wegdiskutieren ist 
nicht.

Schöne Grüße,
Martin
#2325711
Lesenswert?

wie gligli selbst geschrieben hat, war es reiner zufall dass er auf den 
glitch gestoßen ist.


und mal nebenbei:
ich habe nicht vor ein produkt auf den markt zu bringen.

ich möchte lediglich erreichen, dass möglichst viele leute in den genuss 
von linux auf der xbox360 kommen können.
Gast #2325826
Lesenswert?

Du brauchst nur auf den POST39 triggern und ausloesen..:) ein xor-gatter 
mit rc-glied amEingang. Die anderen drei als adressdecoder beschalten. 
Das ist ja aber nur die halbe miete, den I2C musst du ja auch noch 
bedienen, oder zumindest die PLL_BYPASS_LEITUNG
Da ich con fga und cpld und vhl keine Ahnung habe,würde ich mit flinken 
gattern den Resetimpuls erzeugen und mitm kleinen tiny den I2C bedienen
Gast #2325852
Lesenswert?

Hallo,

ich möchte Dich ja auch nicht maßregeln oder Dir Gewinnabsicht 
unterstellen, sondern nur auf mögliche Probleme hinweisen, die Dich 
sonst böse erwischen könnten. Denn zur Gewerbsmäßigkeit gehört in 
Deutschland (o.k., zumindest in Bayern) seit neuestem nicht mehr, dass 
man damit Geld verdient oder verdienen möchte. Eine unkontrollierte 
Verteilung reicht inzwischen dem OLG München, um den Verursacher 
einzubuchten - siehe:

http://www.123recht.net/OLG-Muenchen-zum-gewerblichen-Ausmass-einer-Urheberrechtsverletzung-durch-Filesharing-__a97883.html

Entspricht zwar irgendwie weder meinem Rechtsverständnis noch dem 
Rechtsverständnis meines Finanzamtes, aber Recht bekommt hier sowieso 
nur noch der mit dem dickeren Bankkonto...


Schöne Grüße,
Martin
#2326897
Lesenswert?

Ein Timer des ATtiny25 kann via PLL mit 64MHz betrieben werden und kann 
Pulse mit der Dauer vom einem Takt produzieren. Die exakte Pulslänge 
lässt sich bei Verwendung des internen RC-Taktes über das 
OSCCAL-Register um Faktor 2 rauf und runter einstellen, beispielsweise 
mit Poti am ADC-Eingang und ADC-Wert => OSCCAL.
Gast #2326992
Lesenswert?

Hallo,

guck dir mal die CTMU von Microchip an.... Auflösung im pS Bereich...

Auf Seite 8:

"PWM Generation
By using the CTMU with a comparator (either internal or
external), there is a way to generate high-resolution,
high-frequency Pulse-Width Modulation (Figure 9). The
PWM resolution depends on the slope controlled by the
internal A/D sampling capacitor (CHOLD), and can be
changed by adding an external capacitor parallel to
CHOLD."

Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren