-         

Ergebnis 1 bis 7 von 7

Thema: welchen Compiler

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53

    welchen Compiler

    Anzeige

    Hallo an alle,

    welchen compiler, außer WinAvr, kannst du mir empfehlen...

    Danke

    Gruß michael

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Kostenlose kenne ich sonst keine.
    CodeVision für AVR, Keil für AVR

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Wo liegt denn das Problem beim AVR-GCC (also WinAVR)?

    der funktioniert doch eigentlich recht zuverlässig, und wenn man ihn ins AVR-Studio einbaut hat man sogar sowas wie eine IDE.
    So viele Treppen und so wenig Zeit!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Hallo,

    danke für eure Antworten...

    @Hubert.G
    Hast du schon mit einem von diesen Compiler Erfahrungen gesammelt und welchen könntest du weiter empfehlen?

    @Felix G
    ICh habe so einige Schwierigkeiten beim Compilieren, vielleicht liegt es auch an mir, aber wenn die Optimierung der Compilierung z.B.: auf Os, aber eigentlich funktioniert es nur mit O0, eingestellt ist funktioniert der Code nicht mehr richtig.

    aktuelles Probelm:
    Mittels einem Interrupt ein zyklisches Blinken "Heart Beat".

    main.c:
    Code:
    #include <avr/io.h>
    #include "common.h"
    #include "isr.h"
    
    int main(void) {
    
    	init_ISR();
    	
    	DDRD = 0x10;
    	PORTD = 0x10;	// HeartLed
    	DDRC = 0x1C;
    	PORTC = 0x10;
    	
    	while(1) {
    		if (Counter_X_20ms > 0x03) { 
    			if ( (PIND & 0x10) != 1 ) {
    			PORTD |= 0x10;
    			}
    		}
    		if (Counter_X_20ms < 0x02){
    			if ( (PIND & 0x10) != 1 ) {
    			 PORTD &= 0xEF; 
    			}
    		}
    	}
    	return 0;
    }
    isr.c:
    Code:
    #include <avr/interrupt.h>
    #include <inttypes.h>
    #include <stdio.h>
    #include "common.h"
    
    
    
    void init_ISR(void) {
    	sei();
    	TIMSK |= ( 0x01 << TOIE0 )	;	
    	TCCR0 |= ( 0x01 << CS02 | 0x00 << CS01 | 0x01 << CS00 ) ; 
    	TCNT0 = 0x64;	
    	Counter_X_20ms	= 0x00;
    } 
    
    
    
    ISR(TIMER0_OVF_vect) {
    	if ( Counter_X_20ms == 0x32 ) { // 1 sek
    		Counter_X_20ms = 0x00;
    	} else {
    		Counter_X_20ms++;
    	}
    	TCNT0 = 0x64; 			
    	TIFR |= ( 0x01 << TOV0 ) ; 	
    }
    Counter_X_20ms ist in der common.h als uint8_t definiert....

    Dieser Code funktioniert eiwandfrei mit der CompilerStufe O0, aber mit allen anderen nicht mehr?

    Vielleicht habe ich auch nur eine falsche Einstellung?

    Danke

    mfg Michael

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Counter_X_20ms ist in der common.h als uint8_t definiert....
    dann versuch mal volatile uint8_t zu nehmen und schon klappt es mit der Optimierung

    und
    Code:
    TIFR |= ( 0x01 << TOV0 ) ;
    kannst Du auch weglassen.
    1. ist es falsch
    2. das macht die Hardware für Dich

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Mein Junior hat während des Studiums mit CodeVision gearbeitet und war sehr zufrieden, ein junger Arbeitskollegen in der Abendschule mit Keil und war auch sehr zufrieden. Sie kosten halt etwas.
    Es werden dir nur diese Kompiler auch nichts helfen. Wenn bei mir der Kompiler etwas wegoptimiert, dann habe ich sicher irgendwo einen Fehler gemacht, eine Variable in einer ISR nicht als volatile gekennzeichnet oder so etwas. Probiere das mal mit Counter_X_20ms.
    Hubert

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Danke Danke Danke,

    genau das war es...
    Ich habe echt "alles" ( hab ich gedacht) ausprobiert...

    Na dann werde ich mir gleich meinen alten Code raus krammen, bei diesem hatte ich schon mal so ein ähnliches Problem, und werde es dort ausprobieren.

    Danke Michael

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •