• 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

peter51d

Geocacher
Wie blind muss man eigendlich sein? :kopfwand:

Der Reset war es.

Hatte im Schaltbild des Programmers beim überfliegen nur den Jumper 2 gesehen, der in der Resetleitung liegt und da JP2 nicht gesetzt ist, die Resetleitung zwischen Tiny und Programmer weg gelassen. Hat ja eh keine Funktion.
Hätte ich sofort richtig hin gesehen, hätte ich vielleicht auch die Verbindung vom Controler des Programmers zum Pfostenstecker gesehen, die nicht über JP2 geht.

Also Reset mit angeschlossen und siehe da, jetzt wird der Tiny auch erkannt.
Zumindest meisstens.

Da der Programmer ja über USB versorgt wird, gehe ich davon aus, das es mit 5V arbeitet.
Da werde ich wohl mal das Labornetzteil rauskramen und den Tiny auch 5V gönnen, zumindest zum Proggen.

Danke erst mal :gott:

Mal sehen, wie lange es dauert, bis ich die nächste blöde Frage habe.

@ stonewood

Die 10K gegen + Spannung habe ich mir aus dem Anschaltbild für den Mega8 auf Fundf.net gezogen.
Im Moment will ich auch gar nicht isp Proggen. Wollte mir einen kleinen Adapter mit passendem Sockel zusammen löten, wo ich den Tiny dann einfach einstecke zum Proggen. Du hast ja auch den USBasp, könnte ich mir die ext Spannung schenken, wenn ich JP1 setze? Verträgt der USBasp und eine normale USB Schnittstelle am PC/Laptop das? Würde den Adapter natürlich deutlich verkleinern und ich hätte nicht mehr solche Bauchschmerzen wegen unteschiedlicher Potentiale in der Schaltung.

Gruß

peter51d
 

stonewood

Geowizard
peter51d schrieb:
Die 10K gegen + Spannung habe ich mir aus dem Anschaltbild für den Mega8 auf Fundf.net gezogen.
Im Moment will ich auch gar nicht isp Proggen. Wollte mir einen kleinen Adapter mit passendem Sockel zusammen löten, wo ich den Tiny dann einfach einstecke zum Proggen. Du hast ja auch den USBasp, könnte ich mir die ext Spannung schenken, wenn ich JP1 setze? Verträgt der USBasp und eine normale USB Schnittstelle am PC/Laptop das? Würde den Adapter natürlich deutlich verkleinern und ich hätte nicht mehr solche Bauchschmerzen wegen unteschiedlicher Potentiale in der Schaltung.
Vertrau mir, Du willst 'ISP proggen' ;) . Oder willst Du den Tiny nicht flashen? Die Programmierschnittstelle nennt sich auch schon mal ISP.

Beim Verwenden von usbasp kann man die USB-5V auch durchschalten, dann darf aber nicht anderweitig irgendwas an Versorgungsspannung angeklemmt sein. USB kann ohne Probleme 500 mA liefern, den Atmel also sogar mit ordentlich Strom versorgen. Falls Du da aber was falsch machst ist ganz schnell der USB-Port vom Rechner hin. Für einen reinen Adapter ohne weitere Beschaltung ist das aber kein Problem, und ich habe auch schon oft die restliche Schaltung gleich mit vom Laptop aus versorgt.
 

peter51d

Geocacher
Vielleicht habe ich da was falsch verstanden.
ISP hab ich als "in Schaltung Programmieren" verstanden.
Sinngemäss, ich habe mein z.B. Reaktivlicht, habe an der Platine einen Anschluss und progge dann den Chip, praktisch "im" Reaktivlicht.

Im Moment möchte ich die Tiny's lieber "extern" proggen.
Also Dil 8 Sockel an den Programmer, Tiny proggen und anschliessen in die Schaltung setzen.
Dann werde ich meinen Adapter wohl noch mal umlöten und im USBasp den JP1 setzen.
Mal sehen, was passiert.

Und dann hoffe ich nur noch, dass das AVR Lehrbuch bald kommt.

Weil im moment hab ich noch ein riesen Brett vor dem Kopf, was die Prorammierung angeht.

Gruß

peter51d
 

thomas_st

