Forum: Compiler & IDEs PINC


von Felix S. (flix)


Lesenswert?

Hallo Leute,

ich habe folgendes Problem (ATMega8)
1
DDRC = 0x00;
2
int8_t foo = PINC;

beim debugen ist wenn ich im Simulator PINC auf 0x80 setze foo = 0x00

PINC verliert eben falls an der höchstwertigen Stelle das bit und setzt 
es von 1 auf 0

an was kann das liegen???

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Felix Schmidt wrote:

> an was kann das liegen???

Am ATmega8?

Der hat nämlich nur 7 Bits im Port C... :-o

von Felix S. (flix)


Lesenswert?

warum das den :-(

von Felix S. (flix)


Lesenswert?

Ich hab eine weitere Frage

wenn ich meinem ATMega8 auf PINC ein Signal von einem anderen 
Mikrocontroller zukommen lass, wie mach ich das, dass das Eingabe Signal 
nur einmal verarbeitet wird?

mfg flix

von Karl H. (kbuchegg)


Lesenswert?

Felix Schmidt wrote:
> Ich hab eine weitere Frage
>
> wenn ich meinem ATMega8 auf PINC ein Signal von einem anderen
> Mikrocontroller zukommen lass, wie mach ich das, dass das Eingabe Signal
> nur einmal verarbeitet wird?
>

Da gibt es mehrere Möglichkeiten.

* zb könnte es eine Rückmeldungsleitung geben.
  A signalisiert an B (am besagten PINC) dass etwas zu tun ist.
  B signalisiert daraufhin an A zurück: "Verstanden, wird gemacht."
  Daraufhin zieht A seine Aufforderung wieder zurück.

  Du und dein Freund vereinbaren, dass du irgendetwas tust, wenn
  er winkt. Dein Freund winkt, du winkst zurück und machst das
  Vereinbarte. Durch das Zurückwinken weiss dein Freund, dass
  du sein Winken gesehen hast und hört seinerseits auf zu winken

* Du könntest aber auch 2 Strippen von A nach B ziehen. Auf der
  einen Strippe signalisiert A was zu tun ist. Jedesmal wenn
  es etwas neues zu tun gibt wird auch die 2.te Strippe auf
  1 gezogen.
  B beobachtet nun Strippe 2. Standardmässig ist die auf 0.
  Geht die auf 1, so weiss B, dass auf Strippe 1 ein Kommando
  anliegt. B führt dieses Kommando aus und wartet dann darauf
  dass Strippe 2 wieder auf 0 zurückfällt. Erst danach ist
  B wieder scharf darauf bei einer 1 auf Strippe 2 wieder ein
  Kommando zu übernehmen.
  Das geht natürlich nur dann, wenn die Kommandos von A nicht
  schneller kommen, als sie von B ausgeführt werden können.
  A muss ja sichergehen können, dass B die 1 auf Strippe 2 auch
  sieht, bevor A Strippe 2 wieder auf 0 zieht.

von Monica L. (Gast)


Lesenswert?

Oder Interruptfähigen Pin benutzen und auf Flankenwechsel einstellen.

von No.1 (Gast)


Lesenswert?

Oder Wert speichern und ab und zu nachschauen ob der neue Wert mit dem 
alten Wert übereinstimmt. Wenn nicht dann Aktion ausführen. Wenn ja dann 
nix machen.

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.