Forum: Mikrocontroller und Digitale Elektronik Unterschied Programmierung ATMega32 zu ATTiny2313


von Christoph D. (christoph85)


Lesenswert?

Hallo Leute,

ich möchte ein Programm schreiben, welches in der Lage ist über RS232 
einige ATMega Typen zu beschreiben (ähnlich PonyProg). Mit einem 
ATMega32 funktioniert mein Programm auch. Jedoch ist es nicht möglich 
einen ATTiny 2313 zu beschreiben. Weitere Typen habe ich noch nicht 
getestet. Ich kann im Datenblatt keinen Unterschied bei der 
Programmierung von ATMega 32 und ATTiny2313 erkennen. (Der Tiny 
funktioniert mit Pony Prog)
Vielen dank

von Timmo H. (masterfx)


Lesenswert?

Zu wenig Infos. Dein Programm läuft also auf dem Tiny, aber das 
Programmieren eines anderen AVRs geht damit nicht?!

von Christoph D. (christoph85)


Lesenswert?

Hallo Timmo
Nein genau andersherum. Einen ATMega 32 kann ich beschreiben (also auch 
auslesen, schreiben und löschen).
Bei einem ATTiny funktioniert nur das auslesen korrekt, beim Schreiben 
und Löschen passiert nichts.
Auf dem ATTiny laufen ist der falsche Ausdruck. Ich habe kein Programm 
geschrieben, was etwas auf dem uC auslöst. Ich habe ein Programm 
geschrieben, was den uC beschreibt (ein Pony Prog Clon wenn du so 
willst).

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Versuch mal langsamer zu takten! Der Tiny läuft ab werk mit 500 khz wenn 
ich das richtig in erinnerung habe!

von Christian U. (z0m3ie)


Lesenswert?

Die Tinys benutzen ein anderes Pollingverfahren. Bzw können nicht alle.

von Christoph D. (christoph85)


Lesenswert?

8Mhz sollte der Takt ab Werk sein, ich habe auch andere Taktraten durch 
die Fuse Bits und andere Verzögerungszeiten in meinem Programm versucht. 
Dies hat leider keinen Erfolg.

von Hannes Lux (Gast)


Lesenswert?

Dir ist bewusst, dass die Pagegrößen unterschiedlich sind?

...

von Christoph D. (christoph85)


Lesenswert?

ja ich denke das habe ich richtig in meinem Quellcode beachtet
ATTiny hat größe 16word
ATMega32 hat 64word

von Christoph D. (christoph85)


Lesenswert?

es scheint doch ein TimingProblem zu sein, danke Leute
@Christian, was meinst du mit Polling?

von Christian U. (z0m3ie)


Lesenswert?

Hast du das Datenblatt mal gelesen ?
Die Abfrage ob der Flash schon programmeirt ist nennt sich polling. 
Deshalb gibt es auch kein festes Timing, das kann selbst von Controller 
zu Controler etwas variieren.

von Christoph D. (christoph85)


Lesenswert?

Das Lesen und schreiben eines AT Tiny funktioniert nun. Das Chip Erase 
funktioniert jedoch nicht.
@Christian: Du meinst, dass es einen Befehl gibt, der guckt ob im Tiny 
nicht nur FF drin steht, sondern schon Programmcode und dieser Befehl 
muss vorher abgefragt werden?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Christoph Day wrote:
> 8Mhz sollte der Takt ab Werk sein, ich habe auch andere Taktraten durch
> die Fuse Bits und andere Verzögerungszeiten in meinem Programm versucht.
> Dies hat leider keinen Erfolg.
8Mhz ist der Takt ab werk, aber mit der CHKDIV/8 Fuse sind es dan 
nurnoch 1 Mhz.

von Christian U. (z0m3ie)


Lesenswert?

Bist du wirklich zu Faul mal ins Datenblatt zu gucken ? Es steht doch 
alles drin. Du musst eine Seite laden und dann den befehl zum flashen 
geben. Danach wartest du entweder eine festlegegte Zeit die sich von 
Controller zu Controller unterscheidet oder du pollst. Beim polling 
gibts glaub ich 3 verschiedene Verfahren und nicht jeder Controller 
unterstützt jedes.

Zitat aus dem Datenblatt des Tiny2313:
The Flash is programmed one page at a time. The memory page is loaded 
one
byte at a time by supplying the 4 LSB of the address and data together 
with the
Load Program Memory Page instruction. To ensure correct loading of the 
page,
the data low byte must be loaded before data high byte is applied for a 
given
address. The Program Memory Page is stored by loading the Write Program
Memory Page instruction with the 6 MSB of the address. If polling 
(RDY/BSY) is
not used, the user must wait at least tWD_FLASH before issuing the next 
page. (See
Table 77 on page 178.) Accessing the serial programming interface before 
the
Flash write operation completes can result in incorrect programming.

von Christoph D. (christoph85)


Lesenswert?

@Christian
Das schein ich doch richtig beachtet, zu haben, wenn ich den uC 
beschreiben kann ?

von Christian U. (z0m3ie)


Lesenswert?

Wenn hinterher auch wirklich das richtige drin steht ja. Nur sollte dann 
die Frage nach dem polling gar nicht erst aufkommen ?!
Chip Erase funktioniert immer dazu muss man nur den richtigen Befehl 
hinschicken. Solang man dem Chip dann nicht zu früh die Stromversorgung 
klaut was fast nie vorkommt ist alles gut.

von Christoph D. (christoph85)


Lesenswert?

Das ist eben mein Problem, schreiben und lesen geht korrekt, aber das 
löschen nicht. Muss ich vlt zum korrekten Chip Erase noch die Security 
oder Fuse Bits setzen?

von Christian U. (z0m3ie)


Lesenswert?

Nein nur das richtige Kommando hinschicken glaub mir.

von Christoph D. (christoph85)


Lesenswert?

und die Timins unterscheiden sich auch nicht beim Tiny zwischen Lesen, 
Schreiben und Löschen?

von Christian U. (z0m3ie)


Lesenswert?

Soweit mir bekannt nicht, genaueres siehe Datenblatt.

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.