Forum: Mikrocontroller und Digitale Elektronik Tiny12 macht Probleme


von Stefan J. (xenon)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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

...

von Stefan J. (xenon)


Lesenswert?

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

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

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

...

von Stefan J. (xenon)


Angehängte Dateien:

Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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

...

von Stefan J. (xenon)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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

...

von Stefan J. (xenon)


Lesenswert?

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?

von Hannes L. (hannes)


Lesenswert?

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
Noch kein Account? Hier anmelden.