Problem mit µC

  • 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:

  • LedBob


    Ich schreibs jetzt zum dritten mal die LED's leuchten schwach !!!!!! dann blinken die in der frquenz wie ich sie haben will!!!!!!!!!!!!! und wenn es zu schnell gehen würde würden sie nur leuchten!!!!!!!!!!!!!! verstanden?????

  • x-master:


    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?

  • 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 = 40


    Config Portb = Output
    Config Pind.1 = Input


    Dim Warten As Byte


    Warten = 6


    Blitz1:
    Do


    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
    Loop


    If Pind.1 = 1 Then
    Gosub Blitz2


    Blitz2:
    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 = 40


    Config Portb = Output
    Config Pind.1 = Input


    Dim Warten As Byte
    Dim Taster As Byte


    Taster = 1
    Warten = 6


    Do


    If Taster = 1 Then
    GoSub Blitz1
    End If


    If Taster = 2 Then
    GoSub Blitz2
    End If


    Loop


    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
    Return


    Blitz2:
    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 = 40


    Config Portb = Output
    Config Pind.1 = Input


    Dim Warten As Byte


    Warten = 6


    Blitz1:
    Do


    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


    If Pind.1 = 1 Then
    Gosub Blitz2


    End 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 Warten



    If Pind.1 = 1 Then
    Return


    Loop[/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 = 40


    Config Portb = Output
    Config Pind.1 = Input


    Dim Warten As Byte
    Dim Taster As Byte


    Taster = 1
    Warten = 6


    Do


    If Pind.1 = 0 Then
    Taster = 0
    else if Pind.1 = 1 Then
    Taster = 1
    End If


    Select Case Taster
    Case 0 Gosub Blitz0
    Case 1 Gosub Blitz1
    End Select


    Loop


    End


    Blitz0:
    <<HIER GEWÜNSCHTE ROUTINE_0 REIN>>
    Return


    Blitz1:
    <<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 = 40


    Config Portb = Output
    Config Pind.1 = Input


    Dim Warten As Byte
    Dim Taster As Byte
    Dim Taster_max As Byte


    Taster = 0
    Warten = 6
    Taster_max = 1


    Do


    If Pind.1 = 0 Then
    If Taster < Taster_max then
    Taster = Taster + 1
    Else
    Taster = 0
    End If




    Select Case Taster
    Case 0 Gosub Blitz0
    Case 1 Gosub Blitz1
    End Select


    Loop


    End


    Blitz0:
    <<HIER GEWÜNSCHTE ROUTINE_0 REIN>>
    Return


    Blitz1:
    <<HIER GEWÜNSCHTE ROUTINE_1 REIN>>
    Return[/code:1]