- Labornetzteil AliExpress         
Ergebnis 11 bis 20 von 25

Thema: Einstieg in C (WinAVR)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    ja ich möchte mit einem ATXMega32A4 arbeiten, ich hab wohl vergessen, das zu erwähnen, tut mir leid!

    Allerdings musst Du dann mit Pointern arbeiten.
    Wieso so "abwertend"? Sind Pointer was schlechtes oder interpretiere ich den Satz einfach nur falsch?

    Code:
    union overlay
    {
       uint8_t byte1;
       uint8_t byte2;
       int16_t integer1;
    };
    Könnte ich mit dieser Union auf einen Integer und dessen zwei zugrundeliegende Bytes zugreifen?

    Also ich muss schon sagen, geschenkt wird einem bei C wohl garnichts. Nichtmal die Delay-Funktion funktioniert!?
    Ich möchte in einem Abstand von ca. 1s einen Text über die serielle ausgeben, aber es wird nichts mehr gesendet. Ist das ein Bug?
    Ich hab <avr/delay.h> eingebunden und auch den Hinweis mit max. delayZeit = 262.14ms / F_CPU (in MHz) hab ich gesehen....

    Code:
    #include <avr/io.h>
    #include <avr/delay.h>
    
    #define F_CPU 32000000UL
    
    
    int main(void)
    {
        
        Clock_init();
        uart_init(&USARTC1,115200);
        PORTC.DIRSET = 0x80;
        
        while(1)
        {
            send_string(&USARTC1, "Hallo Welt");
            delay_ms(1);
        }
    }
    
    void Clock_init(void)
    {
        OSC.CTRL |= OSC_RC32MEN_bm;
        while(!(OSC.STATUS & OSC_RC32MRDY_bm));
        CCP = CCP_IOREG_gc;
        CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
    }
    
    void uart_init(USART_t *uart, uint32_t baud)
    {
        uart->BAUDCTRLA = (F_CPU/(16*baud))-1;
        uart->BAUDCTRLB = ((F_CPU/(16*baud))-1)>>8;
        uart->CTRLB = USART_RXEN_bm | USART_TXEN_bm;
        uart->CTRLC = USART_CHSIZE_8BIT_gc;
    }
    
    void send_string(USART_t *uart, char str[])
    {
        uint8_t i = 0;
        
        while (i<strlen(str))
        {
            while (!( uart->STATUS & USART_DREIF_bm));
            uart->DATA = str[i];
            i++;
        }
        while (!( uart->STATUS & USART_DREIF_bm));
        uart->DATA = 0x0d;
        while (!( uart->STATUS & USART_DREIF_bm));
        uart->DATA = 0x0a;
    }
    
    void delay_ms(uint64_t ms)
    {
        uint64_t i = 0;
        
        while (i < ms)
        {
            i++;
            _delay_ms(1);
        }
    }
    Gruß
    Chris
    Geändert von Che Guevara (04.02.2013 um 14:04 Uhr)

Ähnliche Themen

  1. Fehlermeldung WinAVR
    Von hvltt15 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 10.04.2008, 20:31
  2. MFile [WinAVR]
    Von siroks im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 17.01.2008, 21:22
  3. WinAVR
    Von Chattychan im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 12.09.2006, 13:41
  4. WinAvr
    Von LC-HC im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 30.08.2005, 14:10
  5. WinAVR Tutorial
    Von Kjion im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 12.08.2004, 10:36

Berechtigungen

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

LiFePO4 Speicher Test