PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erste Schritte in der Programmierung in c



timmy83
06.12.2006, 18:55
Hallo!

Habe bisher mit Bascom programmiert und möchte, da wir im Studium C programmieren in C umsteigen. Arbeite mit AVR Studio. Das brennen funktioniert über den mysmartUSB von myAVR ohne Probleme, nur funktioniert mein Programm nicht. Was mach ich falsch?
Möchte erstmal einfach eine LED mit einem Schalter zum leuchten bringen.

MfG

Timmy

Hier mein Code:


#include <avr/io.h>
#define F_CPU 3686400UL



int main(void)
{
DDRC = 0xff; /*Port C Ausgang*/
DDRB = 0x00; /*Port B Eingang*/
PORTB = 0x00; /*Pull-Up aktiv*/

if (!(PINB & (1<<2)))
{
PORTC &= ~(1<<1);

}

else

{
PORTC |= ( 1<<1 );

}
return 0;
}

SprinterSB
06.12.2006, 19:18
Der Programm landet nach dem Verlassen von main() irgendwo (bei avr-gcc in einer Endlosschleife).

Dein Code wird also nur 1x ausgeführt. Pack ihn mal in ne Endlosschleife rein.

Ja nach Port gibt es Sonderfunktionen, zB standardmässig aktiviertes JTAG. Also nicht vergessen das...

timmy83
07.12.2006, 13:36
Hallo!

Danke erstmal für den Tip! komm aber leider nicht weiter.... hab jetzt ne Endlosschleife programmiert, aber das Programm läuft trotzdem nicht. Die angeschlossene LED leuchtet, aber wenn ich den Taster drücke tut sich nix!

#include <avr/io.h>
#define F_CPU 3686400UL



int main(void)
{
DDRC = 0xff; /*Port C Ausgang*/
DDRB = 0x00; /*Port B Eingang*/
PORTB = 0x00; /*Pull-Up aktiv*/
for(;;){
if (!(PINB & (1<<2)))
{
PORTC &= ~(1<<1);

}

else

{
PORTC |= ( 1<<1 );

}
return 0;
}
}

MfG

Timmy

SprinterSB
07.12.2006, 15:28
Rücke deinen Code mal ein, dann siehst du besser was abgeht.

Durch das return macht dein Code nix anderes als zuvor (es steht in der Schleife!).

Wirf das return wer, das brauchst du nicht. Auch keins am Ende, der return-Code wäre wegen der Endlosschleife eh tot...

timmy83
07.12.2006, 16:53
Hallo!

Dankeschön! Jetzt funktioniert es! \:D/ Hab das return rausgeworfen und die Pull-Ups wieder aktiviert. Hatte diese keine Ahnung warum deaktiviert. Naja,aller Anfang ist schwer..... hab zwar schon am ein wenig PC in C programmiert aber an einer Microcontroller ist es doch ein wenig anders.

MfG

Timmy