Hallo µC-Freunde ! ich bin neu hier im Forum und konnte leider über die SuFu nichts finden.. Ich bin dabei einen Atmel ATmega32 in C zu programmieren. Ich möchte nun gerne einzelne Pins, die als Eingang gesetzt sind, abfragen. Außerdem möchte ich einzelne Pins, die natürlich als Ausgang geschaltet sind, setzen. Das Setzten bzw. Löschen der Pins soll aber unabhängig der anderen Pins an dem selben Port ermöglicht werden. z.B. Port-A ist als Eingang geschaltet. Nun läuft im µC eine Schleife ab, die nur unterbrochen werden soll, wenn Pin 5 an Port-A "high" ist. Ich hoffe ihr könnt mir dabei helfen. Liebe grüße Colin (p.s. das ist keine Hausaufgabe aus der Schule etc. :D)
Vielleicht einfach mal im Tutorial nachschauen. Ist sehr gut und da steht alles inklusive Code. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29
Colin v.H. schrieb: > Ich möchte nun gerne einzelne Pins, die als Eingang gesetzt sind, > abfragen. > > Außerdem möchte ich einzelne Pins, die natürlich als Ausgang geschaltet > sind, setzen. I.A. lassen sich Ports bei AVRs nur im "Ganzen" verarbeiten. Allerdings kann man mittels geeigneter Bitmanipulation (siehe https://www.mikrocontroller.net/articles/Bitmanipulation) problemlos einzelne Bits abfragen, setzen bzw. löschen. Colin v.H. schrieb: > Port-A ist als Eingang geschaltet. Nun läuft im µC eine Schleife ab, die > nur unterbrochen werden soll, wenn Pin 5 an Port-A "high" ist. Ich hab das Datenblatt des ATmega32 nicht zur Hand, aber wenn das wirklich so ablaufen soll, dann wirst du externe Interrupts verwenden müssen und erst einmal überprüfen müssen, ob PA5 diese Funktionalität überhaupt bietet.
Karol Babioch schrieb: > I.A. lassen sich Ports bei AVRs nur im "Ganzen" verarbeiten. Allerdings > kann man mittels geeigneter Bitmanipulation (siehe > https://www.mikrocontroller.net/articles/Bitmanipulation) problemlos > einzelne Bits abfragen, setzen bzw. löschen. ist das nicht ein wiederspruch in sich? der atmel kann sowohl einen Port als auch ein Bit eines Ports ändern.
Peter II schrieb: > ist das nicht ein wiederspruch in sich? Nö, wieso? Ich hatte ein "i.A." vorangestellt. Die meisten Befehle operieren auf 8 Bit, wobei es natürlich auch Befehle gibt, welche einzelne Bits direkt setzen/löschen bzw. abfragen können. Ansonsten muss man halt den ganzen Port einlesen, mittels Bitmanipulation zu seinem Wohlwollen ändern, und wieder zurück "schreiben". Das lässt sich dann halt nicht mehr in einem Takt erledigen.
Karol Babioch schrieb: > Nö, wieso? Ich hatte ein "i.A." vorangestellt. schön und das heist. "Im Auftrag" oder "Im Allgemeinen" macht aber beides keinen sinn. > Die meisten Befehle > operieren auf 8 Bit, wobei es natürlich auch Befehle gibt, welche > einzelne Bits direkt setzen/löschen bzw. abfragen können. befehle werden nicht nach menge eingeordnet. Man kann beides machen ein ganzen Port oder ein einzelnes Bit so wie man es braucht.
Peter II schrieb: > schön und das heist. "Im Auftrag" oder "Im Allgemeinen" macht aber > beides keinen sinn. Klar tut es das. "Im Allgemeinen" bedeutet laut Wikipedia u.A. ("für alle oder die überwiegende Mehrheit geltend"). Und ich denke wir sind uns einig darüber, dass die ein Großteil der Befehle aus dem AVR Instruktionssatz mit 8-Bit Operanden arbeitet bzw. diese innerhalb eines Taktzyklus verarbeiten kann. Unter anderem zählen die AVRs ja auch deswegen zu den 8 Bit Mikroprozessoren. Peter II schrieb: > befehle werden nicht nach menge eingeordnet. Wer verbietet mir denn Befehle nach Art der Operanden zu ordnen? Ich finde in diesem Fall kann es durchaus Sinn machen zwischen diesen beiden "Arten" von Befehlen zu unterscheiden.
Hi >Unter anderem zählen die AVRs ja auch >deswegen zu den 8 Bit Mikroprozessoren. Wegen der Takte pro Befehl bestimmt nicht. MfG Spess
spess53 schrieb: > Wegen der Takte pro Befehl bestimmt nicht. Doch. Typischerweise verarbeitet ein Mikroprozessor mit einer 8-Bit-Architektur eben genau 8 Bit pro Taktzyklus. Auch das steht so auf Wikipedia (siehe hier (https://de.wikipedia.org/wiki/8-Bit-Architektur)): > Vereinfacht dargestellt bedeutet 8 Bit, dass die Prozessoren durch ihr > Design so ausgelegt sind, dass 8 Bit (also 1 Byte) gleichzeitig bzw. > während eines Taktes verarbeitet werden können. Sind denn heute nur Besserwisser, welche gar keine sind, unterwegs?
Hi >Doch. Typischerweise verarbeitet ein Mikroprozessor mit einer >8-Bit-Architektur eben genau 8 Bit pro Taktzyklus. Auch das steht so auf >Wikipedia (siehe hier >(https://de.wikipedia.org/wiki/8-Bit-Architektur)): Den Schwachsinn glaubst du aber nicht ernsthaft? Denn die 8008- und 8080-Modelle, die 6502-Serie, die 6800er Serie, die Z80-Serie, MCS-51- und MCS-48-Serie ... erfüllen alle diese Bedingung nicht. MfG Spess
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.