tirsdag den 12. april 2016

control reaches end of non-void function

Severity    Code    Description    Project    File    Line
Warning        control reaches end of non-void function [-Wreturn-type]    TheTester    C:\data\62734\afleveringer\forår2016\TheTester\TheTester\TheTester\uart.c    57
skyldes at funktionen ikke returnerer noget

unsigned char get_char_string(unsigned char *ptr)
{
    unsigned char cx=0;
    static unsigned char i=0;  //tilføjet/rettet af Ole S
    while ((cx=char8_g())!=0x2E)
    {
       
        *ptr=cx;
        if(cx!='\n')
        {
            ptr++;
             i++;   //tilføjet af Ole S
        }
       
// return  mangler af en char

                  } 
return i; //så vil der retuernes antal bytes læst ind i ptr med dette tilføjet fjerens fejlen!
}

søndag den 10. april 2016

array der deles som global variable skal være have static foran som modifier

static char array[størrelse]={0};   //ikke volatile

bit skal sættes med |= eller sletter man alle andre!!!!!!!!

UCSR0A = (1<<U2X0); //s223 databog duplex
UCSR0B |=(1<<RXEN0) | (1<<TXEN0); //enabled uart begge veje   - dette er ok
EICRA = 0x08;//enabler interrupt på falling edge    --dette hører ikke til i en uART! og der skal en |=
UCSR0B = (1<<RXCIE0);  //her sletter man så det man enablede ovenfor fordi man ikke bruger |=
UCSR0A = (1<<RXC0);


Så rigtig kode:

UCSR0B |= (1<<RXCIE0);     //der SKAKL BRUGES |= når man sætter bit i control registre af flere omgange!
UCSR0A |= (1<<RXC0);

Implicit declaration of function fejl

Severity Code Description Project File Line
Warning implicit declaration of function 'put_char' [-Wimplicit-function-declaration] UARTdemo F:\62734\afleveringer\forår2016\gr1Jeppe_Mathias_MathiasB\UART_Gruppe1\UART_Gruppe1\UARTdemo\uart.c 29

Dette skyldes at prototypen ikke er defineret og implementeret før man kalder den

ex.
//funktion som skriver en streng ved at kalle put_char() et par gange.
void put_str(char *str){
while(*str){
put_char(*str);    //denne funktion skal defineres før  dvs. omvendt rækkefølge
str++;
}
//skriver en enkelt char til UART'en
void put_char(char data){
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = data;
}

så kode rækkefølge skal være

/skriver en enkelt char til UART'en
void put_char(char data){
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = data;
}
void put_str(char *str){
while(*str){
put_char(*str); 
str++;
}