Forum: Mikrocontroller und Digitale Elektronik Pinwechselerkennung beim Mega32


von Wolfram Q. (quehl)


Lesenswert?

hat die folgende Sequenz schon mal jemand ausprobiert zum Erkennen eines 
Wechsels des Pinlevels?

 Start:        ;
  sbis  PINC,2    ;        3 Takte
  rjmp  Start    ; warten bis High, 2 Takte

Taktfrequenz 8 Mhz. Es wird mit ca. 1,5 Mhz auf den Pin zugegriffen.


Ein ähnliches Programm hatte ich mal auf einem 486er mit 33 Mhz und ISA 
Bus programmiert. Den ISA Bus hatte ich mit 13 Mhz getaktet. Das 
Programm hatte noch einen Zähler, der nach 65535 Durchläufen stoppte. 
Nach dem Ablaufen des Programms gab es zunächst Störungen beim Zugriff 
auf die Festplatte und nach mehrmaligen Abläufen hatte der I/O Chip ein 
Loch.
Später hatte ich mal auf der Messe gesehen, daß der gleiche Chip auf 
einem Local Bus Bord drauf war, der mit 33 Mhz getaktet wird.
Seitdem bin ich etwas vorsichtiger geworden und greife nicht mit kurzen 
Schleifen auf I/O Pins zu. Darum hier die Frage nach den Erfahrungen.

mfg

von antworter (Gast)


Lesenswert?

>Nach dem Ablaufen des Programms gab es zunächst Störungen beim Zugriff
>auf die Festplatte und nach mehrmaligen Abläufen hatte der I/O Chip ein
>Loch.

Ähm.... hä ?

von Michael U. (Gast)


Lesenswert?

Hallo,

keine Ahnung, wie Du das geschafft hast...
Beim PC könnte ich mir höchstens vorstellen, daß Du 
Portrichtungen/Register verändert hast und nach Ende Deines Programms 
nicht für die alten Einstellungen gesorgt hast. Läuft ja normalerweise 
noch ein Betriebssystem auf einem PC.

Dem Mega ist das egal, da bist Du ja sowieso ganz allein für alles 
verantwortlich.

Je nach Umständen ist meist sinnvoller, einen Interruptpin für sowas zu 
benutzen, kann der µC was sinnvolles machen, während er wartet.

Gruß aus Berlin
Michael

von Peter D. (peda)


Lesenswert?

Wolfram Quehl wrote:
> hat die folgende Sequenz schon mal jemand ausprobiert zum Erkennen eines
> Wechsels des Pinlevels?
>
>  Start:        ;
>   sbis  PINC,2    ;        3 Takte
>   rjmp  Start    ; warten bis High, 2 Takte

Damit erkennst Du nicht den Wechsel, sondern den Zustand.
D.h. solange High ist, rauscht Du durch.
Ob überhaupt und wann Low war, ist egal.


Peter

von Bastler (Gast)


Lesenswert?

ein einfaches polling von einem Pin mach ich manchmal zwischen Init und 
Programm. Sozusagen als Startknopf, läuft aber ohne Probleme.
Mein Comtroller (Mega8 / Mega16) hat noch kein Loch!

...vielleicht hat sich deiner ja aus stupider Langeweile erschossen!

von quehl (Gast)


Lesenswert?

auf dem PC war ich auch ganz alleine dafür verantwortlich. DOS war zwar 
installiert, aber zugegriffen hatte ich damals direkt oder über BIOS.
Bis auf den 13 Mhz Takt auf dem ISA Bus hatte ich auch nichts verändert. 
Die Leitungen im Chip hatten sich durch die schnellen häufigen Zugriffe 
überhitzt.

Ja, für den Mega bin ich verantwortlich und wenn der kaputt geht, dann 
muß ich einen neuen bezahlen.

Interruptpin geht nicht, weil ich 5 Pins entsprechend abfragen muß. Zwar 
hintereinander, aber diese müssen ja angeschlossen werden.

mfg

von Bastler (Gast)


Lesenswert?

geht ISA-BUS nicht nur bis max. 8,33MHz?

von Wolfram Q. (quehl)


Lesenswert?

Ja, damals dachte ich nur in meiner Blödheit, wenn das einzustellen geht 
und das funktioniert, dann ist es doch gut. Die Festplatte war mit den 
13 Mhz deutlich schneller. Ich hatte ja nicht damit gerechnet, daß der 
Hersteller da was freischalten läßt, wo Schäden entstehen können.

@Peter

daß da nur der Pegel eingelesen wird, ist klar. Darum muß ich ja auch so 
oft abfragen.

mfg

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.