physikalischen Zustand der Ausgänge lesen

Gast #808629
Lesenswert?

Brauchste garnich warten. Les doch einfach nach, wie das Timing des AVR 
ist.

Wenn du z.B. "sbi" machst, dauert diese Instruktion genau einen 
Prozessortakt. Und dann ist der Pin auch definitiv gesetzt...es sei 
denn, du hängst da riesige Kapazitäten dran...

Nochwas: PORTx und PINx-Register sind unabhängig. Wenn du einen Pin aus 
Ausgang einstellst (DDRx = 1), dann den Pin auf "High" ziehst (PORTx = 
1), und diesen Pin dann von außen auf "Low" zwingst (z.B. Kurzschluss 
nach Masse), dann ist PINx auch 0. Evtl. hastu das ja gemeint.
Gast #808632
Lesenswert?

Bruno wrote:
> Du mußt den Pin als Einganf setzen (DDRx) und dann zb in einer
> While-Schleife den Port bzw Pin abfragen. Wenn die Bedingung erfüllt
> ist, springst du aus der Schleife.

Er will doch einen Pin setzen, also muss er wohl als Ausgang 
konfiguriert werden.

Ab wie Gabriel und ich schon sagten, das is Käse, weils ein genau 
definiertes Timing gibt.
Gast #808634
Lesenswert?

ich möchte ein Pin kurz high low togglen. vom 8051 kenn ich noch das 
problem, das wenn man das port schreibt und sofort "weiterrennt" im 
Programm, dass man schon zwei zeilen weiter ist im Code, der Pin aber 
noch gar nicht tatsächlich highpedel hat.
also

PORTC = 0x01;
PORTC = 0x00;

würde nicht wirkich was bewirken, weil bei der zweiten komandozeile der 
PIn noch gar nicht auf High ist. Ist das beim Atmel auch so oder würde 
das so funktionieren nund eine Impuls am Ausgang erzeugen?

Alex
Gast #808735
Lesenswert?

Wenn der Puls nur um wenige Taktzyklen gedehnt werden soll, sind NOPs
sicher die beste Lösung. Die möglich Zeitauflösung ist hier 1 Takt-
zyklus, der Speicherplatzbedarf soviele Worte, wie NOPs eingefügt
werden.

Wenn's mehr sein soll, kannst du auch _delay_us aus der AVR-Libc
verwenden. Damit lassen sich Verzögerungen ab 3 Taktzyklen
realisieren. Die Zeitauflösung beträgt (bei Verzögerungen von bis zu
768 Zyklen) 3 Taktzyklen, der Speicherplatzbedarf unahbhängig von der
Verzägerungszeit 3 Worte.

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