Guten Abend allerseits. Da ich mich momentan mit der uC Elektronik ein wenig beschäftige, habe ich mir nun ein erstes kleines Projekt überlegt. Ich bin mir allerdings nicht sicher, ob der Schaltplan so auch funktioniert. Könnte sich das ganze mal jemand kurz ansehen und mir sagen ob das so möglich wäre? MfG Bastian Schroll
:
Gesperrt durch User
Wenn du die Taster T2 und T3 nach Masse schalten lässt kannst du dir die beiden 10k Widerstände sparen. Du brauchst dann Widerstände nach +5V und die hat der Tiny bereits eingebaut. Die lassen sich im Tiny per Program aktivieren. Abgesehen davon. Ist ja sonst nicht viel übrig in der Schaltung :-) Ja, müsste laufen.
Hallo! Würde es nicht reichen wenn ein LED-Vorwiderstand zwischen LEDs und GND an Stelle der vielen Vorwiderstände in der Schaltung sind?!
Leopold Schilling schrieb: > Hallo! > Würde es nicht reichen wenn ein LED-Vorwiderstand zwischen LEDs und GND > an Stelle der vielen Vorwiderstände in der Schaltung sind?! Wenn Du immer nur eine LED einschaltest, Ja.
Ne es sollen aba auch mal alle Gleichzeitig leuchten, deshalb hat ja jeder einein eigenen R. Und das mit den Tastern hab ich jetzt nich so ganz kapiert. Also es soll immer n Low Pegel anliegen, und wenn ich drück solls High sein, wie müsst ich es dann beschaten? Die Taster gehen jetz ja gegen VCC und die Pulldown's gegen GND. Was müsste daran dann geändert werden? Gruß basti
Bastian Schroll schrieb: > Also es soll immer n Low Pegel anliegen, und wenn ich drück solls High > sein, wie müsst ich es dann beschaten? So wie du das hast. Aber niemand sagt, dass das so sein muss. An den Eingängen kann genausogut ständig ein High-Pegel anliegen und wenn man den Taster drückt, geht der Eingang auf Low. Vorteil: Einfachere Schaltung, weil du dann die im µC eingebauten Pull-Up Widerstände benutzen kannst.
Was würde passieren, wenn man Software mäßig vergisst, die Pull Ups zu aktivieren? Kann dann irgendwas schaden nehmen? Den die Schaltung ist auch für einen Laien als einführung gedacht, der noch weniger Ahnung hat als ich, und daher möchte ich solche Fehler quelen für ihn vermeiden. Und würde sich dann die Abfrage Routine in Bascom ändern wenn die Taster auf Low ziehen? Gruß Basti
So habe den Schaltplan noch leicht erweitert, da 5V ja nciht auf Bäumen wachsen und das ganze so einfacher einzubinden ist. Aber wie sieht das ganze den nun mit der Frage aus meinem Vorpost aus? Bastian Schroll schrieb: > Was würde passieren, wenn man Software mäßig vergisst, die Pull Ups zu > aktivieren? Kann dann irgendwas schaden nehmen? Den die Schaltung ist > auch für einen Laien als einführung gedacht, der noch weniger Ahnung hat > als ich, und daher möchte ich solche Fehler quelen für ihn vermeiden. > > Und würde sich dann die Abfrage Routine in Bascom ändern wenn die Taster > auf Low ziehen? Gruß Basti
Hey Leute Ich hab erst vor kurzem angefangen mit Mikrocontrollern herum zu experimentieren. Ich hab schon mal ein Lauflicht hinbekommen, da wollte ich den Code so um ändern dass es den Effekt vom Knight Rider ergibt, doch daran bin ich gescheitert. Ausserdem funktioniert der Code vom Lauflicht auch nicht mehr obwohl ich alles rückgängig gemacht habe. Hat vielleicht jemand ein Code von nem Knight Rider Effekt, mit dem ich dann weiter experimentieren kann? Die Led's hängen an den Ports B... Und ich habe ein Quarz von 4Mhz verbaut. (Sorry das ich das in diesem Forum frage, sagen wir ich hab ein 9600 BAUD (8N1) Signal das z.b so aussieht CC00154434 was in Binär 1100110000000000000101010100010000110100 so aussieht, könnte ein ATmega16 darauf reagieren, z,b ein Port auf high setzen ??? Vielen Dank
Hallo Bastian. Gutes startprojekt erstmal :-) so in etwa hab ich damals auch angefangen :-) und auch das mit dem knight rider hab ich damals auch hinbekommen :-) mir is grade nicht ganz so klar, was du mit T1 und T2 machen willst... sollen die in dieser schaltung irgendeine funktion haben?? Du hast in der schaltung kein quarz drin, willst du wirklich dein projekt ohne aufbauen und nur den internen quarz von 1MHz verwenden?? >Was würde passieren, wenn man Software mäßig vergisst, die Pull Ups zu >aktivieren? Kann dann irgendwas schaden nehmen? Den die Schaltung ist Nein, die schaltung nimmt an sich keinen schaden, aber es kann passieren das das programm nicht mehr zu 100% stabil läuft und sich beim drücker der taster aufhängt, aber wie gesagt, es kann, muss aber nicht... kommt immer drauf an, wie du die register setzt. >Und würde sich dann die Abfrage Routine in Bascom ändern wenn die Taster >auf Low ziehen? klar ändert sich das, jenachdem wie du die register schaltest. s.o. @Mike >Hat vielleicht jemand ein Code von nem Knight Rider Effekt, mit dem ich >dann weiter experimentieren kann? >Die Led's hängen an den Ports B... >Und ich habe ein Quarz von 4Mhz verbaut Ich hätte schon einen Code für dich, aber hier gehts ja in erster linie darum, das du es lernst zu verstehen, wie es funktioniert :-) wie wärs denn mit einem lösungsansatz von dir und dann helfen wir dir alle?? vielleicht ne schaltung? welchen MC du nutzt, wie du vorgehst, deine bisherigen codes?? usw. >(Sorry das ich das in diesem Forum frage, sagen wir ich hab ein 9600 >BAUD (8N1) Signal das z.b so aussieht CC00154434 was in Binär >1100110000000000000101010100010000110100 so aussieht, könnte ein >ATmega16 darauf reagieren, z,b ein Port auf high setzen ??? klar geht das, wenn du weisst, wie du es programmieren musst :-) hier gilt auch natürlich, wie willst du es denn ansteuern?? terminal-programm oder fertige software?? was genau willst du erreichen?? usw... bei fragen einfach melden :-) -------------------------------------------------------------------- !! Wer etwas WILL findet Wege, wer etwas NICHT WILL findet Gründe !! if (ahnung == 0) { lese FAQ; nutze die SUCHE; nutze GOOGLE; } else { use brain; make post; oder einfach FRESSE HaLTEN :-) }
ok Die angehängte Datei war zunächst nur eine blinkende Led dann hab ich daraus ein Flip Flop gemacht und dann hab ich noch weitere Led's beigefügt. Der IC ist ein At90S2313 mit einem Quarz von 4Mhz und 7Led's von Portb,0 bis PortB,6 Nun zum Knight Rider Ich weis dass jeder Port eine Adresse hat z,b 0x01 oder 0b0000001 ich denke das also ein Teil des codes z,b so aussehen könnte 0b0000001 ??? 0b0000010 ??? 0b0000100 ??? 0b... ??? 0b0000010 ??? 0b0000001 Anstelle der Fragezeichen müsste jetzt noch ein Befehl kommen dass er 1sek z,b warten muss (glaube:(wait:1000ms)) Ausserdem muss er wissen das die PORTB Ausgänge sind und wann sie ein und ausgeschaltet werden müssen. Das sind +/- momentan meine Kenntnisse über Mikrocontroller Zu der Frage mit 9600Baud 8N1, ich hab ein RFID Türöffner gebaut mit dem SFchip "SF6107" (sfchip.de)der sendet so ein Signal aus sobald ein Tag gefunden wurde, so ich würde dieses Signal gerne an ein uC anlegen um Namen über ein LCD Bildschirm auszugeben, dass heisst jede Binär Zahl bekommt einen Namen sobald der Tag gefunden wurde vom Sfchip öffnet der die Tür und der uC zeigt den Namen des Besitzers des Tags an. Puh so Danke Danke
Ich empfehle ein Studium des AVR-Tutorial Und dies Sache mit dem Türöffner: Stell sie erst mal zurück, bis du die Basissachen einigermassen sicher beherrscht.
Ich schliesse mich auch der aussage von Karl Heinz an... Bevor du überhaupt etwas schwieriges planst, sieh zu das du das kinderleichte ding erstmal zu laufen bekommst... >Anstelle der Fragezeichen müsste jetzt noch ein Befehl kommen dass er >1sek z,b warten muss (glaube:(wait:1000ms)) >Ausserdem muss er wissen das die PORTB Ausgänge sind und wann sie ein >und ausgeschaltet werden müssen. ganz genau so sieht es aus :-) es gibt auch den befehl wait 1 anstatt wait 1000ms, is eh das selbe :-) aber wenn du 100%ige zeiten erreichen willst, nimm ne schaltung mit quarz, statt die von bastian, die sind fast 100%ig. zu deinem programm. wie wärs hiermit?? ANFANG: -MCU Einstellungen (CPU,Takt,FLOW,STACK...) -Portregister als In/Out setzen. -lauflicht erstellen indem du immer von LED zu LED wechselst und dazwischen immer nur zb. 1sec wartest?? und am ende, lässt du dieses lauflicht genauso wieder rückwärts laufen?? solltest du eh schon kennen denk ich mal.... gibt zwar auch feinere methoden, aber das is so ziemlich das einfachste knight rider lauflicht, das du hinbekommen wirst... lg Giuse -------------------------------------------------------------------- !! Wer etwas WILL findet Wege, wer etwas NICHT WILL findet Gründe !! if (ahnung == 0) { lese FAQ; nutze die SUCHE; nutze GOOGLE; } else { use brain; make post; oder einfach FRESSE HaLTEN :-) }
G. G. schrieb: >>Anstelle der Fragezeichen müsste jetzt noch ein Befehl kommen dass er >>1sek z,b warten muss (glaube:(wait:1000ms)) >>Ausserdem muss er wissen das die PORTB Ausgänge sind und wann sie ein >>und ausgeschaltet werden müssen. > ganz genau so sieht es aus :-) > es gibt auch den befehl wait 1 anstatt wait 1000ms, is eh das selbe :-) > aber wenn du 100%ige zeiten erreichen willst, nimm ne schaltung mit > quarz, statt die von bastian, die sind fast 100%ig. Er ist mit Assembler unterwegse. Die Verwechslung mit BASCOM ist nur deswegen passiert, weil er einen alten Thread gekapert hat.
Hast Recht Karl Heinz, habs übersehn... :-) Muss mal meine Sekretärin anschnautzen, der Kaffe war doch viel zu leicht heut morgen :-) Ich ziehs zurück :-) Aber trotzdem, mal sehn, was er hinbekommt :-) schönen Arbeitstag an euch alle... LG Giuse
Nun dass ich das mit dem Türöffner und dem uC nocht nicht hinkrieg ist mir klar, es sollte ja auch nicht gleich sein und ausserdem ist es nur eine Erweiterung des Tüöffners da der Türöffner schon besteht. Probiere jetzt mal den Code zu schreiben. /-:
Hi Leute hier hab ich mal das Lauflicht aber weiss jetzt nicht welche Befehle wie umgeschrieben werden müssen um ein KITT Lauflicht daraus zu machen ??? Könnte ich ein paar Tipps bekommen Hab aber bemerkt dass z,b: lsl ll ; Lauflicht um 1 Bit nach links weiterschieben das kann beim KITT keine anwendung finden, oder das: cpi ll,0x00 ; Wenn Lauflicht durchgelaufen ist dann wieder am Anfang beginnen brne loop_wait .include "2313def.inc" ; Interrupt Vector Table .cseg .org 0x00 ; Reset-Address rjmp Reset .org 0x01 ; External Interrupt0 Vector Address reti .org 0x02 ; External Interrupt1 Vector Address reti .org 0x03 ; Input Capture1 Interrupt Vector Address reti .org 0x04 ; Output Compare1 Interrupt Vector Address reti .org 0x05 ; Overflow1 Interrupt Vector Address reti .org 0x06 ; Overflow0 Interrupt Vector Address reti .org 0x07 ; UART Receive Complete Interrupt Vector Address reti .org 0x08 ; UART Data Register Empty Interrupt Vector Address reti .org 0x09 ; UART Transmit Complete Interrupt Vector Address reti .org 0x0a ; Analog Comparator Interrupt Vector Address reti .DEF temp = R16 ; Universalregister .DEF i = R17 ; Schleifenregister .DEF j = R18 .DEF k = R19 .DEF ll = R20 ; Lauflicht Wait: ; Warteschleife ldi k,200 loop_k: nop nop dec k cpi k,0xFF brne loop_k dec j cpi j,0xFF brne Wait dec i cpi i,0xFF brne Wait ret Reset: ldi temp,LOW(RAMEND) ; Stackpointer initalisieren out SPL,temp ldi temp,0xFF ; PORTB auf Ausgabe setzen out DDRB,temp ldi temp,0xFF ; Alle Ausgänge auf 1 setzen out PORTB,temp ldi temp,0xFF ; PORTD auf Ausgabe setzen out DDRD,temp ldi temp,0xFF ; Alle Ausgänge auf 1 setzen out PORTD,temp ldi ll,0x01 ; Lauflicht = 1 loop: ; Endlosschleife mov temp,ll ; Untere 8 Bit auf PORT B ausgegeben (invertiert) com temp out PORTB,temp lsl ll ; Lauflicht um 1 Bit nach links weiterschieben cpi ll,0x00 ; Wenn Lauflicht durchgelaufen ist, dann wieder am Anfang beginnen brne loop_wait ldi ll,0x01 ; Lauflicht = 1 loop_wait: ldi i,HIGH(2000) ; Warten ldi j,LOW(2000) rcall Wait rjmp loop
Hi .crystal = 4000000 Hab ein Problem bei der Eingabe des Quarzes erscheint immer folgende Fehlermeldung in AVR STUDIO (4): error: Invalid directive: '.crystal' Und $regfile = "2313def.dat" funktioniert auch nicht. Könnt ihr mir sagen was da das Problem sein könnte ? Ich hab da an die Fusebits gedacht . Danke im voraus
> $regfile = "2313def.dat"
Richtig heißt es:
.include "2313def.inc"
Stand doch bereits in deinem obigen Code.
Ja das wusste ich ja schon aber in fast jedem Code steht es so, da dachte ich das würde dann auch funktionieren aber wie gibt man die Quarzfrequenz in den At90S2313 ein. DAnke für die Antwort
Mike C. schrieb: > Hi > > .crystal = 4000000 > Hab ein Problem bei der Eingabe des Quarzes erscheint immer folgende > Fehlermeldung in AVR STUDIO > (4): error: Invalid directive: '.crystal' > > Und $regfile = "2313def.dat" funktioniert auch nicht. > Könnt ihr mir sagen was da das Problem sein könnte ? Das eigentliche Hauptproblemn besteht darin, dass du einen BASCOM Thread für dein Assembler anliegen gekapert hast. ************************************************* Es gibt mehr Programmiersprachen als nur eine! ************************************************* Du willst offenbar in Assembler programmieren. Also schreib auch in Assembler. Und wenn du dir Beispiele anderer ansiehst, dann studiere hauptsächlich Assembler-Beispiele. Es ist mit deinem Wissenstand nicht wirklich zielführend, wenn du BASCOM Source Code studierst und den 1:1, mit seinen ganzen Konfigurationsteilen in Assembler übernehmen möchtest. Das ist so, wie wenn jemand der Italienisch lernen will, dass mit einem Russisch Lehrbuch tun will. -> nicht wirklich zielführend. > Ja das wusste ich ja schon aber in fast jedem Code steht es so, Echt? Ja, wenn man BASCOM Source Code studiert dann ist das wohl so. > da dachte ich das würde dann auch funktionieren aber wie gibt > man die Quarzfrequenz in den At90S2313 ein. Die gibt man gar nicht ein. Der At90S2313 arbeitet mit der Frequenz für die er gefust ist, bzw mit der Frequenz mit der der Quarz läuft (wenn er auf Quarz gefust ist) So, und jetzt mach ich den Thread dicht, ehe dieses BASCOM-Assembler Fiasko noch weiter geht. Das ist ja schlimmer als die klassischen Verwechslungskomödien der 60-er Jahre. Hätte ich schon längst tun sollen.