PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tiny13 Probleme mit Programmierung



gulliver
14.11.2006, 18:35
Hallo

Zur Zeit beschäftige ich mich dem Bau einer Fernsteuerung für eine Kamera. Eine Spiegelreflex mit Fernbedienung paßt z.Z. nicht in meinen Finanzrahmen und sowas, wie einen Laptop mitschleppen ist auch nicht mein Ding. Daher ein Umbau einer Canon A70. Eigentlich keine große Sache. Den Auslösetaster abgegriffen und nach außen geführt und über zwei Mini-Reedrelais die Funktionen Fokus und Auslösen fernsteuern. Direkt über Kabel die Taster schalten geht nicht, weil die Eingänge der Chips schon durch die Antennenwirkung des Kabel reagieren. Erst unter 25 cm klappt es. Daher die Entkopplung mit Reedrelais.

Ich muß dazu noch sagen, daß ich Vögel beobachte und auch fotografieren möchte. Da diese Viecher ja nun den Menschen nicht gerade als Freund betrachten, ist eine Beobachtung nur aus größerer Entfernug mit einem Spektiv oder Teleskop möglich. Da diese auf einem Stativ bei höheren Vergrößerungen bei jede kleinsten Berührung, sei es zum Scharfstellen oder Auslösen der Kamera, in Schwingungen gerät, ist eine scharfe Aufnahme wie eine Lotterie, mal klappt es meistens aber nicht.
Darum habe ich mir eine Möglichkeit ausgedacht, die Kamera ferngesteuert zu fokusieren und auszulösen. Soviel zur Vorgeschichte.

Dazu reicht eigentlich ein 8-Pinner, dachte ich mir, dann fällt auch das Handteil kleiner aus. Die nächste Größe wären ja schon die 20-Pinner, dafür ist aber mein Gehäuse schon wieder zu knapp und Leiterplattenherstellung für SMD beherrsche ich (noch) nicht. Also schlau gemacht, Tiny13 ausgeguckt und losgelegt. Aber ich habe nicht mit Murphy gerechnet und wie es immer so ist, steckt der Teufel im Detail.

Es ist zum Mäusemelken. Seit 3-4 Wochen versuche ich nun diesen ATtiny13 zu programmieren. Weil ich einen Programmernachbau am Rechner nicht zum Laufen bekam, obwohl er von der Schaltung her in Ordnung ist und auch beim Durchschalten per Hand funktioniert. Irgendwie muß das mit den Treibern zusammenhängen. Die spezielle Ponyprogversion für tiny13 erkennt ihn ja auch und programmiert, aber nichts kommt bei raus. Nun habe ich mir dazu durchgerungen, mir ein STK500 ans Bein zu binden. Damit, dacht ich, habe ich dann alle Fliegen mit einem mal erschlagen und brauche mich nicht mehr mit diversen Programmern rumschlagen.

Es ist wie verhext, die beiden tiny13, die ich habe, lassen sich nicht zum Laufen überreden. Das STK500 sagt mir, es ist alles ok, aber die Dinger geben keinen Mucks von sich. Im Simulator läuft das Programm wie gewünscht. Den Kauf des STK500 hätte ich mir nach dieser Schlappe wohl schenken können und beim Nachbau bleiben sollen. Was sollst, nun habe ich diese eierlegende Wollmilchsau nun mal und behalte ihn auch. Mit den sonst verwendeten 2313 und 8515 habe ich überhaupt keine Probleme mit der Programmierung, nur mit diesen Sch.. Tiny's.

Nun habe ich das beigelegte Miniprogramm zum Funktionsnachweis geschrieben und die Fuses in der Defaultstellung belassen. Ich denke, daß Programm sollte anstandslos laufen und ich sehe, da tut sich was und das Teil ist in Ordnung. Aber nein, der Tiny ist störrisch wie ein Esel.

Als Außenbeschaltung sind 2 LED's über 270 Ohm nach +. Die Basis ist über 10 kOhm mit den jeweiligen Pins verbunden. Reset über 10 kOhm an+, Betriebsspannug mit 100n direkt am Pin abgeblockt. Nun sollten die LED's im Wechsel blinken, aber nichts passiert.

Habe ich bei der Programmierung eine evt. Besonderheit des Tiny13 übersehen? Ich weiß nun absolut nicht mehr weiter und bin mit meinem Latein am Ende. Vielleicht kann mir jemand einen Tip geben. Danke schon mal.

