Güß euch. Folgendes Problem: Ich will meine Projekte vom ATMega8 auf den 16 upgraden. Problem: Mein x16 reagiert nicht auf Befehle a la PORTA=0 (PORTB-D funktionieren) Ich hab den ADC auch schon abgeschalten (was er ja bei µC reset eigtl. eh scho nsein sollte, oder? hilft aber alles nix. wisst ihr, on man da sonst noch was einstellen muss, bis man PORTA als normalen ein/ausgang nutzen kann?
Für Port A ist nichts besonderes Softwareseitig notwendig. Aber: Hast du AVcc beschaltet? Da muss die Versorgungsspannung rann, auch wenn du den ADC nicht benutzt.
hmm... jetz brennt die led, (an PA0 angeschlossen) nicht mehr, aber steuern geht immer noch ned...
oder sagen wir so: die led blinkt nicht wie sie sollte! int main(void) { DDRA=0xFF; PORTA=0x0; int8_t i=0; for(i=0;i<20;i++) _delay_ms(5); PORTA=0xFF; for(i=0;i<20;i++) _delay_ms(5); }
die LED kann nicht blinken da das Programm nur einmal durchlaufen wird, sprich die LED bleibt für ca 100 ms aus und geht dann an und bleibt an.... zum blinken bräuchte man ne Schleife um das Ganze, zb Endlosschleife
Sebastian Schwaiger wrote: > oder sagen wir so: > die led blinkt nicht wie sie sollte! Na ja, das ist ja auch kein blinken. Mehr ein: einmal ein und wieder ausschalten
1 | int main(void) |
2 | {
|
3 | int8_t i=0; |
4 | |
5 | DDRA=0xFF; |
6 | |
7 | while( 1 ) { |
8 | PORTA=0x0; |
9 | for(i=0;i<20;i++) |
10 | _delay_ms(5); |
11 | |
12 | PORTA=0xFF; |
13 | for(i=0;i<20;i++) |
14 | _delay_ms(5); |
15 | }
|
16 | }
|
Tzz... while(1) eingebaut, jetz gehts. ABER: eigtl sollte sich der µC doch nach der rückkehr aus main() resetten bzw. die main() erneut aufrufen, oder hab ich da mal was falsch aufgeschnappt?
Na ja, jetz läuft auch mein "eigentliches" Programm (bei dem natürlich die Endlosschleife drin ist.) Vielen Dank euch für die Hilfe!!!
Sebastian Schwaiger wrote: > Tzz... while(1) eingebaut, jetz gehts. > ABER: > eigtl sollte sich der µC doch nach der rückkehr aus main() resetten bzw. > die main() erneut aufrufen, oder hab ich da mal was falsch > aufgeschnappt? Was nach der Rückkehr von main() passiert hängt von deiner Compiler bzw. der Laufzeitumgebung ab, die der bereitstellt. Beim WinAVR wird das Programm in einer Endlosschleife gefangen und nichts passiert mehr. Aber: Darauf verlässt man sich nicht. Grundsätzlich: Auf einem µC programmiert man so, dass das Programm aus main() nie wieder heraus kommt.
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.