Hi,
Hi Julian!
das erste printf liefert ein anderes Ergebnis als das zweite.
Das verstehe ich nicht. Irgendein Mysterium muss daran schuld sein.
Was liefert sizeof(PORTB)?
1
Kann es sein, dass PORTB kein Makro, sondern eine Variable ist? Nach schnellem Überfliegen deiner Projektseite ist mir aufgefallen, dass du PORTB = 0xff; initialisierst. Vielleicht liegt da das Problem.
Ich bilde mir fest ein, PORTB wäre ein 8-bit Register und 0x37 verweist auf eine Position im Speicher. In meinem momentan verwendeten Programm initialisiere ich PORTB nicht mit 0xff (das war ein Beispiel, das alle 8 Pins an Port B als Ausgang schaltet), sondern setze nur das Bit für meine Status-LED auf 1.
Mittlerweile habe ich das Problem insofern umgangen, dass ich eine Funktion habe, der die Portnummer übergeben wird, die dann eine weitere Funktion mit den Registern als Parameter aufruft. Ist halt insofern sehr unpraktisch, dass sobald ich mehr Funktionen benötige, die mit den Pins arbeiten, ich den Zuordnungs-Teil kopieren müsste. Jetzt ruft man also Funktion b auf, diese ordnet der Nummer die Variablen zu und ruft Funktion a mit den Variablen als Parameter auf. Mein vorheriger, sinnvollerer Ansatz war exakt andersrum, nämlich das Funktion a die Variablen auf Anfrage zurückgibt. Trotzdem vielen Dank für deine liebe Hilfe und deine Geduld mit mir, meine C-Kenntnisse halten sich nämlich in Grenzen. Ich programmiere zwar relativ viel C, aber meistens einfachere Sachen, und ich habe das ganze letzte Jahr diese umständlichen Register übergeben. Jetzt schreibe ich grade eine Bibliothek, die das Hauptprogramm übersichtlicher machen soll. Sie kann jetzt auch schon Ausgänge setzen, Eingänge lesen, analoge Eingänge lesen, einen Neigungssensor einlesen, Servos ansteuern und über die serielle Schnittstelle mit dem Computer reden (sehr praktisch zum Debuggen) :)
Die von dir gelesene Seite habe ich halt geschrieben, um das bisschen Wissen das ich habe anderen Anfängern mitzuteilen, damit diese leichter einsteigen können. Gerade den Anfang fand ich sehr schwierig, da selbst solche primitiven Informationen sehr verstreut sind, anständige Bücher zum Thema gibts kaum. Und so schwer ist es nicht - meinen Mikrocontroller programmiere ich mit sehr grundlegendem C. Das einzig stressige ist, sich für die Hardware-Funktionen im Datenblatt die Bedeutung der Register rauszusuchen.
Schöne Grüße
Julian