Ich nehme mal an, dass er nur deshalb das Blinken gesehen hat, weil das CKDIV8 Fusebit noch gesetzt ist....
Noch mal zum Abblockkondensator: Jedes IC mit eigener Spannungsversorgung bekommt immer einen solchen verpasst. Das sollte man als Grundsatz anerkennen und nicht, mit eigenen Erfahrungen begründet, als überflüssig abtun. Man kann auch ohne zu schauen über die Straße laufen.... [-( ....funktioniert auch - je nach Straße....aber nicht immer :twisted:
Problem mit µC
-
-
-
jetzt schrei doch nicht so!
Ich nehme mal an, da ist noch der Pullup vom Pin aktiv. Kathode oder Anode der LEDs am µC?
-
Auch wenn du's zum tausendsten Mal schreibst, wird's nicht besser oder richtiger. Und dass du von absolut NICHTS in Grundlagen der Elektronik und im Umgang mit Microcontrollern eine Ahnung hast, hast du ja in deinen bisherigen Posts in diesem Thread zur Genüge bewiesen. Dies sollte dir klar sein, bevor du hier irgendwelche Leute angreifst, die dir eigentlich nur helfen wollen.
Hinweise auf die falsch verwendeten Befehle, die schlechte Verschaltung und die notwendige Programmierung der Fuse-Bits (bezüglich Auswahl von 8 MHz oder 1 MHz Takt) hast du ja ALLE bekommen. Nur du ignorierst einfach stursinnig alle ernst und gut gemeinten Ratschläge und pochst auf deine mit Verlaub unqualifizierte und zudem noch schlecht beschriebene Beobachtung: "es blinkert ja schon ungefähr so wie ich's haben will, aber mal schneller, mal langsamer und irgendwie zu wenig hell". Dass die ungefähre Übereinstimmung des Geblinkes mit dem Gewünschten daher kommen könnte, dass du bei völlig falschen Voraussetzungen einfach deine ms-Wartezeiten so lange ausprobiert hast, bis ungefähr (aber eben nicht genau, weil die Voraussetzungen absolut nicht stimmen) das rauskommt, was du haben willst, du aber trotzdem keine Ahnung von dem hast, wie eigentlich dein Programm im µC abläuft, kommt dir ja nicht in den Sinn!
Trotzdem nochmal ein Hinweis: Abblockkondesator zwischen VCC und GND (ca 100 nF) ist auf jeden Fall erforderlich (wie auch schon von anderen erwähnt), und den RESET-Pin per Pullup-Widerstand (ca. 10 kOhm) gegen VCC zu schalten, ist auch nicht schlecht. Es kann nämlich sonst sein, dass sich dein µC während des Programmlaufs immer mal wieder selbst resettiert. Auch das kann dann seltsame 'Sequenzen' zur Folge haben. Die Hinweise bezüglich Waitms und Fuse-Bits bleiben aber auch immer noch gültig. Wenn etwas falsch ist, bleibt es eben falsch!Also bitte, verschwende nicht unser aller Zeit (da du ja sowieso nicht auf uns hörst), sondern arbeite dich zuerst einmal gewissenhaft in die Materie ein, bevor du einfach mal so drauflos 'wurschtelst'. Es gibt genügend Tutorials im Web (oder auch Bücher), die dir die wichtigsten Grundlagen der Elektronik (insbesondere die Verschaltung von Digital-Bausteinen) und die korrekte Beschaltung und Programmierung von µCs (im Speziellen AVRs mit BASCOM) nahe bringen können.
Ich hatte mich nach deiner ersten Antwort zu meinem Post eigentlich schon ausgeklinkt, da ich schon bemerkt habe, dass da wohl Hopfen und Malz verloren ist oder einfach allzuviel Erklärungsaufwand von Nöten sein würde. Aber dein letzter undankbarer und aggressiver Post hat mir einfach auf gut Schweizerisch den 'Nuggi' rausgehauen!
Gruss
Neni -
is mir schon klar das ich nich alels weiß aber man kriegt nach ner zeit so schon nen hals wenn man tausen mal schreiben muss das die dinger trotzdem dem blinken wie ich will nur das die halt immer etwas leuchten
-
Zitat von "x-master"
is mir schon klar das ich nich alels weiß aber man kriegt nach ner zeit so schon nen hals wenn man tausen mal schreiben muss das die dinger trotzdem dem blinken wie ich will nur das die halt immer etwas leuchten
ich weiss nicht wo dein problem ist. Du fragst nach Hilfe und wenn dir dann geholfen wird nimmst du diese Hilfe nicht an. Wieso fragst du dann überhaupt? Du scheinst es ja nicht nötig zu haben dir helfen zu lassen.
In diesem Fall schlage ich vor, wir spielen mal öffentlicher Dienst und bestreiken dieses Topic bis du mal die Vorschläge umgesetzt hast.
[-( [-( [-(
-
so leute bevor hier noch mehr rumgemotzt wird hab ich mal die bilder gemacht. das Video kann man sich auch runterladen wie die kolegen blitzen zwar nich in ner super auflösung weil die kamera nich die beste is aber man kann was erkennen. Übrigens die Warte zeit wars nich auch wenn Fünfhunderdtausend leute das meinten ;).
Bevor wieder jemand auf ie schlaue Idee kommt zu fragen ob ich das im Straßen verkehr benutzen will: Nein will ich nich.
[Blockierte Grafik: http://denni16.de.funpic.de/lucas/links.jpg]
[Blockierte Grafik: http://denni16.de.funpic.de/lucas/rechts.jpg]
[Blockierte Grafik: http://denni16.de.funpic.de/lucas/schaltung.jpg]
http://denni16.de.funpic.de/lucas/MOV00016.3GP -
Ok also wie ich den Bildern entnehme hast du den Abblockkondensator und den Widerstand auf Reset eingebaut.
ZitatÜbrigens die Warte zeit wars nich auch wenn Fünfhunderdtausend leute das meinten
Was meinst du damit? Versteh ich grade nicht so ganz.
Ich hätte da noch eine Idee:
Die Seiten hängen ja sicher über einen Transistor an dem AVR. Versuch mal zwischen ausgang des AVR und Masse eine LED mit Widerstand für ca 10mA zu hängen. Brauchste nicht fest verlöten, ich hab auch nich die vermutung dass es hilft, aber bei mir hats schonmal geholfen, zwar am Eingang vom AVR, aber vllt hilfts auch hier. :? -
also mit der wartezeit meine ich, weil jeder zweite meinte, dass die wartesequenz so kurz is das man das blinken nich sieht. Und mit der LEd weiß ich erlichgesagt nich was du jetzt meinst.
PS: Noch ne kurze Frage zum schluss. Ich wollte mir jetzt noch ein paar mehr Blitzfolgen rauf machen. Wie bekomme ich das hin, dass ich mit nem Taster immer zur nächsten schaltung weiter gehen kann?
-
ich würde die einzelnen programme in subroutinen schreiben, dann im hauptprogramm ne if abfrage der tastervariable machen die dann jeweils in die entsprechende subroutine springt und den taster an nen interrupt pin hängen der dann die tastervariable ändert.
zu der sache mit der LED mach ich dir noch n schaltbild.
-
jo währe cool mit dem schaltbild. Also mit den zusätzlichen Programmen hab ich schonmal versucht ich bin nur dran gescheitert nen einzelnen Pin als Input zu declarieren.
-
Ja halt einfach als Input definieren und dann immer nachsehen, ob der 1 oder 0 zurückliefert.
-
würde das ganze so aussehen? Config Pind.1 = Input
-
Zitat von "x-master"
würde das ganze so aussehen? Config Pind.1 = Input
jup genau so.
Schaltbild mach ich dir später, is aber eigentlich ganz einfach -
jo kannst dur ruhig zeitlassen mit dem schaltplan. Funktioniert ja die schaltung.
ich hab hier mal den bascomcode gemacht. Würde das so in etwas dann funktionieren?
[code:1]$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40Config Portb = Output
Config Pind.1 = InputDim Warten As Byte
Warten = 6
Blitz1:
DoPortb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Portb = &B01000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B01000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B01000000
Waitms Warten
Portb = &B00000000
Waitms Warten
LoopIf Pind.1 = 1 Then
Gosub Blitz2Blitz2:
Portb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Loop[/code:1] -
Die Subroutine Blitz2 muss außerhalb des Hauptprogramms stehen, also hinter dem Loop und hinter das GoSub Blitz2 muss ein End (If ?)
So wie du das hast macht das teil einmal einen Blitzdurchlauf normal, wenn der Taster gedrückt ist macht einen anderen Durchlauf und dann wieder den normalen. ich glaube so meinst du das nicht.
Edit: Würe dann so aussehen
[code:1]$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40Config Portb = Output
Config Pind.1 = InputDim Warten As Byte
Dim Taster As ByteTaster = 1
Warten = 6Do
If Taster = 1 Then
GoSub Blitz1
End IfIf Taster = 2 Then
GoSub Blitz2
End IfLoop
Blitz1:
Portb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Portb = &B01000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B01000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B01000000
Waitms Warten
Portb = &B00000000
Waitms Warten
ReturnBlitz2:
Portb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Return[/code:1]edit2: und dann halt noch den Interrupt für den Taster
-
also der soll halt beim trücken des tasters das Programm "Blitz2" starten.
[code:1]$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40Config Portb = Output
Config Pind.1 = InputDim Warten As Byte
Warten = 6
Blitz1:
DoPortb = &B10000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B10000000
Waitms Warten
Portb = &B00000000
Portb = &B01000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B01000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B01000000
Waitms Warten
Portb = &B00000000
Waitms WartenIf Pind.1 = 1 Then
Gosub Blitz2End If
Loop
Blitz2:
Portb = &B11000000
Waitms Warten
Waitms Warten
Waitms Warten
Waitms Warten
Portb = &B00000000
Waitms Warten
Waitms Warten
Portb = &B11000000
Waitms Warten
Portb = &B00000000
Waitms Warten
Portb = &B11000000
Waitms Warten
Waitms Warten
Waitms WartenIf Pind.1 = 1 Then
ReturnLoop[/code:1]
is das so richtig?
-
So wird das nix...
ich bau's mal um.... Den eigentlichen Blitzer habe ich mal rausgelassen, das wird alles zu lang...
[code:1]$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40Config Portb = Output
Config Pind.1 = InputDim Warten As Byte
Dim Taster As ByteTaster = 1
Warten = 6Do
If Pind.1 = 0 Then
Taster = 0
else if Pind.1 = 1 Then
Taster = 1
End IfSelect Case Taster
Case 0 Gosub Blitz0
Case 1 Gosub Blitz1
End SelectLoop
End
Blitz0:
<<HIER GEWÜNSCHTE ROUTINE_0 REIN>>
ReturnBlitz1:
<<HIER GEWÜNSCHTE ROUTINE_1 REIN>>
Return[/code:1]Zu beachten ist noch, dass die Taster nur ausgewertet werden, wenn eine Blitzfolge beendet ist. Und der 2. Blitz wird auch nur dauerhaft benutzt, wenn man die Taste Gedrückt hält.
Alternative Methode mit dauerhafter Umschaltung:
[code:1]$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40Config Portb = Output
Config Pind.1 = InputDim Warten As Byte
Dim Taster As Byte
Dim Taster_max As ByteTaster = 0
Warten = 6
Taster_max = 1Do
If Pind.1 = 0 Then
If Taster < Taster_max then
Taster = Taster + 1
Else
Taster = 0
End IfSelect Case Taster
Case 0 Gosub Blitz0
Case 1 Gosub Blitz1
End SelectLoop
End
Blitz0:
<<HIER GEWÜNSCHTE ROUTINE_0 REIN>>
ReturnBlitz1:
<<HIER GEWÜNSCHTE ROUTINE_1 REIN>>
Return[/code:1] -
ok danke dir. Ich bau das dann mal um
-
irgendwie will das nich so wie es sein soll