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.
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?
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.
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
@ Der Unwissende (Gast) >Leider hatte ich gestern nicht die möglichkeit zu Debuggen, sonst hätte >ich einmal geschaut wie das im Disassembling wirklich aussieht. Poste Code als Anhang.
Der Unwissende schrieb: > Jetzt kommen allerdings beide Signale sehr gleichzeitig rauf Du meinst wahrscheinlich "kurz hintereinander" und hast dich nur in der Einheit vertan, oder?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.