Guten Tag, Ich bin noch Anfänger und habe folgendes Problem: ich kann den AtTiny 2313 im Pollinboard ohne Probleme beschreiben. Wenn ich dann an den Ausgängen messe haben diese auch den von mir zugewiesenen Wert. inputt: 5,67V low: 0,69V und high: 5,67V Wenn ich dann allerdings den AtTiny in meine Schaltung einsetze, haben die Ausgänge nicht mehr meine zugewiesenen Werte. Eingang: 4,92V direkt vom Spannungsregler 7805 und alle Ausgänge haben den Wert: 9x 0,5V; 1x 0,7V und 8x 0,1V Woran könnte das liegen? Hier noch das Programm................................................... #include <avr/io.h> #include <inttypes.h> #ifndef F_CPU #warning "F_CPU war noch nicht definiert,wird nun mit 3686400 definiert" #define F_CPU 3686400UL #endif #include <util/delay.h> #include <stdint.h> #define PIN7 7 #define PIN6 6 #define PIN5 5 #define PIN4 4 #define PIN3 3 #define PIN2 2 #define PIN1 1 #define PIN0 0 int main (void) { // (2) int x; DDRA = 0x07; // (3) PORTA = 0x00; // (4) DDRB = 0xff; // (3) PORTB = 0x00; // (4) DDRD = 0x7f; // (3) PORTD = 0x00; // (4) x=500; PORTA &= ~((1 << PIN0) | (1 << PIN1) | (1 << PIN2) ); PORTB &= ~((1 << PIN0) | (1 << PIN1) | (1 << PIN2) | (1 << PIN3) | (1 << PIN4) | (1 << PIN5) | (1 << PIN6) | (1 << PIN7) ); PORTD &= ~((1 << PIN0) | (1 << PIN1) | (1 << PIN2) | (1 << PIN3) | (1 << PIN4) | (1 << PIN5) | (1 << PIN6)); //0111 1111 PORTA |= (1 << PIN2); PORTD |= (1 << PIN0); while(1) { // (5a) PORTB |= (1 << PIN7); _delay_ms(x); PORTB &= ~ (1 << PIN7); _delay_ms(x); PORTB |= (1 << PIN6); _delay_ms(x); PORTB &= ~ (1 << PIN6); _delay_ms(x); PORTB |= (1 << PIN5); _delay_ms(x); PORTB &= ~ (1 << PIN5); _delay_ms(x); /* "leere" Schleife*/; // (5b) } // (5c) /* wird nie erreicht */ return 0; // (6) }
> meine Schaltung sieht wie aus? Vielleicht läuft der µC nicht, weil er eine externe Taktquelle vermisst, die auf dem Pollinboard vorhanden ist. Oder RESET ist und bleibt auf LOW gezogen... Es gibt zig Möglichkeiten. Sonst fällt mir auf: Misstraust du den Defaultwerten nach dem RESET bzw. Power-Up? Laut Datenblatt sind die DDRx gleich , d.h. als Eingänge geschaltet und die PORTx Register stehen auf 0. Die muss man nicht extra nullen. > int x; > x = 500; > _delay_ms(x); "In order for these functions (d.h. _delay_ms und _delay_us) to work as intended, compiler optimizations must be enabled, and the delay time must be an expression that is a known constant at compile-time." http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html Ich kann nicht aus dem Stegreif sagen, ob der Compiler merkt, dass x zum Zeitpunkt des Übersetzens eine Konstante ist und bleibt. Sicherer ist: _delay_ms(500); Oder #define WARTEZEIT_IN_MS 500 _delay_ms(WARTEZEIT_IN_MS);
Ich wollte den reset Pin eigentlich auch als Ausgang nutzen. Ist das möglich? Ich möchte in dieser Schaltung gerne erst einmal alle Pins als Ausgänge benutzen. Eine externe Taktquelle gibt es nicht. Hat der AtTiny sowas nicht intigriert? Das mit der Variablen x habe ich so schonmal bei einem Mega8 benutzt wo ich auch x=x+1 benutzt habe. Das hatte soweit funktioniert (nur im pollinboard getestet). Ich gehe jetzt mal davon aus das es an der Taktquelle liegt. Muss ich da dann einen Quarz benutzen und kann ich da nicht einen der Integrierten benutzen? So und Schaltung ist nun mit dabei :) Danke für deine Antwort schonmal
Hi >Ich gehe jetzt mal davon aus das es an der Taktquelle liegt. Muss ich da >dann einen Quarz benutzen und kann ich da nicht einen der Integrierten >benutzen? Nein.Ja. Aber du solltest die richtige Taktquelle aktivieren. MfG Spess
Taktquelle Die Frage wäre höchstens: Hast du den Attiny2313 jemals auf externe Taktquelle umgestellt oder nicht, also ist der noch fabrikneu? Wenn fabrikneu, dann ist die interne Taktquelle aktiv und es wird keine externe Taktquelle benötigt. Wenn auf extern umgestellt war und nicht auf intern zurückgestellt wurde, dann wird die externe Taktquelle weiter benötigt. Deine Schaltung hat keine externe Taktquelle. Dann wäre klar, dass der µC nicht läuft. Bei deiner Unkenntnis bzgl. Taktquelle hast du daran wahrscheinlich noch nie gedreht. Wenn es auch kein anderer gemacht hat, dann spielt dieses Thema wohl keine Rolle. Eher auf den Reset konzentrieren. Reset Der Resetpin PA2 muss von aussen einen HIGH Pegel bekommen, damit der µC anläuft. Das kann man mit einem externen ~10K Pullup-Widerstand machen oder man kann den rel. hochohmigen internen Pullupwiderstand dafür verwenden. Beide Methoden sorgen für einen sauberen HIGH Pegel am Resetpin. Du hast aber am Resetpin PA2 über einen rel. niederohmigen Basiswiderstand von 1,8k die Basis eines Transistors angeschlossen. Das ist in Verbindung mit dem schwachen internen Pullup des Resetpins so gut wie eine Verbindung zu GND (OK nicht zu GND sondern zu U_BE ca. 0.7V). Der wenige Strom durch den internen Pullup ist ratzfatz durch den Basiswiderstand entfleucht. Der Resetpin sieht einen LOW Pegel. Der µC startet nicht. Du hast so viele Pins frei, ich sehe nur Nachteile, wenn du ausgerechnet den Resetpin PA2 als I/O Pin verwendest. Wenn du den Resetpin allerdings schon als IO-Pin umgefust hast... kannst du das mit dem Pollinboard sowieso nicht mehr zurück ändern. Dann musst du schauen was mit dem µC im Istzustand noch anzustellen ist. Du schreibst, dass die Schaltung auf dem Pollinboard funktioniert hat. Wenn das tatsächlich mit dem Basiswiderstand und dem Transistor war, dann baue in der Schaltung auch einen externen Pullup-Widerstand ein so wie auf dem Pollinboard. Schaltung Für die T1 bis T3 würde man eher PNP Transistoren nehmen und PNP gemäß ansteuern.
Vielen Dank muss ich sagen :) Der Atmel läuft jetzt super. Ich habe den PA2 als Reset gelassen und mit dem internen pull-up Widerstand auf 5 volt gelegt. Hinter den Spannungsregler an die 5 Volt musste noch ein kondensator da sonst, wenn alle LED's an waren der Reset wieder low erkannt hat. Aber jetzt läuft es erst mal. Das mit den Transistoren werde ich mir nochmal angucken. Muss auch dazu sagen war das erste mal das ich mit Transistoren gearbeitet habe. Und sie haben auch nicht die von mir erwartete Ausgangsspannung von 12 Volt. Wenn alles funktioniert werde ich die Schaltung und ein kleines Testprogramm nochmal reinstellen damit sich Interessenten den LED-Cube nachbauen können. Vielen Dank an dich Stefan B.
Hallo, Mike schrieb: > Hinter den > Spannungsregler an die 5 Volt musste noch ein kondensator da sonst, wenn > alle LED's an waren der Reset wieder low erkannt hat. Aber jetzt läuft > es erst mal. Da Du die nicht eingezeichnet hast und selber schreibst, daß Du Anfänger bist, ist hier vielleicht noch ein obligatorischer Hinweis angebracht: Man sollte immer passende Kapazitäten an die 78xx Regler hängen, am Ein- als auch am Ausgang. Am Ausgang können evtl. große Kapazitäten problematisch sein. Für die genaue Dimensionierung siehe Datenblatt, aber meistens sind jeweils 0.1uF keramisch perfekt. Ansonsten kann der Regler Murks bauen, auch z.B. dann wenn man an einer Experimentierplatine ein Bauteilbein auch nur ein wenig verbiegt, die Platine auf eine andere Unterlage stellt etc. Das ist einfach instabil und macht auf Dauer keinen Spaß.
Die Spannungen an den Emittern von T1-3 sind immer 0,7 V kleiner als die Basen welche max. 5V sein können also max. 4,3 V. Stichwort Kollektorschaltung bzw. Emitterfolger.
Was ich besonders unschön und irritierend finde ist der in den Schaltplan eingezeichnete Spannungsregler als Gehäusebild. Wenn man sich auf das Bild verlässt und nicht die Pinnummern beachtet, geht das sicherlich schief, da der mittlere Pin GND ist. Daher immer das Schaltzeichen und nicht die Gehäuseform verwenden.
Der mitllere Pin ist nicht GND. Ich habs ja mit 1 3 2 beschriftet und immer 1 = Vi; 2 = GND und 3 = Vo. Es gibt Transistoren die 1 3 2 und welche die 1 2 3 belegt sind. Man sollte da ja eh ins Datenblatt gucken.
Hast aber Recht das ich das Schaltzeichen benutzen sollte und nicht das Gehäusebild :)
Mike schrieb: > Der mitllere Pin ist nicht GND. Ich habs ja mit 1 3 2 beschriftet und > immer 1 = Vi; 2 = GND und 3 = Vo. Es gibt Transistoren die 1 3 2 und > welche die 1 2 3 belegt sind. Man sollte da ja eh ins Datenblatt gucken. 1. Der 7805 ist kein Transistor, sondern ein Spannungsregler. 2. In der Bauform TO220 ist links der Eingang, in der Mitte GND und rechts der Ausgang. 3. Gezählt wird hier immer von links nach rechts, als 1,2,3
Hast Recht. STeht so im PDF. Hab ich auch so eingelötet.... keine Ahnung wie ich jetzt da drauf kam :)
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.