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
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.
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
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.