PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein erstes Programm will einfach nicht...



popi
20.12.2005, 18:13
Hallo zusammen,

ich habe es geschaft, die Hardware zusammenzulöten sowie in AVR Studio meine ersten Zeile zu schreiben.

Aber leider tut sich nichts! Kann mir bite jemand sagen, ob ich etwas vergessen habe ?

Hardware: ATMega64 ohne externen Quarz (einfach nur aufgelötet, hat ja einen internen Quarz, oder ?)

Software: AVR Studio mit folgendem C-Qieullcode:
#include <avr/io.h>
int main(void)
{

DDRA = 0xFF; //PortB: alles als Ausgäng
DDRB = 0xFF; //PortD: alles als Ausgang
PORTA = 0xFF;
PORTB = 0xFF;
}

Müsste nun nicht die an Port A angelötete LED brennen ?

(Spannung ist dran, RESET-PIN mit Pull-up gegen +)

Danke schon mal im voraus

Grüße

popi

PicNick
20.12.2005, 19:07
Bevor es kompliziert wird: wohin geht der zweite Draht von der LED ?

popi
20.12.2005, 19:34
Anode ist an PA0 und Kathode an Minus.

Vielleicht ist der Controller kaputt.

Kann man sowas testen ?

Danke und Grüße

popi

linux_80
20.12.2005, 20:46
Hallo,
und an welcher Stelle war da jetzt der Widerstand an der LED ?
Hast Du 16 LEDs da dran, ohne Widerstand ? #-o

Daannnnn .... solltest du das jetzt nachholen und hoffen das die Ports und der AVR noch OK sind.

Toastbrot
06.01.2006, 13:21
Hallo,
ich hab ähnliches Problem. Ich möchte meine RN-Control nun mit C Programmieren. C am PC ist nicht das Problem, in Kombination mit dem AVR ist es aber zumindest gewöhnungsbedürtig ;)

Die 8 LEDs (eine geht nicht?!) kann ich einschalten und auch ausschalten. Nun möchte ich das aber so machen, dass wenn ich einen Taster drücke die LEDs an gehen.
Habe dazu folgenden Code, der aber nicht das gewünschte macht:


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

int main(void)
{

DDRC = 0xFF; //PortC: Alles als Ausgang
DDRD = 0x00; //PortD: Alles als Eingang
PORTD = 0xff; //Pullup an Port D setzen



while(1)
{
if ( !(PIND & (1 << PD0)) )
{
PORTC = 0x00; //Alle Pins von Port C aus -> LED an
}
}

return(1);
}

izaseba
06.01.2006, 15:00
Hallo,

als erstes fällt mir auf daß Dein PORTC nur den Zustand 0x00 kennt,
es wird also immer zwischen 0x00 und 0x00 umgeschaltet,
Schreib lieber:


if ( !(PIND & (1 << PD0)) )
{
PORTC = 0x00; //Alle Pins von Port C aus -> LED an
} else PORTC = 0xFF;


Irgendwo habe ich gelesen, daß die Tasten bei einem RN-Controll über ein
Widerstandsnetzwerk an einem ADC Port hängen, das ist bei Dir aber nicht der Fall, oder ?

Ich hoffe geholfenzuhaben.

Gruß Sebastian

Toastbrot
06.01.2006, 15:38
Danke, werde das mal ausprobieren. Ja, die RN-Control hat 5 Taster an einem Analogpin von Port A, ich nutze aber gerade einen zusätzlichen Taster.

popi
06.01.2006, 15:41
Hallo,
und an welcher Stelle war da jetzt der Widerstand an der LED ?
Hast Du 16 LEDs da dran, ohne Widerstand ? #-o

Daannnnn .... solltest du das jetzt nachholen und hoffen das die Ports und der AVR noch OK sind.

Kann der AVR keine 20mA ab ???
Ich gebe zu, habe nicht im Datenblatt nachgesehen, aber ich nahm an, der sollte soviel abkönnen ;o)

Okay, ich schau ins Datenblatt...

Danke für den Hinweis

Gruß

popi

izaseba
06.01.2006, 15:49
Kann der AVR keine 20mA ab ???

Sicher kann er das ab, aber, wie kommst Du drauf, daß durch eine LED an 5V
angeschlossen 20 mA fließen?

Toastbrot
06.01.2006, 16:16
hehe, Mein Programm funktioniert jetzt! Danke nochmal!