mfg Roger

izaseba
14.11.2006, 18:46
Was ich jetzt nicht weiß, was klappt den nicht, das Programmieren an sich, oder das Programm ?

Gruß Sebastian

gulliver
14.11.2006, 23:28
Die Programme laufen nicht.
Das Programmieren scheint zu funktionieren. Ich benutze das AVR-Studio mit dem AVR910-Nachbau und seit kurzem das STK500. Nach allen Schritten, die der Programmer durchläuft, bekomme ich ein ok. Darum kann ich davon ausgehen, daß das Programmieren klappt.

Im Datenblatt steht etwas zum CLKPE-Register, das extra gesetzt sein muß bei Benutzung der Register CLKPS0-3. Nun weiß ich nicht so richtig, ob dieses CLKPE-Register bei der Defaulteinstellung des Fusebits CKDIV8=programmiert auch gesetzt werden muß. Ich hatte es auch schon in mehreren Versionen im Programm eingebaut, aber wenn ich keine Reaktion sehe und auch meßtechnisch nichts überprüfen kann, stehe ich ein bischen blöde da.

Meine Englischkenntnisse sind auch nicht gerade üppig. Dadurch kann es auch sein, daß ich etwas falsch deute und es müssen noch bestimmte Register gesetzt werden.

mfg Roger

izaseba
15.11.2006, 18:31
Hmmm,
Das ist etwas blöd, ich habe zwar ein paar Tinys 13 in der Bastellkiste, bin leider noch nicht dazu gekommen ein Projekt damit zu starten...

Ich habe mir eben kurz das Dattenblatt angeschaut, Fusebit CKDIV8 ist standardmäßig programmiert womit der Takt durch 8 geteilt wird.
Mit dem von Dir genannten Register CLKPR kann man den Divider verändern.

Das hat alles aber mit der Funktion nichts zu tun !

Wenn es blinken soll würde es schon blinken, nur halt langsamer oder schneller.

Ich würde sagen daß man den Programmiertakt am STK 500 runtersetzen sollte, aber wenn Du sagst das Programm wird richtig übertragen :-k sehr komisch.

Ich hab meine Tinys 13 nur als smd hier, aber ich Bau eben einen Adapter, mal schauen, ob es bei mir klappt, melde mich gleich.

Gruß Sebastian

izaseba
15.11.2006, 19:42
So, ich habe es probiert und zwar habe ich dieses (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=20950&postdays=0&postorder=asc&highlight=tiny13&start=22) Blinkibunti Programm von mir auf Tiny 13 aufgespielt.

Tja, was soll ich sagen...
Mein STK 500 blinkt wie verrückt ( ich habe die Fuses nicht verändert)

Hast Du auch PORTE RST mit PB5 und PORTE XT1 mit PB3 zum Programmieren verbunden, so wie es in der Bedienungsanleitung steht ?

meine STK Einstellungen waren:



avrdude> parms
>>> parms
Vtarget : 5.1 V
Varef : 2.5 V
Oscillator : 3.686 MHz
SCK period : 10.9 us
avrdude> quit

wobei das meiste wohl nicht wichtig ist.

Vielleicht hast Du im Programm was verbockt ? Kannst Du mal posten...
Sonst kannst Du mein Blinkibunti Programm vielleicht probieren ?

