Forum: Mikrocontroller und Digitale Elektronik SAMD51 Glue Logic und Event System erzeugen nur Spikes


von Blume (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

ich hab mit Atmel Start eine SAMD51 wie folgt konfiguriert:
1
PA06 --> External Interrupt 6 --> Event Channel 1 --> LUT-0 Eingang 1 --> PA19

Die LUT Tabelle hab ich so konfiguriert dass das Signal am Eingang 
einfach auf den Ausgang kopiert wird.

Wenn ich nun ein Rechteck Signal an PA06 anlege, bekomme ich nur Spikes 
bei der steigenden Flanke des Eingangssignals. Sieht also so aus als 
wäre ein Flanken Detektor aktiv.

Um das zu kontrollieren habe ich den Event Channel 1 zusätzlich auf Port 
Event 1 gelegt und diesen mit PA18 verbunden:
1
PA06 --> External Interrupt 6 --> Event Channel 1 --> Port Event 1 --> PA18
2
                                                  +-> LUT-0 Eingang 0 --> PA19

an PA18 kommt das Rechtecksignal wie erwartet.
an PA19 nur Spikes. heir würde ich das gleiche Signal erwarten

file:/C:/p4/develope/SBS/HutschieneBridge/Project/MyProject.atstart

was mache ich falsch?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> My_Project_3_.atstart
Was soll das sein? Was findet sich da drin?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Was soll das sein?

Schätzungsweise ein "Atmel Start"-Projekt. Müsste man sogar hier 
importieren können:

https://start.atmel.com/

Ist natürlich genauso umstritten wie andere "Wir machen das für 
Sie!"-Meta-Code-Generatoren. Man lernt nichts über die Details, wie die 
zugrunde liegende Hardware wirklich angesprochen wird.

Beitrag #6800212 wurde von einem Moderator gelöscht.
von Blume (Gast)


Angehängte Dateien:

Lesenswert?

Jörg W. schrieb:
> Schätzungsweise ein "Atmel Start"-Projekt. Müsste man sogar hier
> importieren können:
>
> https://start.atmel.com/

Bingo

Umstritten hin oder her.
Auch das Datenblatt hab ich gelesen.
Gerade das Kapitel über Digital Glue Logic ist naja.
Ich habe zum ersten mal mit dem SAMD51 und der Glue Logic zu tun.
Über ein Flankendekoder ließt man nichts.

im Anhang hab ich mal ein Foto.
Gelb ist das Eingangssignal,
Blau das Ausgangssignal an PA19
Rot das Signal an PA18

Blume

von Alexander S. (alex998)


Lesenswert?

Blume schrieb:
> Über ein Flankendekoder ließt man nichts.

Na doch, Abschnitt 41.6.2.6 "Edge Detector" im Datenblatt. Ausversehen 
angeschaltet?

von Blume (Gast)


Angehängte Dateien:

Lesenswert?

Nein der ist aus

von Alexander S. (alex998)


Angehängte Dateien:

Lesenswert?

Schau mal in die Errata, vllt. hilfts.

von Blume (Gast)


Angehängte Dateien:

Lesenswert?

Aber scheinbar hat jeder Event ein Flankendekoder am Eingang der LUT.
1
By default CCL includes an edge detector.

aber ich finde nirgends was um diesen "default" Flankendekoder 
abzuschalten.

mfg

Blume

von Alexander S. (alex998)


Lesenswert?

Ich seh grad das ist kein Bug sondern ein Feature...

Das Event-System in der CCL kennt prinzipiell nur "Strobes" sprich 
Impulse zum Signalisieren.
Was hattest du den vorgehabt?

edit: Du kannst PA06 doch direkt als Input für die CCL nehmen. Schau mal 
unter IO-Multiplexing S.33

von Blume (Gast)


Lesenswert?

Alexander S. schrieb:
> Ich seh grad das ist kein Bug sondern ein Feature...
>
> Das Event-System kennt prinzipiell nur "Strobes" sprich Impulse zum
> Signalisieren.

Das stimmt so nicht ganz. Wenn ich das Event direkt auf ein PortPin 
route funktioniert das wunderbar. (Siehe Oszillogramm)
der Edge Decoder sitzt direkt vor der LUT aber nur wenn als Eingang ein 
Event gewählt ist.

> Was hattest du den vorgehabt?

ich muss ein "alte" H-Brücken Schaltung mit einem anderen IC 
realisieren.
Eingang: PWM, DIR, Break


nun wollte ich die bisherigen Eingangssignale über Events, LUTs und 
alles was sonst noch da ist so an das IC anlegen das sich die Schaltung 
wie die bisherige verhält.

von Blume (Gast)


Lesenswert?

Nachtrag:
Leider ist die Schaltung schon fertig. und mein Auftraggeber hat die 
PIN's nicht optimal verteilt. deshalb wollte ich die Eingangs Pins mit 
Hilfe der Events an die LUT routen. das geht aber wohl dann nicht.
wegen diesem Edge detector.

:-(

von Alexander S. (alex998)


Lesenswert?

Blume schrieb:
> Das stimmt so nicht ganz. Wenn ich das Event direkt auf ein PortPin
> route funktioniert das wunderbar. (Siehe Oszillogramm)
> der Edge Decoder sitzt direkt vor der LUT aber nur wenn als Eingang ein
> Event gewählt ist.

Was für eine Port Event Action (S. 821) hast du denn bei PA18 gesetzt?
->PORTx.EVCTRL

von Blume (Gast)


Angehängte Dateien:

Lesenswert?

0x0 -> Output register of pin will be set to level of event.

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Blume schrieb:
> aber ich finde nirgends was um diesen "default" Flankendekoder
> abzuschalten.

In meiner Doku (Revision A - 07/2017) steht
"Writing the LUTCTRLx.INSELy=ASYNCEVENT will disable the edge detector."

und auch "Figure 41-6. Event Input Selection" zeigt den Bypass vom 
Flankendekoder.

Interessant, war (oder ist noch) vorgesehen?

von Blume (Gast)



Lesenswert?

Apollo M. schrieb:
> In meiner Doku (Revision A - 07/2017) steht
> "Writing the LUTCTRLx.INSELy=ASYNCEVENT will disable the edge detector."

* in Revision C wurde das entfernt.
* In Atmel Start kann man das AsyncEvent nicht anwählen.
* Bei der Beschreibung von INSEL tauch das aber noch auf.

von Bob (Gast)


Lesenswert?

Jörg W. schrieb:
> Ist natürlich genauso umstritten wie andere "Wir machen das für
> Sie!"-Meta-Code-Generatoren. Man lernt nichts über die Details, wie die
> zugrunde liegende Hardware wirklich angesprochen wird.

Das ist der eine Aspekt und Atmel hat das echt perfektioniert da 
möglichst viel zu verstecken.

Das andere ist, START ist schlicht verbugt.
Interessanterweise kümmert sich da irgendwer drum und updated das immer 
noch, obwohl das eigentlich längst nicht mehr Online sein sollte.

Takterzeugung.
Ich habe gerade ein neues Projekt für einen ATSAMD51J19A angelegt.
Per Default steht der Clock-Configurator auf XOSC1 mit 12MHz.
Dazu ist für XOSC1 auch noch die niedrigste Start-Up Time von 31µs 
konfiguriert.

Inzwischen kann man sogar eine DPLL direkt mit dem XOSC Takt füttern, 
hat auch nur Jahre gedauert bis das ging.
Da fehlt "nur" der Hinweis, was der Wert für den Clock-Divider bedeutet, 
also ohne das x = 2*(div +1) ist das nicht so direkt zu verstehen.
Mit Fractional = 0, Integer = 59 und Clock Divider = 2 kommt man auch in 
START endlich mal auf 120MHz ohne den XOSC Takt durch eine GCLOCK 
Einheit teilen zu müssen.

Dafür funktioniert die DFLL48M komischerweise gerade nicht richtig, die 
lässt sich nur aus einer GCLOCK Einheit mit Takt versorgen.

Äh ja.
Also wenn die Ihre eigenen Controller schon nicht richtig mit Takt 
versorgen können und die Benutzung ein Blindflug ist, dann verzichte ich 
lieber auf START.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bob schrieb:
> Also wenn die Ihre eigenen Controller schon nicht richtig mit Takt
> versorgen können und die Benutzung ein Blindflug ist, dann verzichte ich
> lieber auf START.

Meine Vermutung: gerade der ganze Takt-Zirkus ist schlicht derart 
komplex bei diesen SAMD & Co. (weil er halt auch unheimlich flexibel 
ist), dass die Vereinfachungen a la START schwierig zu realisieren sind, 
ohne dass man am Ende doch noch in eine Fratzenfalle rennt.

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.