Not logged in. · Lost password · Register

All posts by Nudelsuppe (2)

topic: Willkürliche Fehlermeldung beim Flashen ("An error occured while executing command with ID 0x02.")  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
Nudelsuppe
Member since Jan 2015
2 posts
Subject: Willkürliche Fehlermeldung beim Flashen
Ich bekomme in letzter Zeit hin und wieder diese Meldung:

[Image: http://i58.tinypic.com/28bfc61.png]

Sie tritt direkt nach dem flashen auf und geht nach 1-2 erneuten Versuchen wieder weg.
Am Programmcode scheint es nicht zu liegen, denn der wird mir als fehlerfrei angezeigt.

Jemand ne Ahnung woran das liegen kann/was das bedeutet?
topic: Fragen zum Stoff (Art der Übergabe, Funktionsübergabe, Stack)  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
Nudelsuppe
Member since Jan 2015
2 posts
Subject: Fragen zum Stoff
Bei mir sind beim durchgehen vom Skript ein paar Fragen aufgekommen:


1.
Im Skript steht, dass Pointer (13-5) und Arrays (13-16) an Funktionen als call-by-reference übergeben werden. (oder hat dieser geschlängelte Pfeil nur eine "sieht so aus wie"/"ist in etwa" Bedeutung??)
C unterstützt doch aber gar kein call-by-reference, sondern übergibt ausnahmslos immer per call-by-value. Durch Verwendung von Pointern und Übergabe von Adressen mag das zwar wie call-by-reference aussehen, ist aber doch gar keine. Habe ich hier falsche Informationen, oder ist das im Skript falsch? Was sollte ich bei entsprechenden MC Fragen ankreuzen?

2.
Im Skript auf Seite(n) 16-5 wird im Stack ganz oben "return-addr" und "fp-retten" gezeigt. Was darf ich mir den hierunter vorstellen? Es sieht für mich so aus, als würde hier versucht werden, irgendwo hinzuspringen, falls die main() doch mal terminieren sollte. Und welcher framepointer soll denn hier gerettet werden?

3.
Zuletzt noch eine konkrete Code Frage. Im untenstehenden Programm möchte ich ohne speziellen Sinn, sondern einfach um es einmal gemacht zu haben, einer Funktion eine andere Funktion übergeben. Die übergebene Funktion soll aber nicht wie im Beispiel im Skript eine void/void-Funktion sein, sondern einen Rück- und Übergabewert haben. Lässt sich das auch noch eleganter lösen? Also ohne dass ich funcA() zwei Parameter übergeben muss?


#include <avr/interrupt.h>
#include <7seg.h>

void funcA(uint8_t (*j)(uint8_t ), uint8_t arg_von_j){
    sb_7seg_showNumber(j(arg_von_j));   
}

uint8_t funcB(uint8_t a){
    sb_7seg_showNumber(a);
    return (a<<1);   
}

void main(void){
sei();
funcA( funcB , 29);

while(1){}

}


Danke schonmal im vorraus :)
Close Smaller – Larger + Reply to this post:
Special characters:
Go to forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen