Hallo! Ich habe mir ein paar Tiny12's gekauft und wollte sogleich zum Test eine LED blinken lassen. Wenn ich dieses Programm in einen Tiny13 brenne, dann funktioniert es auch tadellos(an PB0 blinkt die LED). Mit dem Tiny12 sieht es da ganz anders aus: Wenn man den Kontakten des Experimentierboardes näher kommt, leuchtet die Led teilweise kurz auf aber von blinken ist trotzdem nichts zu sehen. Könnte dies vielleicht an einem fehlenden Pull-Up am Reset oder dergleichen sein? Sodass das Programm momentan ständig von vorne beginnt? An den Fuse Bits habe ich noch nichts geändern, d.h. der Tiny läuft noch mithilfe des internen Oszillators. MfG Xenon
Tiny12 und Tiny13 sind unterschiedlich mit Hardware ausgestattet, ein Tiny13-Programm, was Tiny13-Hardware (Timer, ADC...) anspricht, wird auf dem Tiny12 nicht laufen. Ein funktionierendes Beispiel findest du zwei Mausklicks entfernt unter fast dem selben Betreff: http://www.mikrocontroller.net/forum/read-1-339481.html#339498 ...
Also ich habe das Programm in Bascom geschrieben und als regfile ist die Tiny12def eingestellt. Daher müsste das Programm auch auf dem Tiny12 laufen. Zum Test habe ich die Hex (ohne die def zu ändern) in den Tiny13 geschrieben und es lief. Das Problem liegt also am Tiny12
> Das Problem liegt also am Tiny12
Das glaub' ich nicht...
Hast du den Link verfolgt und das Programm assembliert und getestet?
Für den Fall, dass du nicht selbst assemblieren kannst, hänge ich dir
die Hexdatei an. Berichte ob es klappt.
...
Also ich habe deine hex-Datei in den Tiny12 programmiert aber ohne Erfolg :( Dann habe ich noch einmal ein leichtes Blinklicht in Assembler erstellt(es werden sicher keine Timer verwendet sondern nur leichte Komponenten; bei Bascom bin ich mir da nicht so sicher) und in den Tiny12 gebrannt. Wieder nur Reaktionen wenn man an den Drähten wackelt aber kein blinken. Dann habe ich die Hex die eig die TN12def.inc eingebunden hat in den Tiny13 gebrannt und siehe da die LED blinkt. Der eine Tiny12 dürfte aber nich kaputt sein, da ich es bereits mit zwei neuen von Reichelt getestet habe. Im Anhang ist die asm. Mfg Xenon
- Du hast eine geeignete Versorgungsspannung (5V)? - Du hast einen Widerstand (3k..10k) vom Reset-Pin vach Vcc? - Du hast einen Keramik-Kondensator 100nF direkt am AVR an Vcc-GND? - Du hast geeignete Vorwiderstände (150 Ohm..1k) zwischen Portpins und LEDs? - Du bist sicher, dass du die Fuses nicht verstellt hast? - Du bist sicher, dass zu keinem Zeitpunkt eine höhere Spannung als 5V oder eine verpolte Spannung angelegen hat? Dann wirst du den Tiny12 wohl zum Schrott erklären müssen (aber nicht in die Restmüll-Tonne werfen, das ist inzwischen verboten!). Ich hatte einen neuen Tiny12, der hatte nach dem zweiten Flashen das Problem, dass sich 3 Flash-Zellen nicht mehr löschen ließen. Die große Masse lebt zwar länger, aber es kommt durchaus vor, dass mal einer beizeiten stirbt. ...
Schonmal vielen Dank für die Hilfe Hannes! Also mit Pull-Up Widerstand am Rest-Pin hat der Assembler Code auch auf dem Tiny12 funktioniert!! Jetzt bleibt nur noch ein kleines Problem: Und zwar funktioniert der Bascom-Code nur auf dem T13 nicht aber auf dem T12. Der Code: $regfile = "at12def.dat" $crystal = 1200000 Ddrb = &B1 Do Portb.0 = 1 Wait 1 Portb.0 = 0 Wait 1 Loop Ich vermute, dass Bascom das wait mithilfe eines Timers in Assembler um setzt und der Tiny12 nicht dazu kompatibel ist?!? Gibt es eine andere Lösung? Ansonsten muss ich halt das Programm in Assemlber verfassen, was in diesem Fall auch kein Problem wäre. Jedoch für die Zukunft fände ich es schön wenn der Tiny12 auch voll und ganz mit Bascom zu nutzen ist. MfG Xenon
Der Tiny12 kann unter BASCOM nur auf die Portpins zugreifen. Richtig gesehen, kann man ihn mit BASCOM quasi nicht programmieren. Ansonsten frag mich nicht zu BASCOM. Die mangelnde Transparenz ist der Hauptgrund, warum ich diesen "Baukasten" meide, obwohl ich auf anderen Plattformen fast nur in BASIC programmiere. Für kleine Projekte auf AVRs lohnt sich eine Hochsprache nicht, für größere AVR-Projekte taugt der Baukasten BASCOM nicht. Daher programmiere ich AVRs nur in Assembler. Siehe auch www.hanneslux.de ...
Ok! Dann werde ich es in Assembler machen. Ich würde nur gerne wissen wie es am besten/einfachsten geht den uC für ca 15 Stunden nichts machen zu lassen. Geht das irgendwie mit einem Watchdog oder so?
Der Watchdog ist sehr ungenau. Nimm den Timer und realisiere eine Uhr. Calibriere dazu den Oszillator, damit es wenigstens halbwegs genau wird. ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.