Atmega 128 und ADC

Gast #2513567
Hi,

ich brauche etwas Hilfe. Könnte jemand sagen ob der Folgende Code so 
einigermaßen in Ordnung ist?
Ich bin noch Neuling in diesem Bereich.

Aufgabenstellung
:http://mit.eit.h-da.de/Labor/400_und_500_ADCInterruptTimer.pdf
Ab seite 7.
1
#include "ledsw.h"
2
#include "LabIncludes.h"
3
#include "adc.h"
4
#include <avr/interrupt.h>
5

6

7

8
int main(void)
9
{
10

11
  main_ag1();
12
  
13
  
14
}
15

16
int main_ag1(void) 
17
{  
18
  initPort_AInBOut(); //Ports initialisieren
19
  init_ADC(1);  //Free running
20
  start_ADC();
21
  while(1)     //Polling
22
    {
23
    wait_adc();
24
    showBar(read_adc(2)); //höchstwertige 8 bit ausgeben
25
    }
26

27
  return 1;
28

29
}
30

31
int main_ag2(void)
32
{
33
  initPort_AInBOut(); //Ports initialisieren
34
  init_ADC(0);  //Single Shot
35
  
36
    while(1)     //Polling
37
    {
38
    start_ADC();
39
    wait_adc();
40
    showBar(read_adc(3));  //10 Bit ausgeben
41
    }
42
  return 1;
43
}
44

45
int main_ag3(void)
46
{
47
  initPort_AInBOut(); //Ports initialisieren
48
  init_ADC(1); //Single Shot
49
  while(1)     //Polling
50
    {
51
    start_ADC();  //ADC starten
52
    wait_adc();    //Warten bis Wandlung abgeschlossen  
53
    showBarBlink(read_adc(3)); //LED 7 wird zusätzlich zum Blinken gebracht.
54
    }
55

56
  return 1;
57

58
}
59

60

61

62
ISR( ADC_vect)
63

64
{ //ISR = Interrupt Service Routine
65
         
66
    TIMSK = 0x00; //output compare interrupt ausschalten.
67
                       //Initial value ist überall 0.  
68
    putByteLED_B(read_adc(2)); //die höchstwertigen 8 Bit ausgeben.
69
}
70

71

72
int main_ag4(void)
73
{
74
  initPort_AInBOut(); //Ports initialisieren
75
  init_ADC(1); //Free Runnning
76
  initPort_AInBOut(); //Ports initialisieren
77
  start_ADC();  //ADC starten
78

79
  //erst das OCIE-Bit (Output Compare Interrupt Enable) im Register TIMSK und
80
    //das ADIF(ADc Interrupt Flag) eins ist wird der Interrupt ausgelöst
81
  // Interrupt bei Output Compare Match 
82
  TIMSK|= (1<<OCIE0);
83
  sei(); //Im Status-Register wird das Global Interrupt Enable Bit gesetzt, d.h. Interrupts werden zugelassen
84
  
85
    
86
  while(1); //muss auf jeden fall sein. da sonst das prog 
87
       //beendet wird und die ISR nicht ausgeführt wird
88
}
89
////////////////////////////////////////
90

91
ISR( ADC_vect1)
92

93
{ //ISR = Interrupt Service Routine
94
         
95
    TIMSK = 0x00; //output compare interrupt ausschalten.
96
                       //Initial value ist überall 0.  
97
    showBar(read_adc(3)); //10 Bit ausgeben als Balken anzeigen.
98
}
Gast
Schrott.

Es sind tote Funktionen im Programm. Unschön.

Es fehlen Funktionen im Programm. Programm nicht kontrollierbar.

Es fehlt eine ISR im Programm. Programm stürzt ab.

Es ist ein ISR Vektorname falsch. Programm stürzt ab.
Gast
die Funktionen wie showBar usw sind in einer anderen .c Datei definiert 
und sollen als Funktionstüchtig angenommen werden. Ist das Verständnis 
so möglich?
Gast
>die Funktionen wie showBar usw sind in einer anderen .c Datei definiert
>und sollen als Funktionstüchtig angenommen werden. Ist das Verständnis
>so möglich?

Bei nem Kollegen, von dem ich weiss oder zumindest glauben kann, das er 
wenigstens schon zwei, drei Jahre programmiert, würde ich davon 
ausgehen.

Hier, wo sich so allerhand unterschiedliche Vorkenntnisse und 
Erfahrungen tummeln und wenn ich auf den ersten Blick sehe, das die 
Initialisierung(en) fehl(t/en) und wenn ich sowas wie "main_ag1" lese, 
tue ich mir den Rest nicht an.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.