• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Fragen zu Programmiergeräten und zur Programmierung der uC

Finckenbande

Geocacher
Hallo,

ich habe mit meinem myAVR USB MK 2 auch noch keinen Weg gefunden "runtergefuste" (auf 128kHz und Teiler 8) wieder neu zu flashen - also wer hier nen Tipp oder eine unterstützende Programmersoftware kennt (oder die passende Einstellung bei der myAVR Software) dem Danke ich im voraus sehr !!
Ich habe kein Fallback Parallelkabel ...

Gruß
Henrik
 

Teddy-Teufel

Geoguru
Finckenbande schrieb:
Hallo,

ich habe mit meinem myAVR USB MK 2 auch noch keinen Weg gefunden "runtergefuste" (auf 128kHz und Teiler 8) wieder neu zu flashen - ...
Gruß Henrik

Wenn Du willst schicke sie mir, ich habe schon einmal Jemanden helfen können. Vergiß die gewünschten Einstellungen und das Rückporto nicht.
 

upigors

Geowizard
Finckenbande schrieb:
.....also wer hier nen Tipp oder eine unterstützende Programmersoftware kennt ....
die Software kann nichts dafür, die Programmer unterstützen die niedrigen Frequenzen nicht.
Ich hab nun mittlerweile 5 Stk. getestet, keiner kommt nach dem umfusen mehr an den Controller.
Aber heute kam meine Express Card mit LPT Ausgang. Morgen früh werde ich testen. (Nachdem ich nach 3 Tagen Arbeit hoffentlich die bisher aufwendigste Station meiner Bastellaufbahn fertig hab)
Grüße
Uwe
 

upigors

Geowizard
Teddy-Teufel schrieb:
Moin Uwe, habe jetzt mal am Laptop getestet, es klappt wie einwandfrei, Einstellungen des Ports auf EPP und dann in Bascom die entsprechenden Einstellungen, wie im Backbuch beschrieben und schon funktioniert der alt bewährte, selbst gebaute Programmieradapter.
Dann viel Erfolg.
Welche Expresscard hast du?
ich hab eine von delock, die liefert keine Software und somit keine Einstellmöglichkeit auf EPP mit. Ich hab nun zwar in den Druckereinstellungen einen LPT zur Auswahl aber in Bascom bekomme ich mit Universal MCS Interface" und "WinAVR und SP12" keine Verbindung. Ich werd hier noch blöde..... :kopfwand:
 

Finckenbande

Geocacher
Teddy-Teufel schrieb:
Finckenbande schrieb:
Hallo,

ich habe mit meinem myAVR USB MK 2 auch noch keinen Weg gefunden "runtergefuste" (auf 128kHz und Teiler 8) wieder neu zu flashen - ...
Gruß Henrik

Wenn Du willst schicke sie mir, ich habe schon einmal Jemanden helfen können. Vergiß die gewünschten Einstellungen und das Rückporto nicht.

Vielen Dank für die angebotene Hilfe, aber es waren nur 2 verfuste Attinys; da lohnt ja quasi das Porto nicht mal - aber irgendwann werde ich die rein aus Spass mal wiederbeleben - mit nem Parallebrenner oder vielleicht auch mal an das Thema Hochvolt ranwagen.

@upigors: ich dachte mir sowas ja schon fast - aber das ist dann von Dir auch nochmal die Bestätigung. Ich glaube, ich werde demnächst einfach nicht mehr runterfusen ...
 

chrysophylax

Geomaster
Finckenbande schrieb:
Hallo,
ich habe mit meinem myAVR USB MK 2 auch noch keinen Weg gefunden "runtergefuste" (auf 128kHz und Teiler 8) wieder neu zu flashen - also wer hier nen Tipp oder eine unterstützende Programmersoftware kennt (oder die passende Einstellung bei der myAVR Software) dem Danke ich im voraus sehr !!
Ich habe kein Fallback Parallelkabel ...
Gruß
Henrik

Bescheid: Nachdem ich heute jemandem Tinies entfusen konnte und dazu nicht mal meinen HV-Programmer auspacken musste kann ich bestätigen: Der avrISP MK2 kann weit genug runtergetaktet werden.

Ich nutze (widerwillig ;) ) AVR Studio 4.18 Build 692, mein avrISP MK2 ist Hardware-Rev 0x01 und Firmware-Version 0x010d.

Damit ließ sich ein auf 128kHz runtergetakteter Tiny13 problemlos wieder auf 9,6MHz bringen, das Ganze war auch problemlos mehrfach reproduzierbar.

Nur falls noch jemand mit der Kombi arbeitet.

chrysophylax.
 

Anhänge

  • Runtergetaktet.png
    Runtergetaktet.png
    8,4 KB · Aufrufe: 413

chrysophylax

Geomaster
Nachtrag, nur um die Verwirrung komplett zu machen: Ich vermute mal, ein myAVR USB MK 2 ist etwas völlig anderes als ein avrISP MK2 von Atmel, den ich meine. Mein Programmer ist der von Atmel als Entwicklungswerkzeug empfohlene, der gerade z.B. bei Reichelt für 39,95€ (war auch schonmal billiger....) angepriesen wird und aussieht wie das Ding auf anhängendem Bild.

