Wie lange braucht ein Pin zum schalten von low->high

Gast #2911274
Lesenswert?
• ▲
▼
Hallo, ich habe gestern eine Schaltung in Betrieb genommen und mich 
etwas gewundert. Eingesetzt werden LV Schieberegister und AT90USB.

Steuere das Schieberegister über Pinwackeln an PORTC CLK und PORTB 
Datenleitung glaube ich, auf alle Fälle unterschiedliche.

Setze bzw. rücksetze nach Auswertung ob high oder low erfolgen muss 
direkt mit sbi/cbi die Datenleitung mittels inline assembler und direkt 
darauf die CLK.

Jetzt kommen allerdings beide Signale sehr gleichzeitig rauf und CLK ist 
steiler, so das die Datenleitung zum Erfassungspunkt immer nicht stimmt.

Mir ist eigentlich aus dem Datenblatt nur bekannt das irgendwo steht: 
Wenn man einen PIN schaltet dieser Wert evtl. erst 2 CLKs glaube ich war 
es richtig als Wert auf dem PORT eingelesen wird. Muss ich jetzt mit 
diesen 2 Taktzyklen als Verzögerung rechnen auch für das umschalten? 
Mehr Infos habe ich jetzt nicht auf den ersten Blick entdecken können.

Leider hatte ich gestern nicht die möglichkeit zu Debuggen, sonst hätte 
ich einmal geschaut wie das im Disassembling wirklich aussieht.
Gast #2911281
Lesenswert?
• ▲
▼
Da die AVRs recht potente Pintreiber (+-40mA max) haben, sollten die 
Flanke wie im Datenblatt angegeben einzuhalten sein. Daher hängt es eher 
von der Beschaltung ab oder von deinem Code, daher:
Schaltplan?
Quellcode?
Oszi-Bild mit beiden Signalen?
#2911285
Lesenswert?
• ▲
▼
Der Unwissende schrieb:
> Setze bzw. rücksetze nach Auswertung ob high oder low erfolgen muss
> direkt mit sbi/cbi die Datenleitung mittels inline assembler und direkt
> darauf die CLK.
>
> Jetzt kommen allerdings beide Signale sehr gleichzeitig rauf und CLK ist
> steiler, so das die Datenleitung zum Erfassungspunkt immer nicht stimmt.

Aufeinanderfolgenden sbi/sbi sollten auf den Pins nicht gleichzeitig 
aufkreuzen.
#2911294
Lesenswert?
• ▲
▼
Der Unwissende schrieb:
> mit sbi/cbi die Datenleitung mittels inline assembler

Was für ein komischer Compiler ist das denn?

Der AVR-GCC braucht kein inline Assembler dazu.
Man schreibt das entweder klassisch als |= bzw. &= oder als 
vordefiniertes Bitfeld-Macro (sbit.h).

Der Unwissende schrieb:
> Jetzt kommen allerdings beide Signale sehr gleichzeitig

Wie soll das gehen?
SBI/CBI können immer nur einen Pin ändern.
Ein Signal kann also erst 2 CPU-Zyklen später kommen, als das andere.


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.