Hallo iedereen,
Ik ben pas begonnen met avr studio 5 en ik heb een probleem.
Ik kan geen waarde lezen van men servo.c naar mijn hoofdprogramma.c
De bedoeling is dat ik een waarde ingeef (tss 240 (min) en 1100(max)) om de positie van de servomotor in te stellen. De bedoeling is om later ook met dmx te werken maar daarvoor moet dit eerst werken.
Alvast bedankt
code:hoofdprogramma.c
#include <avr/io.h>
#include "servo.h"
void main (void)
{
int i;
DDRB = 255;
while(1)
{
PORTB = 255;
for(i=0;i<optel();i++);
PORTB = 0;
for(i=0;i<32000;i++);
}
}
code: servo.c
#include <avr/io.h>
#include "servo.h"
unsigned char optel (void)
{
optel=300;
}
code: servo.h
unsigned char optel (void);
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
unsigned char optel (void)
{
optel=300;
}
Een functie en een variabele met dezelfde naam?! Dan gaat je compiler toch protesteren?
Hey pros,
alvast bedankt voor de reactie, maar ik heb geen idee hoe ik het anders zou moeten doen? Hoe zou jij het doen? grt
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Geef de functie een andere naam, en declareer een variabele.
unsigned char optel;
unsigned char set_optel(void)
{
optel=300;
}
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Nee, ik denk dat ie de functie een waarde wil laten terugeven.
unsigned char optel (void)
{
return 123;
}
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
alvast bedankt!
Maar met de return lukt het niet. Als ik gewoon een getal ingeef op de positie van optel dan werkt het wel.
#include <avr/io.h>
#include "servo.h"
int8_t return_getal; //var die return getal zal bevatten.
void main (void)
{
while(1)
{
return_getal = set_optel(); //return_getal bevat nu het getal 30.
}
}
unsigned char set_optel(void)
{
int8_t uitkomst; //uitkomst variabel
int8_t var1 = 10; //getal 1 van de som
int8_t var2 = 20; //getal 2 van de som
uitkomst = var1 + var2; //som
return uitkomst; //retirn uitkomst
}Edit/
Je kan ook nog zoiets doen, de getallen van de som meegeven met de functie. Moet je wel even servo.h aanpssen met "unsigned char set_optel(int8_t var1, int8_t var2);"
#include <avr/io.h>
#include "servo.h"
int8_t return_getal; //var die return getal zal bevatten.
void main (void)
{
while(1)
{
return_getal = set_optel(10, 20); //return_getal bevat nu het getal 30.
}
}
unsigned char set_optel(int8_t var1, int8_t var2)
{
int8_t uitkomst; //uitkomst variabel
uitkomst = var1 + var2; //som
return uitkomst; //return uitkomst
}Edit/2
maak er maar dit van: int8_t set_optel(int8_t var1, int8_t var2)
Had de char even over het hoofd gezien en dat gaat wellicht problemen geven