Sonst kann ich Dir leider nicht weiterhelfen :-(

Gruß Sebastian

gulliver
16.11.2006, 11:03
Ein Listing meines Miniprogrammes hatte ich zwar als Attachment angehängt, aber irgendwie hat man darauf keinen Zugriff.
Habe leider noch keine vernünftige Hilfe finden können, wie man in einem Beitrag ein aufklappbares scrollbares Listing oder einen Download für Listings o.ä. einfügt. Egal, füge ich es eben in diesem Post ein.

Testen tu ich hauptsächlich auf dem Steckbrett. Das STK500 ist mir etwas zu undurchsichtig und zu wertvoll, um es wegen einer falschen Polung über den Jordan zu schicken. Es scheint eine mehr als zweilagige Platine zu sein, wo man die Leiterzüge nicht alle sieht.

Die Masse dürfte auf allen Anschlüssen durchgängig sein, ich hab's aber nicht durchgemessen. Es geht mir hauptsächlich um die VTG-Anschlüsse. Auf Seite 3-2 des Handbuches sind sie als spannungzuführende Anschlüsse zu sehen. Da ist an den Switches- uns den LED-Anschlüssen jeweils nur einer und ich weiß nicht so richtig, wie ich die Taster und LED's einzeln verschalten soll. Das Handbuch redet nur von den 10-poligen Flachbandkabel, aber ein Tiny13 hat aber nur einen Port, da bin ich nun mal gezwungen, das Ganze aufzuteilen, wenn ich Taster und LED's gleichzeitig benutzen will. Nun ich weiß, das gehört eigentlich in die Hardwareabteilung, aber man kann ja einen Beitrag kaum über mehrere Sparten splitten.

In vergangenen Beiträgen ist mir auch aufgefallen, daß einige Probleme mit ihren MCU's hatten. Die liefen auf dem STK500 aber außerhalb nicht. Diese Beiträge haben mich aber wegen nicht vorhandenem STK interresiert und habe sie nicht weiter verfolgt. Ist mir gerade so eingefallen und diese Beiträge noch mal, zu suchen ist mir zu mühselig.

Nun hier das Miniprogramm. Wie gesagt, es toggelt nur zwei Ausgänge und soll mir nur zeigen, ob die MCU überhaupt zuckt.
Auf irgendwelche Interrupts und Timer habe ich dabei ganz bewußt verzichtet, um nicht in irgendwelche Fallen zu tappen.

;************************************************* ****************************
; Test des ATtiny13 auf Funktion
;
; MCU: ATtiny13; interner Takt=9,6MHz
;
; macht nichts weiter, als zwei Ausgänge zu toggeln
;************************************************* ****************************
;
.nolist
.include "C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn13def.inc"
.list
;
; Konstanten
.equ maske1 = 0b00001000
.equ maske2 = 0b00010000

; Register
.def mp = R16
;
; Interruptvektoren
rjmp main
;
; ====================================
; Warteschleifen-Generator ca. 0.5 sek
; ------------------------------------
warten:
ldi R20, $25
WGLOOP0: ldi R21, $B8
WGLOOP1: ldi R22, $EA
WGLOOP2: dec R22
brne WGLOOP2
dec R21
brne WGLOOP1
dec R20
brne WGLOOP0
; =============================
ret
;
;************** Hauptprogramm ********************************
main:
ldi mp,low(RAMEND)
out SPL,mp
;
; Hardware initialisieren
ldi mp,0x00
out PORTB,mp
out DDRB,mp

; Toggle-Schleife
loop:
rcall warten
ldi mp,maske1
out PORTB,mp
rcall warten
ldi mp,maske2
out PORTB,mp
rjmp loop
;
.exit

Auf dem AT90S2313 rennt es jedenfalls wie Schmitt's Katze.

mfg Roger

izaseba
16.11.2006, 17:51
Hmm,
Du toggelst die Pullups an den Pins und nicht die Ausgänge,
eine Kleinigkeit hast Du wohl vergessen


; Hardware initialisieren
ldi mp,0x00
out PORTB,mp
out DDRB,mp


Mach mal



; Hardware initialisieren
ldi mp,(1<<PB3)|(1<<PB4)
out DDRB,mp
ldi mp,0x00
out PORTB,mp



Damit sollte es mal laufen...

P.S.

um ein Programm zu posten benutzt Du [ code ] und [ /code ] Tags, allerding ohne Leerzeichen zwischen :-)

Und STK500 ist robuster als Du denkst, glaub mir ich spreche aus Erfahrung :wink:

Die LED's und Taster kannst Du auch ohne 10 Pol. Kabel anschließen, einfach PIN.. mit LED.. oder SW.. verbinden, fertig.

LED's sind allerdings LOW aktiv d.h 0V leuchtet 5V aus,
Taster haben Pullups und ziehen den Pin beim drücken auf LOW.

Ich hoffe, daß ich Dir helfen konnte.

Gruß Sebastian