Ab Werk kommt er mit dem 6poligen isp-Kabel von Atmel, ich hab meinen umgerüstet auf das 10polige isp-Kabel, weil die wenigen Altlasten, die ich damit noch betreuen noch den damals gängigen 10poligen Programmierstecker haben.

chrysophylax.
 

Anhänge

  • avrISP_MKII.jpg
    avrISP_MKII.jpg
    34,8 KB · Aufrufe: 410

upigors

Geowizard
Gestern kam mein "myavr mk2" , der kann die runtergefusten in bascom auch lesen, ändern, schreiben, wenn auch etwas widerwillig. Muss mich da am Montag mal genauer mit befassen... werde berichten... jetzt ist erstmal Wochenende ;-)
 

Finckenbande

Geocacher
Nee, war zum Glück nicht verwirrend, da ich gelesen habe, dass myAVRMK2 etwas anders ist als der avrusb MK2.
@upigors: bei mir hat der nie mehr was mit dem attiny geredet, egal welche Einstellungen ich bei der Übertragungsrate gemacht habe ... was meinst Du mit zickig/widerwillig ??

Vielleicht kann ich sie ja doch noch retten ...
 

upigors

Geowizard
@Finkenbande
unter anderem bekomme ich Meldungen wie:
error, programmer did not respond to command: leave progmode
error, programmer did not respond to command: write byte
programmer not responding
und noch einige andere Meldungen.
Und dabei ist es Banane ob 128kHZ oder 9,6MHz
wobei Bascom trotzdem die Operation meistens ausführt. hab eben mal die Fuses geändert und wieder auf default gestellt und wieder auf Werte laut Kochbuch.... und wieder hin und zurück.... das klappt schon auch wenn man hin und wieder mal Bascom schliessen und wieder öffnen muss oder usb ziehen....
Gelegentlich antwortet das Programm auch gar nicht mehr und hängt.... kann aber auch der programmer der auslöser sein

Fazit: Bei mir klappt es prinzipiell wenn auch nicht immer aber das perfekte Tool zum runter/hochfusen ist es (für mich) immer noch nicht. Ich hab damit noch keinen Attiny verloren, das Teil läuft über USB und das ist es was zählt....
 

upigors

Geowizard
kann mir mal bitte jemand auf die Sprünge helfen....
Ich versuche eine Temperatursteuerung (via 1wire) bzw. den Code eben dieser vom Mega8 auf den AT13 umzubasteln. Finde den Mega8 für 2 LED und den Sensor etwas "mit Kanonen auf Spatzen geschossen"
Mit folgendem Schnipsel gibt es aber Probleme beim Erstellen der HEX:

Code:
Dim Max_temp As Single
Max_temp = 30

fehler 1 : "out of SRAM Space"
fehler 2: "Assignment error"

Hat jemand ne Idee warum?
 

Ranseiher

Geocacher
Hi,
Idee hab ich schon, ob´s stimmt wollen die Profis sagen:


fehler 1 : "out of SRAM Space"
zu viel Code für den Kleinen?
Kann man da nicht mit HWStack Platz für die Variablen schaffen?

fehler 2: "Assignment error"

Ist imho ein Folgefehler, da er
Dim Max_temp As Single

nicht ausführen kann (Fehler 1) .

Könntest du den ganze Code mal reinschreiben?
Würde mich persönlich auch interessieren.

lg
Ranseiher
 

upigors

Geowizard
jupp, moment....
Edit:



Code:
$regfile = "ATtiny13.DAT"
$crystal = 1000000


' Variable für maximale Temperatur (bei Erreichen dieser wird umgeschaltet)
Dim Max_temp As Single
Max_temp = 30

' Sensoranschluss definieren
Config 1wire = Portb.3                                      ' Sensor DS18S20

' Ausgänge für LEDs definieren
Config Portb.2 = Output                                     ' grüne LED
Config Portb.4 = Output                                     ' rote LED

' Variable für Sensorwert
Dim Temp_s As Byte                                          ' Variable für Messwert
Dim Temp As Single                                          ' Variable für umgerechneten Messwert

Do

  ' Sensor initialisieren
  1wreset
  ' ROM-Befehl überspringen - Wird nur benötigt, wenn man mehrere Sensoren
  ' gleichzeitig verwendet
  1wwrite &HCC
  ' Messung starten
  1wwrite &H44

  ' Eine Sekunde verzögerung um sicherzu gehen, dass die Messung durchgeführt
  ' wurde.
  Waitms 1000

  ' Sensor neu initialisieren
  1wreset
  ' ROM-Befehl erneut überspringen
  1wwrite &HCC
  ' Gemessene Temperatur aus dem Scratchpad des Sensors auslesen
  1wwrite &HBE
  ' Den gemessenen Wert schreiben wir in die zugehörige Variable
  Temp_s = 1wread(1)

  ' Da der gemessene Wert gleich Temperatur * 2 ist, müssen wir den Wert noch
  ' entsprechend umrechnen
  Temp = Temp_s / 2

  ' Wenn Temperatur kleiner als Max_temp, grüne LED an
  If Temp < Max_temp Then
    Portb.2 = 1
    Portb.4 = 0
  ' Wenn Temperatur größer oder gleich Max_temp, rote LED an
  Elseif Temp >= Max_temp Then
    Portb.2 = 0
    Portb.4 = 1
  End If

  ' Kurze Pause vor Neustart - Dies ist ansich nicht notwendig, spart jedoch auf
  ' Dauer Batterieleistung ein
  Waitms 1000

