Hallo. Habe leider ein Problem mit der Funktionsfähigkeit eines ATtiny2313. Nach dem Flashen macht er eigentlich gar nichts. Habe mal ein ganz einfaches Progrämmchen geschrieben, quasi nur den gesamten DDRB=0xff, und alle Ausgänge angesteuert (zum Test auch mal negiert). Ich nutze AVRStudio 4.12; + STK500: Flachband von ISP6PIN zu SPROG3; Flachband von PORTB zu LED Einen anderen µP (2313) zu verwenden hat auch nix gebracht. Das programmieren selbst, ging auch ohne Fehlermeldung vor sich. Woran könnte es eurer Meinung nach noch liegen? Danke für eure Hilfe!
Wie ist das Ding denn angeschlossen (Schaltplan)? Und schreib mal das komplette Programm hier rein, nicht nur die eine Zeile.
Hmm, also den Schaltplan vom STK500 werd ich mir jetzt mal sparen :-) Der Code lautet: #include <avr/io.h> int main (void) { DDRB=0xFF; while(1) { PORTB=0xff; } } Wie gesagt, nur zum Test, nix großes...
Also, wie ich schon schrieb (siehe ersten Beitrag), probierte ich schon beide Varianten aus. Was in Klartext heißt: auch PORTB=0x00
Das richtete sich wirklich nicht gegen deine Idee oder deinen Gedanken, bin für jede Hilfe dankbar. Sorry. wobei ich aber auch eigentlich nur schrieb, das ich das schon probierte - da war nix bös gemeintes dabei. Aber der nächste anonyme Linkhinweis, hat mich schon ein bissl mehr genervt. Der ist wohl hier eher nicht notwendig und wenn doch mal eine Angabe fehlt, trage ich diese gerne nach... Also, hoffe auf weitere Möglichkeiten
Der ATmega wird für deine Augen etwas zu schnell sein, bau da mal ein delay ein , damit du auch was sehen kannst.
1 | #include <avr/io.h> |
2 | #ifndef F_CPU
|
3 | #define F_CPU 8000000UL /* Quarz/InternerOz mit ,,Mhz */ |
4 | #endif
|
5 | |
6 | #include <util/delay.h> /* definiert _delay_ms() ab avr-libc Version 1.2.0 */ |
7 | |
8 | |
9 | int main (void) |
10 | {
|
11 | DDRB=0xFF; |
12 | |
13 | while(1) |
14 | {
|
15 | PORTB=0xff; |
16 | _delay_ms(500); // delay 500 ms |
17 | |
18 | PORTB=0x00; |
19 | _delay_ms(500); // delay 500 ms |
20 | |
21 | }
|
22 | }
|
Hi. Funktioniert leider auch nicht. Habe es erst mit einer eigenen Variante probiert ihn warten zu lassen. Danach habe ich deinen kompletten Code genommen, jedoch funktionierte es damit leider auch nicht. Frage: Wenn ich die LED`s ständig einschalte, wie bei der ursprünglichen Version (--> also PORTB=0x00;), wieso sollte ich es dann nicht sehen?
Im Studio den richtigen Controller ausgewählt? Die richtige Datei geflasht? Nach dem Flashen mal versuchsweise den Programmierstecker abgezogen?
Controller war der richtige ausgewählt, die Datei war auch die richtige. Den Stecker habe ich nicht abgezogen, hätte ich noch machen können, aber war schon zu spät. Ich weiß nicht was geholfen hat, zumindest habe ich AVRstudio geschlossen, neu geöffnet, ein neues Projekt gestartet und folgenden CODE verwendet: #include<avr/io.h> int main (void) { DDRB=0xFF; while (1) { PORTB=0x0f; } } Und siehe da es funktioniert plötzlich. Also, wie auch immer, das Problem hat sich geklärt. Dabei fiel mir aber noch eine Frage auf, kann es tatsächlich sein, wenn ich die Datei avr/delay.h includiere, mein Programm so aufgebläht wird, das ein schreiben in den Flash nicht mehr möglich ist? Danke schon mal für eure Mithilfe
chaki schrieb: > Dabei fiel mir aber noch eine Frage auf, kann es tatsächlich sein, wenn > ich die Datei avr/delay.h includiere, mein Programm so aufgebläht wird, > das ein schreiben in den Flash nicht mehr möglich ist? Ja, wenn du ohne Optimierungen kompilierst. (dann bekommst du aber auch eine Warnung)
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.