gulliver
17.11.2006, 09:01
Oh Gott, jetzt stehe ich aber da wie ein Trottel. Ist mir richtig peinlich. Da ich Low Current-LED's benutzt habe und die Pin's als Eingang geschaltet waren, haben die LED's praktisch den Eingangsstrom geliefert und es ist mir nicht mal aufgefallen. Sowas kommt bei raus, wenn man ganz schnell mal was zusammenstrickt und dabei eine Zeile Code vergißt.
Normalerweise kommentiere ich meinen Code und da wäre es mir dann aufgefallen, aber bei diesem einfachen Schnipsel habe ich es nicht für nötig befunden und ist es auch nicht.

Trotzdem, danke für deine Mühe. Ich werde doch auf den 2313 zurückgreifen. Die Scharfstellung am Teleskop werde ich auch über einen kleinen Schrittmotor und Schneckengetriebe fernsteuern. Dies ist mir bei meinem vorletzten Post eingefallen. Dazu brauche ich ein paar Signale mehr und dafür reichen die paar Pin's am tiny13 nicht mehr.
Das Programm ist ja nicht das Thema, es ging ja um das Inbetriebnehmen des Tiny. Damit muß ich selbst klarkommen. Hätte sein können, daß es bei den Tiny's einige Besonderheiten gibt.

Mit dem Code_einfügen habe ich auch rumgespielt und mir dies in der Vorschau angesehen, aber da erschien kein Fenster. Eben hatte ich es noch mal probiert und alles war paletti. Weiß der Geier, was da schiefgelaufen war. Irgendwie scheint mir z.Z. das Pech zu verfolgen.

Damit beende ich dieses Thema und wünsche ein schönes Wochende.

mfg Roger

izaseba
17.11.2006, 16:10
Naja, es muß Dir nicht peinlich sein, es gibt sicher schlimmeres :-)
Hauptsache die Ehre der Tinys ist gerettet !

Gruß Sebastian

oberallgeier
07.10.2007, 18:35
Hallo, Alle,

meine Frage passt (noch gerade) zum Thema:

Ich lese eben in einem online - AVR-Handbuch zum STK500 (http://www.atmel.com/dyn/resources/prod_documents/doc1939.pdf), dass die kompatiblen ATtiny-Typen NUR ~11, ~12, ~15, ~22, ~26 und ~28 sind.

Stimmt es, dass man darauf z.B. den tiny13 NICHT verwenden kann? Nach diesem tread geht das aber doch? Ist die Dokumentation von Atmel sooo besch--veraltet ?

Da ich gerade überlege mir so ein board zuzulegen, wäre ich für euren Rat sehr dankbar.

izaseba
07.10.2007, 18:49
Hi oberallgeier,
Was meinst Du?
Ob Du auf dem STK500 T13 programmieren kannst ?
Klar doch, STK500 wächst mit dan Produkten von Atmel mit.
Ich sag mal so, mit jeder neuen AVRStudio Version, gibt es eine neue Firmware für den STK und damit werden neue AVRs "aktiviert"
Ich hatte schon Tiny25 problemlos drauf gehabt, und den gab es noch nicht zu dem Zeitpunkt, als mein STK gebaut wurde ;-)

Lade Dir die neueste AVRStudio version, und schaue da unter tools/Stk500 oder so, da müßte es eine aktuelle Liste geben.

Gruß Sebastian

oberallgeier
07.10.2007, 19:06
Danke izaseba! Ja, das war die richtige Antwort.

izaseba
07.10.2007, 19:13
Ja, das war die richtige Antwort.

Das hoffe ich doch stark, willst Du Dir ein STK500 holen ?

oberallgeier
07.10.2007, 22:19
Also - ja, ich bin recht sicher.

Ich habe meine erste(n) Erfahrung(en) mit dem "Lernpaket Mikrocontroller" von Kainka/Franzis gemacht am tiny13. Und immerhin läuft die erste selbstgestrickte Mikro-Platine mit einem Blink-Pacer prächtig.

Aber nun - ich vermisse doch die eine oder andere Möglichkeit in diesem Einführungspaket. Fusebits auslesen und setzen (und nicht nur die Einstellung des internen Oszillators), mal auch den Speicher auslesen und so (hoffe doch, dass das geht). Und ich sehe, dass dieses Board schon von Haus aus mehr Möglichkeiten bietet als mein derzeitiges Minimalpaket oder ein selbstgestrickter Aufbau auf einer Steckbrett-Strickliesel.

](*,) und das TV-Programm wird schliesslich auch immer schlechter ](*,) ... :cheesy: