kann mir jemand sagen warum dies Programm nicht laüft ,was ist falsch ? /* PD2: LED blinkt * nst, 14.11.2005 */ #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> volatile uint8_t led_an; SIGNAL (SIG_TIMER1_OVF) { led_an=~led_an; } void ioinit(void) { TCCR1A=0; TCCR1B=(1<<CS11) | (1<<CS10); /* full/:8/:64 MCU clock */ TIMSK=(1<<TOIE1); sei(); /* enable interrupts */ } int main (void) { ioinit(); DDRD=0x02; /* use PortD1 for output (LED) */ PORTD=0x00; /* turn LED off */ for (;;) { PORTD=~led_an; /* LED */ } }
1.: Was für ein Controller ist das? 2.: Welche Taktfrequenz 3.: Schaff Dir erstmal die aktuelle WINAVR-Version an. Die ganze SIGNAL-Geschichte ist veraltet und sollte nicht mehr benutzt werden.
samer wrote:
> hallo das ist avr atmega 8515 auf stk500
Das ist die Antwort auf 1. Und was ist mit 2.?
Probier mal folgendes: /* PD2: LED blinkt * nst, 14.11.2005 */ #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> void Delay (uint32_t delay) { uint32_t i; for (i = 0; i < delay; i++) nop (); } int main (void) { DDRD=0x02; /* use PortD1 for output (LED) */ PORTD=0x00; /* turn LED off */ for (;;) { PORTD ^= (1 << PD2); /* LED */ Delay (100000); } } Wenn das nicht tut, dann fehlt Deinem µC wohl der Takt ....
> Wenn das nicht tut, dann fehlt Deinem µC wohl der Takt ....
Wenn dem µC der Takt fehlen würde, könnte er ihn gar nicht programmieren
;)
By the way: Ich hab den Code mal eben (minimal abgeändert / siehe unten)compiliert und durch den Simulator gejagt. Der Simulator sagt dass es funktioniert (1 Sek. an... 1 Sek. aus... 1 Sek. an... usw.)
1 | /* PD2: LED blinkt
|
2 | * nst, 14.11.2005 */
|
3 | #include <inttypes.h> |
4 | #include <avr/io.h> |
5 | #include <avr/interrupt.h> |
6 | //#include <avr/signal.h> <-- signal.h ist obsolet !
|
7 | |
8 | volatile uint8_t led_an; |
9 | |
10 | //SIGNAL (SIG_TIMER1_OVF) <-- veraltet / ungültig !
|
11 | ISR (TIMER1_OVF_vect) // <-- neu / gültig ;) |
12 | { led_an=~led_an; |
13 | }
|
14 | |
15 | void ioinit(void) |
16 | { TCCR1A=0; |
17 | TCCR1B=(1<<CS11) | (1<<CS10); /* full/:8/:64 MCU clock */ |
18 | TIMSK=(1<<TOIE1); |
19 | sei(); /* enable interrupts */ |
20 | }
|
21 | |
22 | int main (void) |
23 | {
|
24 | ioinit(); |
25 | DDRD=0x02; /* use PortD1 for output (LED) */ |
26 | PORTD=0x00; /* turn LED off */ |
27 | for (;;) |
28 | { PORTD=~led_an; /* LED */ |
29 | }
|
30 | }
|
Wenns bei dir nicht läuft, würde ich mal auf nen Bedienungs-/Verdrahtungsfehler tippen. Ähm... wo liegt das Problem eigentlich genau? Scheitert es bei dir schon am Compilieren, oder macht der Mega8515 nach dem Programmieren einfach nicht Anausanausanausanausanausanausanaus... ;) ...oder ganz doof gefragt: hast du die LED(s) überhaupt mit Port D verbunden? (dazu musst du eines der beigefügten Kabel benutzen) Gruß, Magnetus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.