Not logged in. · Lost password · Register

All posts by TW (9)

topic: Steigende und fallende flanken an ein und der selben Quelle unterscheiden  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
könnte man auch einfach bei jedem flankenwechsel einen interrupt auslösen, welcher dann das entsprechende bit invertiert? Denn auf eine fallende Flanke muss ja zwangsläufig eine steigende folgen? oder ist diese annahme falsch?
topic: MC Fragen  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4726
okay danke, dann ist klar.

Welche Aussage zu Zeigern ist richtig?
❏ Die Speicherstelle, auf die ein Zeiger verweist, kann niemals selbst
einen Zeiger enthalten.
❏ Beim Rechnen mit Zeigern muss immer der Typ des Zeigers beachtet werden.
❏ Ein Zeiger kann zur Manipulation von schreibgeschützten Datenbereichen verwendet
werden.
❏ Zeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei
anderen Zeigertypen zusätzlich die Größe gespeichert werden muss.

und wie siehts hier aus? also 1 und 4 würde ich ausschließen, 2 denke ich ist auch falsch da sich das rechnen ja auf adressen bezieht
aber antwort 3 muss eigt falsch sein, da hier

Welche Aussage zu Zeigern ist richtig?
❏ Die Übergabesemantik für Zeiger als Funktionsparameter ist callby-
value.
❏ Die Übergabesemantik für Zeiger als Funktionsparameter ist call-by-reference.
❏ Ein Zeiger kann zur Manipulation von schreibgeschützten Datenbereichen verwendet
werden.
❏ Zeiger vom Typ void* sind am besten für Zeigerarithmetik geeignet, da Sie
kompatibel zu jedem Zeigertyp sind.

doch schon antwort 1 richtig ist oder nicht? :P
topic: MC Fragen  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4707
Welche der folgenden Aussagen bzgl. der Interruptsteuerung trifft zu?
❏ Pegel-gesteuerte Interrupts werden beim Wechsel des Pegels ausgelöst,
daher der Name.
❏ Interrupts sind eine Besonderheit von AVR-Mikroprozessoren. Auf anderen
Architekturen kommen POSIX-Signale zum Einsatz.
❏ Pegelgesteuerte Interrupts müssen durch Polling des Pegels abgefragt werden.
❏ Wurde gerade ein Flanken-gesteuerter Interrupt ausgelöst, so muss erst ein
Pegelwechsel der Interruptleitung stattfinden, damit erneut ein Interrupt ausgelöst
werden kann.

also ich weiß zwar nicht was POSIX-Siganle sind, aber ich denk nicht dass diese Antwort passt. 1 und 3 denke ich sind auch falsch. Und eigt denke ich auch, dass 4 falsch ist, weil flankengesteurt kan nja auch auf beide flanken reagieren oder?
Aber eine muss ja richtig sein :P
topic: Programmieraufgabe  August 2011  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4719
ja das mit dem wert hatte ich mir dann schon weggedacht :P und in countdown vergesse ich wieder da auschalten, wenn ich das richtig sehe
habe jetzt auch noch eingefügt, dass am ende von countdown auch wenn abgebrochen wurde alle aus sind, das fehlte denke ich noch (auch wenns in der aufgabe soweit ich das verstanden hab nicht verlangt wird)

  1. /* Countdown-Phase */
  2.  
  3.         event=0;
  4.         for(uint8_t i=wert; i>0; i--){
  5.             wait();
  6.             PORTB |= (1<<i);
  7.             if(event){
  8.                 i=0;
  9.             }
  10.         }
  11.         PORTB = 0xff;

das müsste jetzt denk ich funktionieren?
topic: Programmieraufgabe  August 2011  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4717
In der countdown-phase muss es l++ anstatt i++ heißen, da hatte ich mich wohl vertippt.
Aber inwiefern gibt es probleme mit einer led? und warum stimmt die wartezeit nicht?
topic: Programmieraufgabe  August 2011  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4712
also doch vorher den wert in eine variable einlesen und diesen wert anstatt der funktion in der if-abfrage verwenden
hatte nicht an die muster und flimmern gedacht und dachte die variable wäre dann sinnlos

  1. wert = poti_read()/128;
  2. for(uint8_t i=0; i<8; i++){
  3.     if(i<wert){
  4.         PORTB &= ~(1<<i);
  5.     }else{
  6.         PORTB |= (1<<i);
  7.     }
  8. }

