Forum: Compiler & IDEs mega8 programmieren aber wie?


von Christian S. (hunner)


Angehängte Dateien:

Lesenswert?

Hallo

ich möchte ein Testprogramm zum benutzen der ISR des timers0 vom atmega8 
schreiben.
Beim Aufrufen des ISR soll mit dem gezeigten Programm nur vom PinB2 der 
Zustand getoggled werden. Leider kann ich den Pin, sobald der timer0 
läuft nichtmehr ansprechen.
Anfangs dachte ich, es liegt an meinem Programm,aber auch das Verwenden 
des Codes dieser Seite 
[[http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#8-Bit_Timer.2FCounter]] 
brachte keinen Erfolg. Ich denke, die Hardware kann ich ausschliesen, da 
die LCD-Beleuchtung an PinB2 in der main leuchtet.
Ich habe gelesen, dass das Problem an WINAVR liegen kann, da ich einen 
Windoows7 64-bit Laptop verwende. Desshalb wollte ich nun die 
Atmel-Toolchain verwenden. Leider verstehe ich nicht, was und wie ich 
alles installieren/konfigurieren muss, damit mein AtmelStudio 4.18 Build 
684 mit einer Toolchain funktioniert. Nur installieren einer Toolchain 
reicht nicht. Das habe ich gemacht und bekomme beim Build eines Codes 
den Fehler im Anhang.

Der Code:
1
 
2
        #define LCD_Bel   PB2
3
4
/*****************
5
Header
6
******************/
7
8
  #include <avr/io.h>
9
  #include <stdlib.h> 
10
  #include <avr/interrupt.h>
11
    
12
13
/*****************
14
initialize timer, interrupt and variable
15
*****************/
16
void timer0_init()
17
{
18
  // Timer 0 konfigurieren
19
  TCCR0 |= (1<<CS00)|(1<<CS02); // Timer 0 mit Prescaler 1024
20
21
  TIMSK |= (1<<TOIE0);
22
23
  sei();   // hier wird das gemacht.
24
25
}
26
27
28
/*****************
29
Hauptprogramm
30
******************/
31
32
int main(void)
33
{
34
  DDRB = 0x04;    //PortB 2 Ausgang     
35
  timer0_init();    //Timer initialisieren
36
                  
37
  PORTB |= (1 << LCD_Bel);   //PortB2 high
38
39
  while(1)      //Endlosschleife
40
  {
41
  }
42
  return 0;      //wird nie erreicht
43
}
44
45
46
/*****************
47
Interrupt-Service-Rutine
48
*****************/
49
50
51
ISR (TIMER0_OVF_vect) 
52
{
53
  PORTD ^= (1<<LCD_Bel);    //toggle PortB 2
54
}

Grüße

Christian

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Christian S. schrieb:

> ISR (TIMER0_OVF_vect)
> {
>   PORTD ^= (1<<LCD_Bel);    //toggle PortB 2
> }


Was jetzt?
PORTB oder PORTD?

Wenn das dein Original-Programm ist (Copy&Paste), dann ist klar, dass 
das nicht funktionieren kann.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Christian S. schrieb:

> Atmel-Toolchain verwenden. Leider verstehe ich nicht, was und wie ich
> alles installieren/konfigurieren muss, damit mein AtmelStudio 4.18 Build
> 684 mit einer Toolchain funktioniert.


In dieser Version hiess das noch 'AVR-Studio'. Bitte benutz die jeweils 
korrekt Bezeichnung, sonst gibt das Missverständnisse.

> Nur installieren einer Toolchain
> reicht nicht.

Du hast noch keine Toolchain installiert. Das AVR-Studio hatte keinen 
C-Compiler im Setup mit dabei. Nur Assembler.


> Das habe ich gemacht und bekomme beim Build eines Codes
> den Fehler im Anhang.

Steht doch dort, was zu tun ist:
Du musst den C Compiler (namens WinAvr) extra installieren.

: Bearbeitet durch User
von Christian S. (hunner)


Lesenswert?

Hallo Karl Heinz

Danke für deine schnelle Antwort.

es sollte natürlich PORTB heißen. Habe den Code mit einem 
Entwicklungsboard getestet und da hängt an PORTD eine LED, welche im 
übrigen einwandfrei in der ISR blinkt.
Entschuldige, natürlich sollte es AVR-Studio heißen.
Ich dachte, daes nicht funktionierteund ich keinen Fehler im Code 
gefunden habe, wollte ich die Toolchain anstelle des anscheinend älteren 
WINAVRinstallieren. Wieso habe ich keine Toolchain installiert? Ich habe 
sie dort 
[[http://www.mikrocontroller.net/articles/Atmel_Studio#Direktlinks_Installer]] 
heruntergeladen. Brauche ich noch was?

von Karl H. (kbuchegg)


Lesenswert?

Christian S. schrieb:
> Hallo Karl Heinz
>
> Danke für deine schnelle Antwort.
>
> es sollte natürlich PORTB heißen. Habe den Code mit einem
> Entwicklungsboard getestet und da hängt an PORTD eine LED, welche im
> übrigen einwandfrei in der ISR blinkt.

Mag sein.
In der Realität wird das aber wahrscheinlich nicht funktionieren, denn 
am Port D ist der entsprechende Pin in diesem Programm nicht auf Ausgang 
geschaltet.

-> vermeide solche Dinge. Denn das führt hier im Forum immer zu 
Missverständnissen. Wir suchen dann Fehler, die nicht existieren.

Das heisst nicht, dass du deinen Code zum Posten modifizieren sollst. Du 
sollst IMMER den Code posten, der tatsächlich auf dem µC läuft. Denn nur 
so, können wir dann auch Fehler finden. Der Fehler hier ist recht 
offensichtlich. Auch wenn du sagst, das das so in Ordnung ist. Nein, ist 
es nicht. Es ist ein Fehler. Und dieser Fehler kann dazu führen, dass es 
auf deinem Entwicklungsboard so aussieht, als ob alles korrekt ist, auf 
deinem echten Board funktioniert es aber nicht. Denn auf einem STK-500 
hängt beispielsweise zwischen den Portpins und den LED eine 
Tranistsor-Treiber Stufe, die damit zufrieden ist, wenn man lediglich 
den Pullup Widerstand zu bzw. weg schaltet. Hängt aber in deinem echten 
Board dort keine Treiberstufe, sondern die LED direkt, dann reicht der 
das nicht.

Kurz und gut: Das gepostete Programm ist erst mal fehlerhaft. Auch wenn 
auf deinem Entwicklungsboard da die LED an Port D, Pin 2, tatsächlich 
blinkt.


> Ich dachte, daes nicht funktionierteund ich keinen Fehler im Code
> gefunden habe, wollte ich die Toolchain anstelle des anscheinend älteren
> WINAVRinstallieren. Wieso habe ich keine Toolchain installiert? Ich habe
> sie dort
> [[http://www.mikrocontroller.net/articles/Atmel_Studio#Direktlinks_Installer]]
> heruntergeladen. Brauche ich noch was?

Ja.
WinAvr.
Steht doch in der Dialog-Box drinnen. Und auch wo man sie kriegt. Im 
Zweifel danach googeln.

: Bearbeitet durch User
von Christian S. (hunner)


Lesenswert?

Für dieses Board habe ich natürlich den PortD als Ausgang geändert. Ich 
sagte ja, dass ich den Code aus einem anderen Beispiel eben für das 
Entwicklungsboard genomen und äbgeändert habe.
Nun habe ich aber auch das Problem gefunden und beseitigt. Das 
AVR_Studio 4.18 erkennt nur WINAVR. Erst die Erweiterung oder ab 4.19 
erkennt die toolchain.

Gruß

Christian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.