Hallo Leute, ich hab seit einiger Zeit ein Problem mit einem Atmega 128, wobei mir selbst die Suchfunktion und viele gelesene Beiträge leider nicht weiterhelfen konnte, aber sicherlich ist es ein einfacher Fehler aber irgendwie hab ich ein Brett vorm Kopf. Ich verwende AtmelStudio 6 und anschließend AVRFlash wo ich natürlich bereits das FUSEbit 103-MODE richtig gesetzt hab. Prinzipiell Funktioniert mein Programm auch bis auf folgendes: Ich möchte einfach einen Wert in einer Funktion (hier uint8_t test(void) und im header ganz unten deklariert) meiner main-Funktion übergeben und diese über die bereits einwandfrei funktionierende UART-Kommunikation ausgeben. Ich erhalte als Rückgabewert jedoch 226 statt 0. Warum? Ich hab ebenfalls bereits versucht die Optimierungseinstellungen beim Atmel Studio zu ändern, wobei sich dann der Rückgabewert ändert. Warum? Hab ich hier irgend ein problem mit dem Speicherbereich? Vielen lieben Dank. PS: konstruktive Kritik und Verbesserungsvorschläge bezüglich Programmierstil sind erwünscht :-)
Daniel Hochwarter schrieb: > Hab ich hier irgend ein problem mit dem Speicherbereich? Schwer zu sagen, denn du hast nicht alle Dateien eingepackt, sodass man das nicht mal vergleichsweise selbst compilieren kann. Aber du solltest auf jeden Fall schon mal einen Blick auf die Warnungen werfen, auch wenn sie wahrscheinlich mit dem Problem nichts zu tun haben:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
Hi. Vielen Dank für die schnelle Antwort. Echt super Forum hier. Ich habe jetzt den ganzen Code etwas vereinfacht und genau diesen Compiliert. Jetzt ist der Wert 104? Was übersehe ich? LG PS: das mit den Warnungen hab ich schon gesehen aber nicht verstanden, zumindest nicht warum F_CPU nicht automatisch gesetzt wird. Hast du eventuell dafür auch eine Erklärung? Kleiner Nachtrag: Wenn ich j vor der Übergabe nach uart_put_int auf einen Wert setze (und dann natürlich j übergebe) funktioniert alles richtig.
Daniel Hochwarter schrieb: > Was übersehe ich? Du schreibst:
1 | |
2 | |
Du meinst aber wahrscheinlich:
1 | |
2 | |
Zumindest sehe ich nirgends die Deklaration einer Variable namens test, nur die einer Funktion.
Felix Pflaum schrieb: > Daniel Hochwarter schrieb: >> Was übersehe ich? > > Du schreibst: >
1 | |
2 | |
> > Du meinst aber wahrscheinlich: >
1 | |
2 | |
> > Zumindest sehe ich nirgends die Deklaration einer Variable namens test, > nur die einer Funktion. Hi. ja natürlich, der fehler hat sich dann beim umschreiben eingeschlichen. Wenn ich meine funktionen. die ich ursprünglich hatte direkt ins main schreibe gehen diese, jedoch als Funktion mit Rückgabewert nicht. Witzigerweise ging die ADC Funktion die ich ebenfalls verwendete einwandfrei? Egentlich wollte ich für Testzwecke nur j übergeben, da j so wie es da steh wenig sinn macht :-) Danke Lg Daniel
Gast
#3151948
Dieser Fehler würde aber das Verhaltungen und die Warnungen "makes pointer from integer" erklären. test ist ein Pointer auf die Funktion (der durchaus 104 oder so ergeben kann), test() der Rückgabewert.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.