Hallo,
ich habe ein evaluation board gekauft und der Hersteller lieferte dazu
paar Beispiel Codes um mit dem Board bisschen spielen zu können.
Die Hardwarenahe C-Programmierung ist zwar neuland für mich aber ich bin
trotzdem der Meinung, dass es so nicht funktionieren kann (Es
funktioniert auch nicht).
Laut Hersteller Soll der Speaker an PC.0 angeschlossen werden. Ich sehe
aber nirgendswo im Code, dass der C Port konfiguriert wurde! Oder, dass
er die Anweisung bekommt, ein Signal auszugeben!
Ich wäre euch dankbar, wenn ihr mir da weiterhelft.
LG,
Georg
1 | //--------------------------------------------------------------------------
|
2 | // Titel : Beispiel "Analog-Digital-Wandler" für dem ATmega8
|
3 | //--------------------------------------------------------------------------
|
4 | // Funktion : Wandelt ein analoges Signal in ein digitales
|
5 | // Schaltung : Poti an PC.0, SPeaker an PB.0, AVCC, AGND, AVREF
|
6 | //--------------------------------------------------------------------------
|
7 |
|
8 | unsigned char timer_value;
|
9 | ISR (TIMER0_OVF_vect)
|
10 | {
|
11 | PORTB = ~ PORTB; // Flankenwechsel für Tonfrequenz
|
12 | TCNT0 = timer_value;
|
13 | }
|
14 |
|
15 | ISR(ADC_vect)
|
16 | {
|
17 | int adc_value;
|
18 | adc_value=ADC;
|
19 | timer_value=char(adc_value/4);
|
20 | sbi (ADCSRA,6); // restart ADC
|
21 | }
|
22 |
|
23 | void adcInit()
|
24 | {
|
25 | ADMUX=0;
|
26 | ADCSRA=0xDD; //0b11011101, ADC-Clock, ADC ON, INT ON
|
27 | }
|
28 |
|
29 | void timer0Init()
|
30 | {
|
31 | timer_value=0xFF;
|
32 | TCCR0=0x03; // 0b00000011, Vorteiler 64
|
33 | TIMSK=0x01; // 0b00000001, maskiere Timer-INT
|
34 | }
|
35 |
|
36 | void portsInit()
|
37 | {
|
38 | sbi(DDRB,0); //OUT Summer
|
39 | sbi(DDRB,1); //OUT LED
|
40 | }
|
41 |
|
42 | //----------------------------------------------------------------------
|
43 | main () // Hauptprogramm, startet bei Power ON und Reset
|
44 | {
|
45 | //Initialisierung
|
46 | portsInit(); // PortB als Ausgang initialisieren
|
47 | timer0Init(); // Timer Interrupt initialisieren
|
48 | adcInit();
|
49 | sei(); // enable interrupts
|
50 | do { } while(true); // mainloop
|
51 | }
|
52 | //----------------------------------------------------------------------
|