- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 12

Thema: Atmega8 mit vorhandenem C-Code, Probleme beim compilieren und übertragen auf den Chip

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.05.2016
    Beiträge
    11
    Hallo, erstmal vielen Dank für die Antworten. Zum Punkt 3 habe ich das C-Programm auch als Text-Datei vorliegen. Vielleicht funktioniert das ja auch direkt mit anderen Compilern anstatt mit CodeVision wie z.B. mit WinAVR oder AVR Studio.

    Anbei der C-Code:

    #include <mega8.h>
    #include <delay.h>

    unsigned char Lauflicht1[] = {1,2,4,8,16,32};
    unsigned char Lauflicht2[] = {1,2,4,8,16,32,16,8,4,2};
    unsigned char Lauflicht3[] = {33,18,12};
    unsigned char Lauflicht4[] = {3,6,12,24,48,33};
    unsigned char Lauflicht5[] = {33,18,12,12,18,33};
    unsigned char Lauflicht6[] = {9,18,36};
    unsigned char Lauflicht7[] = {9,18,36,18,9};

    signed char modus = 0;
    int i = 0;

    #define ADC_VREF_TYPE 0xC0

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }

    // Timer 1 output compare A interrupt service routine
    interrupt [TIM1_COMPA] void timer1_compa_isr(void)
    {
    TCNT1 = 0;
    OCR1A = read_adc(0) * 8 + 300;
    switch(modus)
    {
    case 0: PORTD = 63;
    break;
    case 1:
    {
    PORTD = ~Lauflicht1[i];
    i++;
    if (i >= sizeof(Lauflicht1))
    i = 0;
    }
    break;
    case 2:
    {
    PORTD = ~Lauflicht2[i];
    i++;
    if (i >= sizeof(Lauflicht2))
    i = 0;
    }
    break;
    case 3:
    {
    PORTD = ~Lauflicht3[i];
    i++;
    if (i >= sizeof(Lauflicht3))
    i = 0;
    }
    break;
    case 4:
    {
    PORTD = ~Lauflicht4[i];
    i++;
    if (i >= sizeof(Lauflicht4))
    i = 0;
    }
    break;
    case 5:
    {
    PORTD = ~Lauflicht5[i];
    i++;
    if (i >= sizeof(Lauflicht5))
    i = 0;
    }
    break;
    case 6:
    {
    PORTD = ~Lauflicht6[i];
    i++;
    if (i >= sizeof(Lauflicht6))
    i = 0;
    }
    break;
    case 7:
    {
    PORTD = ~Lauflicht7[i];
    i++;
    if (i >= sizeof(Lauflicht7))
    i = 0;
    }
    break;
    }

    }

    // Declare your global variables here

    void main(void)
    {
    char check = 0;

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=P
    PORTB=0x01;
    DDRB=0x00;

    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=T State6=T State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
    PORTD=0x3F;
    DDRD=0x3F;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 7,813 kHz
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: On
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x05;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1A = 100;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x10;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC Clock frequency: 1000,000 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    if (PINB.0 == 0 )
    {
    delay_ms(50);
    if (PINB.0 == 0 && check == 0)
    {
    check = 1;
    i=0;
    modus++;
    if (modus > 7)
    modus = 0;
    }
    }
    else
    check = 0;

    };
    }

    VG Michael
    Geändert von Atmeg1970 (02.05.2016 um 14:49 Uhr)

Ähnliche Themen

  1. Probleme beim Compilieren
    Von ActiveRobo im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 30.07.2012, 14:17
  2. Probleme beim Compilieren
    Von Coop im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 20.11.2010, 00:47
  3. Probleme beim compilieren
    Von Ananas im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 2
    Letzter Beitrag: 15.09.2010, 16:49
  4. Gelöst: NIBObee Liniensensoren: Probleme beim Compilieren
    Von DerDudeESP im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 5
    Letzter Beitrag: 06.03.2010, 14:27
  5. WinFact Probleme beim compilieren
    Von Robo14 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 0
    Letzter Beitrag: 10.05.2006, 09:30

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests