PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einstiegsprobleme mit dem RN-Control1.4 Mega32...



Spartakaktus
11.06.2006, 12:03
Hallo!

Hab letzte Woche endlich das Paket mit dem RN-Control1.4 bekommen :)

Nun hab ich aber leider leichte Probs mit der Programmierung...

Zum Programmieren bzw Senden verwende ich
PonyProg2000 2.06f Beta
AVR Studio 4.12 Build 460 und
WinAVR zum kompilieren

Zusätzlich hab ich zum Testen noch Bascom installiert!

Wenn ich nun das Bascom-Testprogramm in Bascom kompiliere und per
PonyProg2000 sende, funktioniert das Programm auf Anhieb (eh klar ^^)

Wenn ich aber per AVR-Studio was schreibe, funktioniert gar nix :)

Zum Anfang wär ein Blink- oder Lauflicht auf den Leds (also PortC) interessant...



#include <avr/io.h>
#include <avr/iom32.h>

void wait(int x);

int main(void)
{

while(1)
{
PORTC = ~PORTC;
wait(10000);
}

}
void wait(int x)
{
while(x)x--;
}


Liegt wohl an meinem Programm oder an den Einstellungen in AVR-Studio oder?

Danke schonmal für die Hilfe!
MfG Gurunzler

uwegw
11.06.2006, 12:12
Viellecht solltest du mal auf die Fehlermeldungen achten, die der Compiler bei deinem Programm liefert:
#error "Attempt to include more than one <avr/ioXXX.h> file."

Mit dem #include <avr/io.h> sucht der Compiler sich die Datei iom32.h schon automatisch raus, sie darf normalerweise nie von Hand mit eingebunden werden! Immer nur die io.h verwenden!

Spartakaktus
11.06.2006, 12:26
So, veränderter Code:


#include <avr/io.h>

void wait(int x);

int main(void)
{

while(1)
{
PORTC = ~PORTC;
wait(10000);
}

}
void wait(int x)
{
while(x)x--;
}

Output:


rm -rf knightrider.o knightrider.hex dep/ knightrider.hex knightrider.eep
Build succeeded with 0 Warnings...
avr-gcc -mmcu=atmega32 -Wall -gdwarf-2 -O0 -Wp,-M,-MP,-MT,knightrider.o,-MF,dep/knightrider.o.d -c ../knightrider.c
avr-gcc -mmcu=atmega32 knightrider.o -o knightrider.elf
avr-objcopy -O ihex -R .eeprom knightrider.elf knightrider.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex knightrider.elf knightrider.eep
Build succeeded with 0 Warnings...

Hanni
11.06.2006, 12:32
Hmm, vielleicht solltest du dem PORTC vorher noch erklären, das er gefälligst als Ausgang zu arbeiten hat. Ohne diesen Hinweiss arbeitet er immer als Tristate Eingang.

Grüße,

da Hanni.

izaseba
11.06.2006, 12:35
Und wo liegt jetzt Dein Problem ?
Wenn Du denkst, daß Deine wait() Funktion auch noch was tut dann irrst Du gewaltig...
füge in der Funktion __asm volatile ("nop); ein, dann soltte es besser klappen.

Warum das so ist, wirst Du in der Wiki rausfinden.

Gruß Sebastian

EDIT:
@Hanni, ups, hehe ja genau, den muß er erst als Ausgang deklarieren :-&

Spartakaktus
11.06.2006, 13:41
Danke schön, jetzt funktionierts :)