Geowizard
peter51d schrieb:
ISP hab ich als "in Schaltung Programmieren" verstanden.
Im Prinzip hast Du das richtig verstanden. ISP steht für "in system programming" (1), was aber nicht heißt, dass das nur "in system" funktioniert. Vielmehr ist das eine Art und Weise den Tiny zu programmieren, die im eingebauten Zustand funktioniert bzw. funktionieren kann. Das geht aber genauso im ausgebauten Zustand. Die Alternative dazu wäre bei Atmel der so genannte high voltage (2) Programmiermodus, bei dem 11,5 bis 12,5 V am /RESET-Pin angelegt werden müssen (3). Da letzteres im eingebauten Modus gewisse Nebenwirkungen hervorrufen kann ;), unterscheidet man eben ISP: kann auch im eingebauten Zustand funktionieren und HV: bitte, bitte den Tiny vorher ausbauen.

peter51d schrieb:
Im Moment möchte ich die Tiny's lieber "extern" proggen.
Kein Problem, allerdings spricht auch in diesem Fall der Programmer "ISP". :)

peter51d schrieb:
Und dann hoffe ich nur noch, dass das AVR Lehrbuch bald kommt.
Ich empfehle in der Zwischenzeit mal ein Besuch von http://www.mikrocontroller.net/ und anschließend eventuell mal die Lektüre des Datenblatts zum Tiny (das vom Tiny 13 ist ja auch nur 179 Seiten lang ;) ).

Viele Grüße,
Thomas(_st)
___________________
(1) Das Datenblatt spricht allgemein von "Serial Programming" bzw. "Serial Downloading"
(2) Das Datenblatt nennt es "High-voltage Serial Programming"
(3) Bevor jetzt einer auf die Idee kommt mal einfach 12V am /RESET-Pin anzulegen und den ISP-Programmer auf den Rest los zulassen: die 12V sind nur eine von mehreren Unterschieden
 

peter51d

Geocacher
Und wieder was gelernt.

Für den Anfang wollte ich doch nur ein Reaktivlicht bauen.
Hatte mir gedacht, ich nehm nen Tiny, das Programm aus dem Kochbuch in Bascom kopiert, compilieren, schreiben und gut.
Aber das war wohl nichts. :cry:

Nicht mal ein einfaches setzen eines Ausgangs bekomme ich hin. :???: .
'Ausgangstest

$regfile = "ATtiny13.DAT"
$crystal = 113000 'Reale Frequenz des internen 128kHz-Oszillators

Ddrb = &B00000010 'PB1 ist Ausgang. Die anderen Pins sind Eingänge

Portb.1 = 1 'Signal auf PB1 einschalten (HIGH)

End

Werde wohl noch eine Menge lernen müssen.

Gruß

peter51d
 

stonewood

Geowizard
peter51d schrieb:
Nicht mal ein einfaches setzen eines Ausgangs bekomme ich hin. :???: .
'Ausgangstest

$regfile = "ATtiny13.DAT"
$crystal = 113000 'Reale Frequenz des internen 128kHz-Oszillators

Ddrb = &B00000010 'PB1 ist Ausgang. Die anderen Pins sind Eingänge

Portb.1 = 1 'Signal auf PB1 einschalten (HIGH)

End

Werde wohl noch eine Menge lernen müssen.
Versuch mal als erste Näherung
Code:
$regfile = "ATtiny13.DAT"
$crystal = 113000                               'Reale Frequenz des internen 128kHz-Oszillators
Ddrb = &B00000010                         'PB1 ist Ausgang. Die anderen Pins sind Eingänge
Portb.1 = 1                                                 'Signal auf PB1 einschalten (HIGH)
waitms 10000
Portb.1 = 0
End

Ansonsten ist Dein Programm ja gleich zuende und der Tiny macht nen reset.

Übrigens sollte folgendes das gleiche machen, das 'Config Portb' wirst Du dann aber auch im Koch-buch finden:

Code:
$regfile = "ATtiny13.DAT"
$crystal = 113000                               'Reale Frequenz des internen 128kHz-Oszillators
Config Portb = &B00000010                         'PB1 ist Ausgang. Die anderen Pins sind Eingänge
Portb.1 = 1                                                 'Signal auf PB1 einschalten (HIGH)
waitms 10000
End

ps: warum wird 'Koch-buch' eigentlich in 'Kochbuch' umgesetzt?!? Seltsame Fipptehlerfuktion ...
 

