wenn ich den code von nem atmega8515 auf einen atmega8 porte und der atmega8 ja nur ports von Px0 bis Px5, der atmega8515 aber von Px0 bis Px7, kann man dann die bitmaske die man senden möchte aufsplitten? Zum Beispiel: 11010101 11010 auf PortC 101 auf PortD oder wird das niemals synchron sein? Oder ist meine idee völlig verblödet? danke für eure hilfe.
So etwas mache ich tagtäglich, man kann sein Layout teilweise sehr vereinfachen, wenn man die Pins hinterher per Softwar tauscht. Nachteil: Wie Du schon bemerkt hast, kann es Probleme mit der Geschwindigkeit geben. Der Controller braucht schon etwas Zeit. Wenn man die Daten in zwei Registern vorhält, könnte man diesen Zeitversatz auf einen Befehl reduzieren. z.B.: In temp sind die auszugebenden Daten: mov temp2,temp andi temp2,0x1F rol temp2 rol temp2 rol temp2 mov temp3,temp andi temp3,0x07 out PORTC,temp2 out PORTD,temp3 Alternativ (falls die anderen Bits von PORTD nicht verändert werden dürfen): in temp,PORTD andi temp,0x1F or temp,temp2 out PORTD,temp (Hoffentlich habe ich jetzt keinen AVR-Assembler mit MCS-51 gemischt...)
>>Alternativ (falls die anderen Bits von PORTD nicht verändert werden >>dürfen): >>in temp,PORTD >>andi temp,0x1F.... in temp, PIND (PinD, nicht PORTD!)
Wieso PIND? Er will doch keine äußeren Zustände einlesen, sondern nur die unbenutzten Bits des Ausgabeports einlesen, damit sie bei erneuter Ausgabe nicht verändert werden. In diesem Falle ist PORTD schon richtig. Für normale Eingabe ist natürlich PIND richtig. ...
> mov temp2,temp > andi temp2,0x1F > rol temp2 > rol temp2 > rol temp2 > mov temp3,temp > andi temp3,0x07 Warum rotierst du statt zu shiften? Da könntest du dir ein vorher evtl. gesetztes Carry einfangen.
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.