Loop

End

mit $hwstack und $swstack hab ich schon ein wenig experimentiert, das wurde aber eher schlimmer mit diversen Fehlern......
 

stonewood

Geowizard
Moin,

kurze (bzw. lange Antwort): http://halvar.at/elektronik/kleiner_bascom_avr_kurs/speicher_hwstack_swstack_frame/

Bei bascom gibts hwstack, swstack, frame - und den 'Variablenbereich', also das wo alles mit 'DIM' hingepackt wird. Beim Tiny13 muß alles in das SRAM passen, was ja mit 64 Byte nicht wirklich reichlich da ist. Also: hwstack/swstack/frame kleiner setzen, dann passen auch mehr variablen rein. Am besten alles explizit setzen.
 

Ranseiher

Geocacher
Hi,

ich hab leider noch nicht wirklich Zeit gehabt, aber wenn man den HWstack kleiner macht,
funktionieren wenigstens alle Variablen.
Leider ist das Programm dann aber noch immer zu groß (104%)

Wie wäre es wenn du diese Umrechnung raus nimmst:
Code:
Temp = Temp_s / 2

Code:
Temp_s = 1wread(1)
in
Code:
Temp = 1wread(1)
änderts und oben
Code:
Max_temp = 30
in
Code:
Max_temp = 60
änderst.

Sollte dann reinpassen.
Ok, nicht die feine Art, eher quick and dirty

lg
Tom
 

upigors

Geowizard
Danke für die Antworten....
@Ranseiher: wie hast Du den $hwstack denn verändert?
Kannst Du mir die Werte für hwstack/swstack/frame vielleicht sagen mit denen es bei dir funktioniert hat?
Ich hatte ein wenig probiert ich glaub 20 und 100 (bin mir aber nicht mehr sicher und meine Aufzeichnungen liegen im Büro)
Da ich das Thema Speicher verschieben aber noch nicht 100% verstanden hab war das eben nur ein hilf- und erfolgloser Versuch.
Die Änderungen hatte ich noch nicht im Visier, da das kompilieren ja nicht geklappt hat und ich nicht gesehen hab das ich knapp über den 100% liege.
Wird nächste Woche mal getestet, jetzt ist Wochenende und Wellnesshotel und nicht kleine schwarze Käfer auf dem Plan :D
 

stonewood

Geowizard
upigors schrieb:
Danke für die Antworten....

Kannst Du mir die Werte für hwstack/swstack/frame vielleicht sagen mit denen es bei dir funktioniert hat?
Ich hatte ein wenig probiert ich glaub 20 und 100 (bin mir aber nicht mehr sicher und meine Aufzeichnungen liegen im Büro)
100? das geht bei 64 max. schon mal gar nicht.

Dein Programm hat kein gosub/return, keine Interrupts d.h.
Code:
$hwstack=0
würde reichen.

Selbiges gilt für swstack:
Code:
$swstack=0

.... und sogar frame wird quasi gar nicht gebraucht, und da reicht der Minimalwert (ich glaube 20):
Code:
$framesize=20

Damit sind dann viiiele Bytes für Variablen frei. :D (genauer gesagt wären das 64-20=44 bytes - so ca. das Maximum was man erreichen kann)

Wichtig ist halt nur daß jede Verschachtelungstiefe mehr hwstack/swstack/framesize braucht, und dann weniger für Variablen da ist.

(ach ja: ungetestet!)
 

stonewood

Geowizard
Ranseiher schrieb:
Wie wäre es wenn du diese Umrechnung raus nimmst:
Code:
Temp = Temp_s / 2
Jo, würd ich auch empfehlen. Allein weil ein Tiny nicht dividieren kann, und das daher in software gemacht wird. Aber für '/2' gibts ja noch einen tollen Befehl:
Code:
SHIFT Temp,RIGHT[,1]
bascom-avr schrieb:
Shifting a variable to the right, divides the variable by two.

Ach ja, das gleiche gilt speziell beim Tiny auch für die Multiplikation, der kann das auch nur in Software (und generiert dadurch einen Haufen code ...).
 

stonewood

Geowizard
stonewood schrieb:
Jo, würd ich auch empfehlen. Allein weil ein Tiny nicht dividieren kann, und das daher in software gemacht wird. Aber für '/2' gibts ja noch einen tollen Befehl:
Code:
SHIFT Temp,RIGHT[,1]
So, getestet. Änderungen:
Code:
$hwstack = 0
$swstack = 0
$framesize=20
Code:
'Temp = Temp_s / 2
Shift Temp_s , Right
Temp = Temp_s
(ja, das ist nicht optimal ...)

und schon sind's nur noch 78% statt 104%
 
Oben