das müsste die oben angesprochenen effekte vermeiden oder?
This post was edited on 2012-07-25, 00:16 by TW.
topic: Programmieraufgabe  August 2011  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4710
oh da würden denke ich gar keine leds mehr ausgehen, da ich immer nur die die nötige anzahl anmache, die anderen aber nicht mehr aus
  1. for(uint8_t i=0; i<8; i++){
  2.     if( i<(poti_read()/128)){      //die 256 im ursprünglichen Code war auch falsch
  3.         PORTB &= ~(1<<i);
  4.     }else{
  5.         PORTB |= (1<<i);
  6.     }
  7. }
so müsste dieses problem dann behoben sein oder?
This post was edited 3 times, last on 2012-07-24, 20:55 by TW.
topic: Programmieraufgabe  August 2011  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4703
naja in der konfigphase ruf ich jedes mal für die for-schleife den aktuellen wert ab und lass ihn dann anzeigen, sobald dann gedrückt wird schreib ich den aktuellen stand in die variable wert und verwende den dann weiter. so ist es zumindest gedacht^^
topic: Programmieraufgabe  August 2011  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
TW
Member since Jul 2012
9 posts
In reply to post ID 4689
Hab die gleiche Aufgabe bearbeitet, würde auch gerne wissen was alles falsch ist :P

Klausur „Grundlagen der systemnahen Programmierung in C“ (GSPiC) August 2011

  1. /* Funktionsdeklarationen, globale Variablen, etc. */
  2.  
  3. static volatile uint8_t event =0;
  4. void wait(void);
  5. void init(void);
  6.  
  7.  
  8. /* Unterbrechungsbehandlungsfunktion */
  9.  
  10. ISR(INT0_vect){
  11.     event=1;
  12. }
  13.  
  14.  
  15. /* Funktion main */
  16.  
  17. void main(void){
  18.  
  19.     sei();
  20.  
  21.  
  22. /* Initialisierung und lokale Variablen */
  23.  
  24.     uint16_t wert;
  25.     init();
  26.  
  27.  
  28. /* Hauptschleife */
  29.  
  30.     while(1){
  31.  
  32.  
  33. /* Konfigurationsphase */
  34.  
  35.         event=0;
  36.         while(!event){
  37.             for(uint8_t i=0; i<(poti_read()/256); i++){
  38.                 PORTB &= ~(1<<i);
  39.             }
  40.         }
  41.  
  42.  
  43. /* Countdown-Phase */
  44.  
  45.         event=0;
  46.         wert=poti_read();
  47.         for(uint8_t i=wert; i>0; i--){
  48.             wait();
  49.             for(uint8_t l= 0; l<i; i++){
  50.                 PORTB &= ~(1<<l);
  51.             }
  52.             if(event){
  53.                 i=0;
  54.             }
  55.         }
  56.  
  57.  
  58. /* LED-Alarm-Sequenz */
  59.  
  60.         if(event){
  61.             PORTB = 0xaa;
  62.             wait();
  63.             PORTB = 0x55;
  64.             wait();
  65.         }
  66.  
  67.  
  68. /* Schlaf-Phase */
  69.  
  70.         cli();
  71.         sleep.enable();
  72.         while(!event){
  73.             sei();
  74.             sleep.cpu();
  75.             cli();
  76.         }
  77.         sei();
  78.         sleep.disable();
  79.  
  80.  
  81.     }
  82. }
  83. /* Ende Funktion main */
  84.  
  85. /* Initialisierungsfunktion */
  86.  
  87. static void init(void){
  88.     DDRB |= 0xff;
  89.     PORTB |= 0xff;
  90.     DDRD &= ~(1<<2);
  91.     PORTD |= (1<<2);
  92.     GICR |= (1<<INT0);
  93.     MCUCR |= (1<<ISC01);
  94.     MCUCR &= ~(1<<ISC00);
  95. }
  96.  
  97.  
  98. /* Wartefunktion */
  99.  
  100. static void wait(void){
  101.     for(volatile uint16_t i=0; i<60000, i++);
  102. }
This post was edited on 2012-07-24, 20:52 by TW.
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