Alles OK, jetzt bin ich so weit es hat geklappt.
Danke und bis zu den nächsten Fragen.
Grüße
Alles OK, jetzt bin ich so weit es hat geklappt.
Danke und bis zu den nächsten Fragen.
Grüße
Bitte in der Beschaltung noch den obligatorischen 100nF Kerko zwischen Vcc und GND einfügen...
(Und nicht vergessen: Direkt am Controller anlöten weil sonst nutzlos.)
Das stimmt so nicht ganz:
(Und nicht vergessen: Direkt am Controller anlöten weil sonst nutzlos.)
Man kann den ruhig 1-2cm (vielleicht sogar noch mehr) vom Controller entfernt anlöten.
Je näher dran, desto besser. Und je nach Umgebung können 1-2cm auch schon zu viel sein.
Und je nach Umgebung können 1-2cm auch schon zu viel sein.
Hast du da vielleicht ein Beispiel für mich? Ich denke mal bei ihm würden auch 1-2 cm reichen.
Hast du da vielleicht ein Beispiel für mich? Ich denke mal bei ihm würden auch 1-2 cm reichen.
Im KFZ hast du es zB mitunter mit starken Störungen zu tun, da können 1-2cm Leiterbahn schon eine "riesen" Antenne sein, oder generell in dreckiger Umgebung, zB mit viel HF. Alles in allem sind die AVRs aber schon relativ unempfindlich und laufen an den meisten Spannungsquellen und in vielen Umgebungen ganz ohne die Kerkos - sollte man aber trotzdem nie dran sparen, denn spontane Resets sind mehr als lästig und die Fehlersuche oft schwer.
jetzt habe ich die Schaltung aufgebaut, ist auch alles soweit OK. Nur möchte ich die Laufzeit verlängern, ca. 1,5sek sollte die Pause zwischen den einzelnen LED´S sein.
Was und wie muß ich verändern?
in dem Code von Seite 1 steht an einer Stelle "waitms 20" mit der Zahl änderst du die Dauer der Pause(grösser ist länger)
dann das ganze in Bascom compilieren(siehe Bild)
und die erzeugte .hex Datei wie gehabt in den Chip schieben
EDIT: eigentlich sagt die Anweisung "warte 20ms" aber im Code steht oben unter $Crystal dass der Chip mit 8MHz läuft, in wirklichkeit läuft er aber nur mit 1MHz
wenn du Wert darauf legst dass wait 20 auch 20ms sind musst du $crystal=8000000 in $crystal=1000000 ändern
ZitatEDIT: eigentlich sagt die Anweisung "warte 20ms" aber im Code steht oben unter $Crystal dass der Chip mit 8MHz läuft, in wirklichkeit läuft er aber nur mit 1MHz
wenn du Wert darauf legst dass wait 20 auch 20ms sind musst du $crystal=8000000 in $crystal=1000000 ändern
Hier noch als Randbemerkung, der Attiny2313 wird mit 8 Mhz und ClockDiv8 programmed geliefert. Bedeutet, der Interne RC Oscillator ist standardmässig auf 8Mhz eingestellt. Durch das programmierte ClockDiv8 erreicht man: 8Mhz/8 = 1 Mhz.
Diese Standardeinstellung lässt sich natürlich bei Bedarf abändern. Man nennt diese Einstellungen auch Fusebits. Beim verstellen sollte man äußerst vorsichtig verfahren. Man sollte wissen was man tut.... Bei falschen einstellen, kann es passieren, dass man nicht mehr wie gewohnt flashen kann.
Gruß Flo
[Fuse-Bits zur Taktgenerierung]
Bei falschen einstellen, kann es passieren, dass man nicht mehr wie gewohnt flashen kann.
Ja, ist mir schon passiert. Was dann hilft ist ein externer Oszilator mit einer Frequenz zwischen 1 MHz und 8 MHz. Oszilator mit TTL-Signal, kein blanker Quarz. Dessen Taktsignal hängt man an eines der Pins, an das sonst der Quarz käme. Wenn man vorsichtig sein will hängt man einen 1 kOhm Widerstand dazwischen und man muss u.U. beide XTAL Pins durchprobieren. Ich konnte meine zerschossenen ATtinys damit wieder reanimieren.
Wie kann ich den Code umschreiben? Wenn ich den Code in Bascom einfüge sehe ich nur 0er und 1er!
Ich habe mit PonyProg den Attiny beschrieben, nur zur info.
Du musst einfach in Bascom ein neues codefenster öffnen und dort per copy&paste den Code aus diesem Post einfügen.
Das was Du öffnest ist vermutlich die schon compilierte .hex Datei, das klappt nicht.
danke, alles ok
noch eine Frage:
wenn ich nur 6 LED´s benutzen möchte, wie muß ich den quellcode verändern?
Hi,
ich nehme mal an es bezieht sich immer noch auf diesen Quellcode:
'$sim
$regfile = "2313def.dat"
$framesize = 40
$swstack = 20
$hwstack = 20
$crystal = 8000000
Config Pind.4 = Input
Config Pind.5 = Input
Set Portd.4
Set Portd.5
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output ' kannst dann auch weglassen
Config Portb.7 = Output ' kannst dann auch weglassen
Dim Rolo(9) As Byte 'Hier kannst dann Rolo(7) drauß machen
Dim I As Byte
Dim Tmp As Byte
Tmp = 0
I = 0
Rolo(1) = &B00000000
Rolo(2) = &B00000001
Rolo(3) = &B00000011
Rolo(4) = &B00000111
Rolo(5) = &B00001111
Rolo(6) = &B00011111
Rolo(7) = &B00111111
Rolo(8) = &B01111111 ' Die kannst dann auch weg lassen
Rolo(9) = &B11111111 ' Die kannst dann auch weg lassen
Do
If Pind.4 = 0 Then Gosub Hoch
If Pind.5 = 0 Then Gosub Runter
Portb = Tmp
Waitms 20
Loop
Hoch:
If I > 1 Then I = I - 1
Tmp = Rolo(i)
Return
Runter:
If I < 7 Then I = I + 1
Tmp = Rolo(i)
Return
Alles anzeigen
Hab mal das wichtigste in der Abfrage für Runter geändert.
Hab dir im Quellcode noch hingeschrieben, was du dann weg lassen kannst.
Gruß Flo
Ich frag hier einfach mal in's blaue rein:
Dank meines Informatikstudiums hab ich ja ziemlich viel Erfahrung mit dem Programmieren an sich - aber eben ziemlich wenig mit Hardware, was so E-Technik und Elektronik angeht.
Was wäre denn so empfehlenswert an Controller, den man in C programmieren könnte und der zumindest ein paar passende Ausgänge hat, wo man die LEDs ranpacken könnte? So 8 Ausgänge wären denke ich schon ganz passend.
Hier im Forum sind die AVRs von Atmel sehr verbreitet, das sonst auch beliebte Gegenstück dazu wären die PICs von Microchip. Welchen man nimmt hängt natürlich immer von den Anforderungen des Projektes ab, für kleinere Sachen nehme ich meistens den ATtiny2313 für etwas größere den ATmega16. Viele verwenden auch den ATmega8 den ich pers. noch nie benutzt habe. Kommt halt auch drauf an, was die LEDs dadran machen sollen (wegen Flash- und Speichergröße im µC).
EDIT: Das da oben ist zwar Bascom Basic, aber die AVRs kann man natürlich auch mit C programmieren. Das verbreiteste dabei ist wohl AVR-GCC.
eine Frage,
ist es möglich pro Ausgang des ATtiny 2313, 4 LED zu 20mA zu schalten? Insgesam 32 LED. Oder muß ich einen Transistor verwenden?
Sollte es nich möglich sein, gibt es alternativen zum Transistor?
Grüße
Ohne Transe gehts ned, die Belastbarkeit der Ports steht aber auch im Datenblatt.