Hy Leute! Beschäftige mich seit kurzem mit dem Atmega8 und dessen Programmierung. Ich hab ein Problem(Compiler schreit!!!) Programmauschnitt: .. if(PINB&0x01) // möchte den Pin abfragen ob er High ist {.... Bin Anfänger, also zähle ich auf eure Hilfe!!! mfg
Wie wärs denn, wenn Du uns tiefere Einblicke in dein Programm gewährst? Oder ist das Top secret? Häng doch einfach mal Dein c-File an.
@AVR Anfänger: Was schreit denn der Compiler? @Patrick: Dein Code prüft nicht nur den einen Pin auf 1 sondern gleichzeitig alle anderen Pins dieses Ports auf 0, was wohl nicht das ist, was AVR Anfänger wollte.
Hast Du denn alle nötigen Header-Files included? #include <avr/io.h> @Reinhard Max Wäre es so besser: if (PINB0==0x0x){..
Patrick wrote: > Wäre es so besser: > > if (PINB0==0x0x){.. Nein, 0x0x wäre ein Syntax-Fehler. Um zu prüfen, ob ein bestimmtes Bit in einem Byte gesetzt ist, unabhängig davon, welche Werte die anderen Bits haben, kommst Du in C um den &-Operator nicht herum.
Patrick wrote: > oder direkt: > > if (PINB0){... Nein, PINB0 gibt lediglich die Bitposition des Pins innerhalb des entsprechenden Portbytes an. Korrekt wäre (untested) if (PINB & 1<<PINB0) { ... Weil das aber effektiv idenitsch ist, mit dem, was der OP ursprünglich dastehen hatte, habe ich erstmal nach der Fehlermeldung gefragt...
Reinhard Max wrote:
> dastehen hatte, habe ich erstmal nach der Fehlermeldung gefragt...
... mit gutem Recht.
Warten wir mal, wenn er den Code postet.
Und wenn die erste Zeile nicht
#include <avr/io.h>
lautet, dann haben wir den Fehler gefunden :-)
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.