Hy (Ich bin Anfänger) Es würde mich interessieren ob man die I/O-Ports vom ATmega wärend des Betriebs anders definieren kann. .. also wenn ich die 8 Pins vom Port D als Eingänge brauch, wenn ich einen Pin (z.B. PC1 vom Port C) auf GND lege und wenn ich PC1 auf VDD lege sind es Ausgänge. - > geht sowas ? (Ich denke das geht, kann es aber nicht testen da ich bei meinen ersten LED-Blink-Test bei meinem Test-Atmega8 den Reset-Pin als Ausgang definiert habe und jetzt nicht mehr über SPI programmieren kann :-( )
mit was willst du programmieren? (welche sprache) Erst mal ne antwort: es geht.
Du kannst die IO-Ports im Programm umschalten, tatsächlich musst du dies sogar :) Kurz: Die Funktion der Ports wird ohnehin zu Laufzeit eingestellt und nicht etwa durch den Programmer oder dergleichen. Die Einstellung der Funktion der Ports ist nichts anderes als der Zugriff auf spezielle Register des µC. Das kann prinzipiell überall im Programmablauf gemacht werden. In deinem Fall muss also nur der Zustand eines Einganges, z. B. in der Hauptschleife geprüft werden und abhängig davon wird der Zustand der anderen Ports gesetzt. Wichtig ist natürlich die externe Beschaltung bei solchen Spielereien, da es sonst beim Umschalten der falschen Pins zu Kurzschlüssen kommen kann... Das Verfahren des Umschaltens ist im Übrigen nicht total unüblich, so kann man beispielsweise LEDs und Taster an den selben Pins per Eingang und Ausgang betreiben.
Das ist wirklich cool, das heißt dass man damit ne menge machen kann. (Ich programmiere in AVR-Studio, benutze das USBisp von Matwei.de ) (meine testschaltung: PortD als LED-Reihe (binärzähler) PortC als Tastereingang PortB als LED-Ausgang (Zustandsanzeige ob Taster an PortC gedrückt ) ) Aber jetzt noch ne Frage: Bei meiner testschaltung und auch im AVR-Studio ist mir aufgefallen dass die Signale invertiert sind wenn ich sie in der Schleife (for(;;)) setze, wenn ich sie im "Event-Handler" (der ausgelöst wirt wenn der Zähler überläuft) setze sind sie richtig gesetzt. Gibt es da eine Erklärung ? oder Soll ich das Programm mal Posten ?
> Gibt es da eine Erklärung ? Vermutlich. > oder > Soll ich das Programm mal Posten ? Ja. PS: Du plenkst!
Könntest einen Port nur für Ausgangssignale nehmen und diesen per 573er Latches vervielfachen und mit einem anderen das ganze als Eingangsvervielfacher benutzen, dann müsstest du nicht zw. I und O umschalten. Habe damit eine Porterweiterung gebaut damit ich alle Adressleitungen einen externen EEPROMs versorgen kann. Ich habe dann noch 10kOhm-Widerstandsnetzwerke als Pulldown an die Eingänge der Latches gelegt. Kannst mal nach 28c64b oder 573 suchen dann findest du meine Schaltung
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.