AT90USB1287 und Bascom- unverständliches Verhalten

Gast #791674
Lesenswert?

Hallo,

ich mach mal einen neuen Tread auf, denn mir dem Display hat das ja 
nichts mehr zu tun.

Ich habe mein Programm mit dem ich das DOG-M ansteuern will jetzt mal 
bis auf das wesentliche zusammengeschrumpft:

$regfile = "usb1287.dat"
$crystal = 16000000

Wdtcsr = &B00000000 'Watchdog abschalten ?
Config Pinf.1 = Output

Mar3:
Set Pinf.1
Goto Mar3
End

Wieso erzeugt das eine saubere Rechteckfolge an Pinf.1?

Mir fällt einfach nichts mehr ein, der Pin wird doch anderweitig nicht 
genutzt.
Hat vielleich jemand eine Idee?

Gruß Gerd
Gast #791824
Lesenswert?

Hallo Stefan,

gefunden habe ich es, leider begreife ich es auf Grund meiner 
bescheidenen Englischkenntnisse nicht.

Verstehe den Sinn auch nicht, ein Pin der eine Recheckfolge ausgibt, 
wenn er mehrmals gesetzt wird, was bringt das?

Habe jetzt den ganzen Port als Ausgang gesetzt und JTAG deaktiviert, 
aber alles unverändert.
Einen anderen Pin habe ich auch schon getestet, genau das Gleiche.

Gruß Gerd
Persönliche Seite #791840
Lesenswert?

Der Sinn... muss ich mir auch was ausdenken. Vielleicht wenn du ein 
Rechtecksignal für ein Blinken o.ä. machen willst?

Oder meinst du, warum man durch Schreiben in PIN PORT Umschalten kann?

Entweder ist es einfach ein Nebeneffekt der Hardwareentwicklung, der 
jetzt dokumentiert und nutzbar ist oder es ist bewusst so beim Design 
des AVR angelegt worden.

Ich müsste da auch erst nachschlagen, ob es auf einem anderen Weg 
möglich ist, mit nur einem ASM-Befehl ein Toggeln eines Outputpins zu 
bewirken. Soviel Ahnung habe ich von Assembler nicht, um das aus dem 
Stand zu entscheiden.

Definitiv ist diese Methode die schnellste Umschaltung, die man machen 
kann.

Zum Hintergrund: Ein Port hat drei Register - das Datenrichtugsregister 
(DDR), das zu lesbare /schreibbare Daten Register (PORT) und das lesbare 
Datenregister (PIN).

Bei den neueren AVRs ist jetzt der Spezialfall erklärt, was passiert, 
wenn man eine logische 1 in ein Bit des eigentlich nur lesbaren PIN 
Registers schreibt: Dann wird das entsprechende Bit des Datenregister 
PORT umgeschaltet (getoggelt).

Wenn du den Effekt nicht bewusst nutzen willst, ist dein Programm an und 
für sich an dieser Stelle "Käse"

Mar3:
Set Pinf.1
Goto Mar3

Besser wäre es so:

SET Portf.1  ' Portf.1 = 1
DO
LOOP
Gast #791858
Lesenswert?

Hallo Stefan,

darf ich dich Wohltäter nennen?
Ich weiß gar nicht, wie ich auf die Idee gekommen bin PINF.1 statt 
PORTF.1 zu benutzen.
Wahrscheinlich zu lange vor dem Monitor gesessen.

Ganz schön peinlich, den ganzen Tag damit verbracht.

Vielen Dank!

Gruß Gerd

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