Hallo Zusammen, ich hoffe das mir jemand helfen kann, denn ich weiß nicht mehr weiter... Mein Ttiny44V arbeitet nicht mehr ohne den Programmer AVRISP mkII. Seitdem ich den Prescaler, über mein geschribenes C-Programm, verändert habe, schaltet der uC oder eine LED die ich zur kontrolle angeschlossen habe, bei trennen des Programmers ab. Zuvor lief der uC ohne Probleme, außer das er zu langsam taktete. Ich wollte eine zweite LED alle 2 sec. über den Timer blinken lassen. Blinken tat sie auch, allerdings zu langesam. Daraus schloß ich, dass der Prescaler des internen Osc. auf 8 stand und ich deshalb eine Fkt. zum ändern des Prescaler schrieb (Nach Vorgabe des Datenblattes). Nach dem ersten beschreiben des uC mit dem neuen Prescaler gab es kein blinken mehr, nur noch die Satus-LED leuchte solange der Programmer angeschlossen ist. Programmieren lässt er sich auch (keine Fehlermeldung duch AVR Studio). Schon mal vielen Dank
Als schnellen Workaround könntest du die Teilung mit der CKDIV8-Fuse deaktivieren...
Deine Interruptroutine prüft
1 | if (PORTA == (0<<PA7)){ |
Das ist nichts Anderes als
1 | if (PORTA == 0) |
PORTA ist aber nie 0, da im Hauptprogramm steht:
1 | PORTA = 0b00000010; |
und Bit 1 nie mehr geändert wird. Da ist übrigens einiges, sagen wir mal, optimierungsfähig. Beispielsweise könntest Du in der Initialisierung die Bitnamen aus dem Datenblatt verwenden. Und ein PORT-Bit toggelt man nicht, indem man es gegen z.B. 0<<PA7, also 0, vergleicht, sondern einfach durch
1 | PORTA ^= 1<<PA7; |
Das wären so die auffälligsten Punkte.
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.