bhogi

Geonewbie
bhogi schrieb:
Jetzt habe auch ich ein System, wie im backbuch beschrieben, aufgesetzt und war sehr positiv überrascht, dass es auf Anhieb funtionierte. Schnell mal ein paar Testprogramme geschrieben, alles prima. :rollsmile:

Ich merkte allerdings auch, dass der Speicher der ATtiny13 mit 1kB recht klein ist. Also habe ich mir den ATtiny25 (2kB) und ATtiny45 (4kB) besorgt. Pinbelegung uvm sieht gleich aus. Ich bekomme aber keine Verbindung zu dem µC. Die Fehlermeldung ist:


Could not identify chip with ID: FFFFFF

Sobald ich den ATtiny13 einlege, funktioniert wieder alles.

Mittlerweile habe ich die Schaltung ein zweites Mal aufgebaut, alles mögliche andere überprüft und/oder ausprobiert, aber ohne Fortschritt. :ka:

:hilfe: Wer kann mir helfen? :hilfe:

Erfahrungsbericht, oder wie es weiterging:

Nach diesen ersten Experimenten im März (s.o.) habe ich einen USB-Programmer ersteigert (diesen hier: http://j.mp/gQpnfV). Diesem Thread nach war/ist er wahrscheinlich zu schnell eingestellt. Ich hatte jedenfalls nicht genug Geduld, ihn an den Start zu bekommen.

Im Herbst hatte ich dann wieder etwas Zeit und Gelegenheit für 30 Euro ein gebrauchtes STK200 zu kaufen. Das funktionierte auf Anhieb problemlos. Einfach schön, wenn mal was problemlos funtioniert. Alle drei CHip-Typen wurden problemlos erkannt und konnten programmiert werden. Wenn jetzt wieder Zeit ist, kann das Programmieren beginnen.

Der USB-Programmer ist jetzt über. Wer will ihn mir abkaufen?
 

Finckenbande

Geocacher
Ich denke mal, der Thread ist der richtige für meine Frage:
ich möchte (eigentlich relativ einfach) 8 Taster an einem yController (genauer: Attiny 2313) erkennen. Prinzipiell soll in Abhängigkeit der Taster etwas auf dem Display (hängt an Port D) ausgegeben werden bzw. eine Aktion passieren (hängt an mehreren seriellen Schieberegistern).
Mein Gedanke dazu war, den Interrupt PCINT an Port B zu benutzen und immer wenn er ausgelöst wird irgendwie die gerade anliegenden Tasten zu lesen und eine Hilfsvariable zu setzen.

Versuch 1:
(einfach nach dem auslösen des Interrupts die Pineingänge lesen) schlug fehl:
On Pcint On_pcint
Enable Pcint
Enable Interrupts
Pcmsk = &B11111111
On_pcint:
if pinb.0 = 1 then
hilfsmerker =1
endif
if pinb.1=1 then
hilfsmerker=2
endif
usw....

Versuch 2:
liefert in der Hauptschleife immer komische Werte, die auch "0" sein können, obwohl nie auf "0" mit nem Interrupt gesetzt wird ...

On Pcint On_pcint
Enable Pcint
Enable Interrupts
Pcmsk = &B11111111 On_pcint:
Debounce Pinb.0 , 0 , 8press , Sub
Debounce Pinb.1 , 0 , 1press , Sub
Debounce Pinb.2 , 0 , 2press , Sub
Debounce Pinb.3 , 0 , 3press , Sub
Debounce Pinb.4 , 0 , 4press , Sub
Debounce Pinb.5 , 0 , 5press , Sub
Debounce Pinb.6 , 0 , 6press , Sub
Debounce Pinb.7 , 0 , 7press , Sub
Return

1press:
Zahl = 1
Return

2press:
Zahl = 2
Return

3press:
Zahl = 3
Return

4press:
Zahl = 4
Return

5press:
Zahl = 5
Return

6press:
Zahl = 6
Return

7press:
Zahl = 7
Return

8press:
Zahl = 8
Return


Wer kann mir helfen ?? Wer hat vielleicht einen sinnvollen Codeschnippsel, um mehrere Tasten nach einem (Soft- d.h. PCINT-)Interrupt abzufragen ??

Ich hoffe, ich bin hier richtig, sonst gebt mir einen Hinweis ...

Gruß
Henrik
 

thomas_st

Geowizard
Finckenbande schrieb:
On_pcint:
Debounce Pinb.0 , 0 , 8press , Sub
[...]Debounce Pinb.7 , 0 , 7press , Sub
Return
Zählst Du irgend wo etwas, oder wird einfach als statische Logik in Abhängigkeit der Tastendrücke auf dem Display etwas ausgegeben? Wenn das nämlich so ist, ist das Tastenprellen nur ärgerlich aber nicht funktionsrelevant.

Ich kenne die Funktionsweise der debounce Routine nicht - bitte mal abklären, ob die in einer ISR benutzt werden darf.

Finckenbande schrieb:
Wer hat vielleicht einen sinnvollen Codeschnippsel, um mehrere Tasten nach einem (Soft- d.h. PCINT-)Interrupt abzufragen ??
Die Idee ist IMO richtig - ich hätte nur den aktuellen Status der Eingangspins ohne debounce gelesen und entsprechend einen Text auf dem Display ausgegeben (dabei beachten, das die Displayaussgabe eine gewisse Zeit benötigt).

Kann es sein, dass Du den PC-IRQ noch aktivieren musst - oder reicht das Bitmuster aus (in Tiny selbst sind das zwei Operationen: Bitmuster setzen und PC-IRQ aktivieren; aber vielleicht automatisiert bascom hier ja)

Finckenbande schrieb:
Ich hoffe, ich bin hier richtig, sonst gebt mir einen Hinweis ...
Unter "Frragen zur Software" hätte es besser gepasst.

Viele Grüße,
Thomas(_st)
 

hcy

Geoguru
Hallo zusammen,

ich wollte auch mal anfangen "richtig" AVR zu programmieren (hab bisher nur ein bisschen mit dem Arduino rumgespielt) und dazu ein Reaktivlicht lt. Kochbuch bauen. Jetzt stelle ich aber fest, dass ich mit meinem Programmer (http://shop.myavr.de/Programmer/mySmartUSB%20light.htm?sp=article.sp.php&artID=200006) da nicht mehr an den Chip komme wenn die Taktfrequenz bei 128kHz oder sogar niedriger liegt.
Gibt's da evtl. einen Hack wie man das mit dem mySmartUSB light doch geht? Ist die Stromaufnahme bei >1MHz signifikant höher? Das Timing in den Programmen würde sich ja auf jeden Fall schon mal ändern, oder? Brauche ich einen anderen Programmer?
 

Teddy-Teufel

Geoguru
hcy schrieb:
Hallo zusammen,...
ich wollte auch mal anfangen "richtig" AVR zu programmieren (hab bisher nur ein bisschen mit dem Arduino rumgespielt) und dazu ein Reaktivlicht lt. backbuch bauen. Jetzt stelle ich aber fest, dass ich mit meinem Programmer ...
Moin, ich bin ein Verfechter des selbstgebauten Programmieradapters aus dem Koch buch. Es gibt viele Leute hier, die es dann auch eingesehen haben und auf so ein Ding umgestiegen sind. Ich programmiere damit 13-er und 24-er.
Das mag gewiß Ansichtssache sein aber ich stehe auf dem Standpunkt, mit dem geringsten Aufwand das Ziel zu erreichen.
 

hcy

Geoguru
Leider besitze ich (seit Jahren) keinen Rechner an dem es noch einen Parallelport oder RS232 gibt.
 

hcy

Geoguru
Teddy-Teufel schrieb:
Trotzdem diese "Ausrede" zählt nicht guckst Du hier oder hier. :D
PCI-Karte scheidet aus weil nur Notebooks vorhanden, die Expresscard ist dann fast so teuer wie ein Programmer, dann würde ich eher den nehmen. Zumal ich bei dem Adapter nicht wüsste ob und wie der unter Linux läuft (am MacBook hab ich gar keinen Slot dafür). Denn Windows kommt mir nicht ins Haus.

Die Frage war auch eher ob man den mySmartUSB light nicht doch irgendwie dazu bringen kann langsamer zu werden oder das Reaktivlicht mit mehr Takt zu betreiben.
 

Teddy-Teufel

Geoguru
hcy schrieb:
Die Frage war auch eher ob man den mySmartUSB light nicht doch irgendwie dazu bringen kann langsamer zu werden oder das Reaktivlicht mit mehr Takt zu betreiben.
Da kann ich leider nichts zu sagen aber Thomas oder Schnasemann haben da bestimmt mehr Ahnung.
 

Lion251

Geocacher
Teddy-Teufel schrieb:
Trotzdem diese "Ausrede" zählt nicht guckst Du hier oder hier. :D
Express-Cards gibt es auch billiger, siehe z.B. hier.
Leider funktionieren nicht alle Parallel-Express-Cards auch für Programmiergeräte: siehe die Kommentare in meinem Link.
Bei Express-Cards gibt es Versionen, die intern nicht am PCI-Bus hängen, aber am USB.
Und die meisten Programmiergeräte mögen das nicht...
Also: der von mir verlinkte funktioniert höchstwahrscheinlich nicht, über den von Reichelt kann ich leider keine Aussagen machen.
 

thomas_st

Geowizard
hcy schrieb:
Gibt's da evtl. einen Hack wie man das mit dem mySmartUSB light doch geht?
Sorry, kann ich nicht sagen - ich kenne das Teil leider nicht.

hcy schrieb:
Ist die Stromaufnahme bei >1MHz signifikant höher?
Nein! Zumindest nicht bei den "normalen" Reaktivlichtprogrammen, wo der Tiny zwischen den Arbeitsphasen schlafen geschickt und dann per Watchdog wieder geweckt wird. Siehe Dir mal diesen Thread an - danach wäre die Stromaufnahem bei ca. 1MHz sogar am niedristen. Der Grund für dieses Verhalten: der Tiny ist nach einer kürzeren Zeit mit der Arbeit fertig und kann in den Strom sparenden Schlaf versetzt werden.

hcy schrieb:
Das Timing in den Programmen würde sich ja auf jeden Fall schon mal ändern, oder? Brauche ich einen anderen Programmer?
Nicht unbedingt. Wenn Du den $crystal Wert (ich denke mal Du programmierst mit bascom) richtig setzt, sollte Bascom das relevante selbst anpassen (betrifft ADC und waitms). Der Watchdog wird sowieso von einem eigenen 128kHz Generator versorgt.

Viele Grüße,
Thomas(_st)
 

hcy

Geoguru
Danke für die Hinweise. In Basic wollte ich eigentlich nicht programmieren, lieber in C (oder Assembler, da sieht man wenigstens wirklich was passiert). Außerdem gibt's Bascom nur für Windows, oder?

L.t myAVR soll's auch irgendwann eine Firmware für den o.g. Programmer geben die weiter runter kommt mit der Taktfrequenz, aber so wie Du schreibst gibt's ja eigentlich keinen Grund mit 128kHz oder weniger zu arbeiten.
Das Thema Watchdog muss ich mir da noch mal anschauen, aber Fragen dazu passen ja nicht in diesen Thread.
 

thomas_st

Geowizard
hcy schrieb:
In Basic wollte ich eigentlich nicht programmieren, lieber in C (oder Assembler, da sieht man wenigstens wirklich was passiert).
Die C-Fraktion ist hier so klein, dass ich inzwischen pauschal von Bascom ausgehe ;)

Bei WinAVR (ok, ok, auch windows) wäre F_CPU anzupassen, dann würden zumindest die _delay_xy Funktionen sich dem neuen Takt anpassen; den Teiler des ADC musst Du sowieso von Hand anpassen; Watchdog nicht, da eigener Taktgeber.

HTH,
Thomas(_st)
 

Windi

Geoguru
hcy schrieb:
Jetzt stelle ich aber fest, dass ich mit meinem Programmer (http://shop.myavr.de/Programmer/mySmartUSB%20light.htm?sp=article.sp.php&artID=200006) da nicht mehr an den Chip komme wenn die Taktfrequenz bei 128kHz oder sogar niedriger liegt.

Hast Du auch die richtige Firmware auf deinem Programmer?
Laut Produktbeschreibung sollte er das schon können:

Produktbeschreibung schrieb:
die Firmware, mit der er ausgeliefert wird, verfügt über einen automatischen Step-Down-Modus:

* für Controller, die auf langsameren Taktquellen unter 1 MHz umgeschaltet wurden und die sich bisher nicht mehr mit der Standard-ISP-Geschwindigkeit ansprechen ließen
 
Oben