Hallo Forengemeinde ich bin dabei mal wieder etwas mit dem 2313a zu machen nur leider scheitere ich gleich bei der leichtesten übung :| . wie gewohnt habe ich meinem projekt zwei leds spendiert und jetzt bekomme ich die beiden nicht zum laufen. sie hängen an den pins a0 und a1 sind lc leds(2mA) und sollten richtig angeschlossen sein ( vorwiderstand) . das problem : die leds blinken bei folgendem code mit einer frequenz von ca. 10hz :o. mein ansatz: hat das vielleicht damit zutun,dass diese pins auch für XTAL nutzbar sind ? p.s. das CKDIV8 ist nicht gesetzt! #define F_CPU 8000000 // 8mhz #include <avr/io.h> #include <util/delay.h> int main(void) { DDRA = 0x03; // a0 und a1 sind ausgaenge PORTA = 0x03; // LEDs an while(1) { } }
Hallo Kalle, überzeuge Dich doch noch einmal davon, ob es am 2313a einen PORTA gibt. Datenblatt? Gruß Clemens
Kalle schrieb: > die leds blinken bei folgendem code mit einer frequenz von > ca. 10hz Check die Fuses. z.B. WDTON/Watchdog-always-on gesetzt?
Frontend schrieb: > es am 2313a einen PORTA gibt. Hat er, wenn man auf Quarz und/oder Reset verzichtet.
Kalle schrieb: > PORTA = 0x03; // LEDs an PA2 ist der Resetanschluss. Je nach Fuseseinstellung wird wohl eine 0 hier den MCU zurücksetzen (weil du alle internen Bits des Ports A auf 0 setzt - auch wenn die nicht nach außen gefuehrt sind). Ein direktes Setzen eines kompletten Ports über eine Zuweisung birgt Risiken, weil eventuell Portbits gelöscht werden, die nicht gelöscht werden sollen. In diesem Falle wäre ein: PORTA |= 0x03; besser, da es nur die Portbits PA0 und PA1 setzt, alle anderen aber unverändert läßt ! Grundsätzlich wäre: #define ledport PORTA #define leddir DDRA #define led0 PA0 #define led1 PA1 ... leddir |= (1 << led0) | (1 << led1); // LED Anschlüsse als Ausgang ledport |= (1 << led0) | (1 << led1); ... besser ! Folgende defines wären hilfreich: #define setled0() (ledport |= (1 << led0)) #define clrled0() (ledport &= ~(1 << led0)) (äquivalentes für led1 ) Gruß Ralph PS: Fuses für ATtiny2313 für internen 8MHz Oszillator (kein Quarz) aber mit erhaltener Resetfunktion: Lo-Fuse: 0xD4 Hi-Fuse: 0xDB
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.