søndag den 12. juni 2016

Switch case variable name and case variable equal

enum state{init,generatorData,labViewType,labviewData,setADC,getlength,getlimits,dosampling,recordReady,start,transmit,stop};
.
...
case stop:_delay_ms(100);break;  

as local variable in Main this is declared
 char stop=0;

gives this fault
Severity Code Description Project File Line
Error case label does not reduce to an integer constant
solution redeclare the char stop to f.ex. stop1

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++;
}

søndag den 7. februar 2016

F_CPU skal erklæres før include af util/delay.h!

Du får denne warning fordi

Denne erklæring giver dette:
 #include <util/delay.h>
#define F_CPU 16000000UL


Severity    Code    Description    Project    File    Line
Warning        "F_CPU" redefined    GccApplication1    C:\data\62734\afleveringer\forår2016\GccApplication1\GccApplication1\GccApplication1\main.c    10
Warning        #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]    GccApplication1    c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h    90

det rigtige er:
#define F_CPU 16000000UL
 #include <util/delay.h>

mandag den 4. januar 2016

stop betingelse i for loop forkert erklæret

for(int i=0; i=511;i++)
buf[i]=0;
giver warning
Warning 1 suggest parentheses around assignment used as truth value [-Wparentheses] C:\data\62734\megaprojects\test_buffer_uart\test_buffer_uart\test_buffer_uart.c 15 2 test_buffer_uart

Det rigtige kode er:

for(int i=0; i<512;i++)
buf[i]=0;