Hallo alle zusammen.
Erst einmal: Das Programm handelt vom Debugger vom Atmel Studio 6. Ich
wusste nicht wohin mit dem Thread. Zu PC-Programmierung passt es ja
nicht und bei PC Hard- & Software denke ich eher, dass da eher alles
rund um PC geht. Da Atmel Studio zur Programmierung von Atmel
Microcontrollern dient, dachte ich, dass ich hier evtl. doch richtig
bin. Wenn nicht, dann bitte ich darum, mich zu korrigieren ^_^
Ich hätte eine Frage zum Debugger von Atmel Studio. Und zwar
programmiere ich schon seit einer geraumen Zeit in C++, unter anderem
Netzwerksoftware und Datenbanken, und dachte mir, dass etwas Übung im
Bereich Microcontroller-Programmierung bestimmt in Zukunft hilfreich
sein wird, da ich dieses Schuljahr mit dem Informatikstudium anfange.
Kurz: ich habe bereits Erfahrung in C/C++ Programmierung.
Ich habe Atmel Studio 6 unter Windows 8 installiert und ein C++ Projekt
erstellt. Danach hab ich eben den ATmega8 ausgewählt und wollte einfach
ein "Lauflicht" auf Port B ausgeben. dazu habe ich eine char-Variable i
mit 0 initialisiert und in einer For-Schleife laufen lassen. Das ganze
läuft natürlich in einer Endlosschleife. Vor der Endlosschleife habe ich
DDRB = 0xFF; gesetzt (bedeutet ja, alle 8 Pins von Port B auf Ausgang
schalten wenn ich mich nicht irre, oder? DDR = Data Direction Register?)
Dann habe ich über PORTB = pow(2, i); die Potenz mit Basis 2 und
Exponent i eingeschrieben (math.h natürlich eingebunden). So sieht dann
der Code etwa aus:
DDRB = 0xFF;
1 | char i = 0;
|
2 |
|
3 | while(1)
|
4 | {
|
5 | for(i = 0; i < 8; i++)
|
6 | {
|
7 | PORTB = pow(2,i);
|
8 | }
|
9 | }
|
Normalerweise müsste ich doch jetzt bei Step-by-Step durchlauf mithilfe
des Simulators im Debugger im IO View-Fenster bei PORTB folgendes
angezeigt bekommen:
00000001 (da 2^0 = 1)
00000010 (da 2^1 = 2)
00000100 (da 2^2 = 4)
00001000 (da 2^3 = 8)
00010000 (da 2^4 = 16)
Seltsamerweise bekomme ich jedoch folgendes Muster (welches ich nicht
nachfvollziehen kann).
00000001 (2^0 = 1 | okay)
00000010 (2^1 = 2 | ebenfalls okay)
00000011 (2^2 = 3 | Falsch)
00000111 (2^3 = 7 | Falsch)
00001111 (2^4 = 15 | Falsch)
Kann mir vll jemand erklähren woran das liegen könnte?
Mit freundlichen Grüßen,
Matthias