anderer Atmega8 von Reichelt

Gast #2055974
Lesenswert?

Hallo!
Ich habe bei Reichelt 10 Atmega8 bestellt.
auf diesen läuft mein Programm "teilweise" und nicht immer.
Hat Aussetzer.
Mit anderen Atmega8, die ich früher hatte, war alles ok.
Habe jetzt alle 10 geflasht, fuse bits gesetzt wie immer.
Das Problem wiederholt sich immer.
Habe dann einen alten Atmega8 genommen, mit der SELBEN hex-Datei 
geflasht (war in PonyProg noch offen), und es läuft alles wie gewohnt.
Was kann das sein?

Auf den neuen µC steht
Atmel  1045
ATMEGA8-16PU

auf dem alten
Atmel  0716I
ATMEGA8-16PU

Stimmt da was mit der Charge nicht, oder was zum Teufel ist da los?

PS: Ich bin mir 100% sicher, dass die Fuses und HEX Dateien die selben 
sind.
Gast #2056010
Lesenswert?

Tja, konkrete Antwort muß ich dier hier mal schuldig bleiben, aber über 
Reichelt liest, hört und erlebt man in letzter Zeit sehr viel Negatives:
Preistreiberei, minderwertige Qualität, ja, sogar Produktfälschungen.
Das alles mit steigender Intensität seit die Bude wohl verhökert wurde.
Ich hatte vor einigen Wochen auch noch ein paar Atmega8 von dort 
bezogen, sie aber noch nicht verwendet. Das kann ja eventuell auch bei 
mir noch heiter werden.
Dabei komme ich immer mehr zu dem Entschluß, Reichelt mal längere Zeit 
zu meiden. Mal sehen wie sich das noch entwickelt!?

Gruß, unikum.
Gast #2056022
Lesenswert?

Also, ich konnte noch weitere 3 Atmega8 aus früheren Basteleien 
auftreiben.
Ich klicke in PonyProg auf Fusebits (die Einstellung bleibt immer 
gleich, sobald man das nicht selbst ändert), dann write.
Danach den Flash Speicher noch füllen.
Tatsache ist, bei ALLEN 3 alten Atmegas geht alles wunderbar, bei ALLEN 
10 neuen der selbe Fehler.
Ich kann mir das nicht erklären.
@unikum
Kannst du, bitte schauen, was bei deinen µC Rechts von "atmel" steht?

Danke
#2056033
Lesenswert?

Das was rechtes von Atmel steht, wird die Chargenummer, oder 
Herstelldatum sein. Also mal die Eratas studieren, ob es da mal an für 
dein Programm entscheidender Stelle mal ein Problem gab.
Ansonsten könnten natürlich noch "lächerliche" Fehler deinerseits die 
Ursache sein: fehlende Resetbeschaltung, Abblock-C's, offene Eingänge, 
die vielleicht auf aktiver Interupts gehen, oder sonstwas. Kann durchaus 
sein, daß die neuen etwas empfindlicher auf sowas reagieren.
Gast #2056057
Lesenswert?

Hallo Mike,
ich muß mich etwas korrigieren. Mein Kauf stammt schon vom November 
letzten Jahres, wie doch die Zeit vergeht! Naja.
Der Aufdruck lautet demnach: 1013G
Aber, wie schon hier berichtet ist das ja das Herstellungsdatum. Ob Dir 
das was bringt?
Hast Du jetzt schon den Schweinepreis von 3,90 oder so bezahlt?

Gruß, unikum.
Gast #2056066
Lesenswert?

Sorry, ich kann mit meinem English das nicht so ganz begreifen:
Interrupts may be lost when writing the timer registers in the 
asynchronous timer
Was heisst das? Übersetzen kann ich das, nur Verstehen klappt nicht 
ganz.

Ich benutze schon Interrupts, aber keinen Timer im Programm.
Das Programm reagiert auf Interrupt (ein Pin wird gelowert), aber die 
SPI Kommunikation findet nicht immer statt (ob komplett fehlt, oder 
fehlerhaft ist, weiss ich noch nicht).

Gruss Mike
Gast #2056098
Lesenswert?

@holger
Sorry, schreibe leider in Bascom
 Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , 
Phase = 0 , Noss = 1 , Clockrate = 16

Erklärung:
Syntax for hardware SPI
CONFIG SPI = HARD, INTERRUPT=ON|OFF, DATA ORDER = LSB|MSB , MASTER = 
YES|NO , POLARITY = HIGH|LOW , PHASE = 0|1, CLOCKRATE = 4|16|64|128 , 
NOSS=1|0 , SPIIN=value

>Wenn du SPI meinst, dann setz den SS Pin mal auf Ausgang.

Warum funktioniert das dann mit den alten µC?

Danke
Gruss Mike
Gast #2056106
Lesenswert?

>>Wenn du SPI meinst, dann setz den SS Pin mal auf Ausgang.

>Warum funktioniert das dann mit den alten µC?

Die reagieren evtl. nicht ganz so empfindlich wenn
der SS Pin offen und ein Eingang ist. Meine Erfahrung
mit offenem SS Pin: Einmal mit der Hand zu nah an die Schaltung
und SPI ist tot. Handy daneben reicht auch schon. Reines Glücksspiel;)
Gast #2056147
Lesenswert?

ja, die unbeschalteten Pins sind ganz am Anfang des Programms (als 
erstes nach der µC Konfiguration) als Ausgänge gesetzt.

Ich kann mir schon vorstellen, dass es am Programm liegen könnte, aber 
das hat doch schon früher so IMMER funktioniert, und ich habe viele von 
diesen Platinen gebaut. Mit der selben Belichtungsvorlage usw.

Danke
Gruss Mike
Gast #2056148
Lesenswert?

Laut Speck und laut Bascom-Doku muss man den SS im Hardware-Master-Modus 
selber(!) setzen - ggf. aus Ausgang oder wenigstens per Pullup 
festhalten. Wenn der SS im Mastermodus Input ist und Low geht, dann geht 
der SPI in den Slavemodus [1]:
1
Serial Peripheral Interface – SPI
2
[..]
3
/SS Pin Functionality
4
[..]
5
Master Mode
6
[..]
7
If /SS is configured as an output, the pin is a general output pin which
8
does not affect the SPI system. Typically, the pin will be driving the /SS
9
pin of the SPI Slave.
10
If /SS is configured as an input, it must be held high to ensure Master SPI
11
operation. If the /SS pin is driven low by peripheral circuitry when the SPI
12
is configured as a Master with the /SS pin defined as an input, the SPI
13
system interprets this as another Master selecting the SPI as a Slave and
14
starting to send data to it. To avoid bus contention, the SPI system takes
15
the following actions:
16
1. The MSTR bit in SPCR is cleared and the SPI system becomes a Slave. As a
17
   result of the SPI becoming a Slave, the MOSI and SCK pins become inputs.
18
2. The SPIF Flag in SPSR is set, and if the SPI interrupt is enabled, and
19
   the I-bit in SREG is set, the interrupt routine will be executed.
20
[..]

Einfach mal testen, koscht ja nüscht.

HTH

[1] aus: Datenplatt vom m8 
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf Seite 129
Gast #2056181
Lesenswert?

@g457
Danke für Deine Mühe, aber ich denke nicht, dass es das Problem ist.
Link: 
http://avrhelp.mcselec.com/config_spi.htm?zoom_highlightsub=SPI%2Bconfig
Hier noch mal meine SPI Konfiguration:

Config Portb.2 = Output
........
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , 
Phase = 0 , Noss = 1 , Clockrate = 16

"NOSS = 1 or 0. Use 1 when you do not want the SS signal to be generated 
in master mode."


@holger
Nein, kein kompletter Hänger des µC/Programms

Der µC sendet gelegentlich die GLEICHEN Daten per SPI an einen anderen 
IC.
Der Empfänger reagiert manchmal auf die Daten nicht.
Das heisst wenn es 1 mal pro minute eine 8 Byte-lange Nachricht gesendet 
werden soll, kann das sein, dass es einmal (angenommen nach 5 minuten) 
nicht ankommt, dann gehts aber weiter, dann fehlen wieder die Daten.

Kann jetzt leider nicht sehen, ob der SPI komplett nicht sendet, oder 
"Müll" sendet.

DAnke
Gruss Mike
#2056359
Lesenswert?

Was willst du erwarten es ist ein ATMEL :)

Nein, Spass beiseite. Ich wuerde nochmal gezielt darauf schauen, was 
sich in der Zeit am Chip getan hat (Erratas, Silicon Revisions). Es kann 
ja durchaus sein, dass du irgendwo in nem Randbereich arbeitest, was bei 
dem alten Kontroller funktioniert hat. Der neue ist aus irgendwelchen 
Gruenden empfindlicher, Atmel hat aber beispielsweise die ganzen Werte 
nicht nochmal extra geprueft (oder geaendert und weist nicht explizita 
daruaf hin). Ich kann mir naemlich nicht vorstellen, dass das ein Fehler 
von Reichelt ist.
Gast #2056428
Lesenswert?

Hallo,

also ich kenne dieses Problem! Bei uns funktionierten ALLE Atmega8 mit 
einem "G" so wie von TE beschrieben eben NICHT. Ich kann das Problem 
nicht eingrenzen. Ich habe viele ältere Atmega8 getestet (gar kein 
Buchstabe hinter dem Datumscode, I oder N ...) Egal welche, alle 
funktionieren so wie es erwartet wird. Nur die mit "G" wollten irgendwie 
nicht richtig.

Unser Programmierer hat dann das Program grundlegend überarbeit und nun 
funktioniert es mit jedem Chip. Leider kann er auch nicht sagen welche 
Änderung das nun bewirkt hat.

Also ich konnte zwar nicht helfen aber zumindest die Beobachtung von 
Mike bestätigen...

grüße
#2056550
Lesenswert?

Jan S. schrieb:
> Andreas schrieb:
>> Unser Programmierer hat dann das Program grundlegend überarbeit und nun
>> funktioniert es mit jedem Chip. Leider kann er auch nicht sagen welche
>> Änderung das nun bewirkt hat.
>
> Also eben Software Fehler....

Nicht unbedingt!
Kann auch bedeuten: Hardwarebug in der neuen µC Revision Umschifft!

Wenn ich das so lese dann weiß ich schon warum ich häufiger PICs 
einsetze. Wenn ich da einen Baustein bestelle bekomme ich auch genau 
denselben Baustein wie seit Jahren... Die neuen Revisionen werden am 
Namen kennlich gemacht -
Das kann ganz schön nervig werden wenn sich die µCs einer Serie 
unterschiedlich verhalten und man nur irgendwie anhand des Datecodes 
nach erhalt schätzen kann was man genau in den Händen hat! Vorzugsweise 
in kritischen Projektphasen tritt soetwas dann auf.
Daher sollte es eigendlich ein No-go sein funktionsverschiedene 
Versionen zu haben die man bei der Bestellung nicht auseinanderhalten 
kann.

Gruß
Carsten
#2056563
Lesenswert?

Ich habe von Atmel nicht den Eindruck, das Hardware Bugs verschwiegen 
werden.
Und funktional unterschiedliche Versionen der AVRs wurden bislang auch 
mit neuen Bezeichnungen gekennzeichnet.

Ich muss meine Behauptung allerdings auf Software- oder 
Hardwaredesignfehler ändern.

Es gibt ne Menge Fehler im Platinenlayout, welche man durch eine 
Softwareänderung noch umschiffen kann. Z.B.:
Langsameres Timing bei Leiterbahnen mit zu hoher Kapazität oder 
Induktivität.
Nicht mehrere Pins zeitgleich schalten, wenn man Ground-bounce hat.

Da gibts so einiges was man tun kann...
#2056606
Lesenswert?

Carsten Sch. schrieb:
> denselben Baustein wie seit Jahren... Die neuen Revisionen werden am
> Namen kennlich gemacht -
ähm... nein.

> Daher sollte es eigendlich ein No-go sein funktionsverschiedene
> Versionen zu haben die man bei der Bestellung nicht auseinanderhalten
vielleicht sollte man aber auch einfach nur den eigenen fehler in der 
eigenen software finden?
#2056609
Lesenswert?

Ich würd mal an den /SS-Pin (PB2) nen Pullup 1k ranpappen.
Wenns dann geht, stimmt doch was mit der Init-Reihenfolge nicht oder er 
wird zwischendurch mal floatend gesetzt.

Dann kannst Du noch nen Gegentest mit den alten M8 machen, d.h. einen 1k 
Pulldown an /SS und auch die alten gehen nicht mehr.

Daß sich verschiedene Chargen bei nem floatenden Pin unterschiedlich 
verhalten, liegt an den Leckströmen und ist kein Bug.


Peter
Gast #2057757
Lesenswert?

Hi, Leute!
Also, ich habe jetzt ein 470 Ohm Pull-up nach SS (PB2) gelegt.
Der Fehler ist fast! weg.
Kommt nur noch selten vor.
Also vielen Dank an Alle, speziel an Peter!
Habe jetzt noch mal den alten m8 eingesetzt, und eine Weile lang 
beobachtet. Damit kommt der Fehler definitiv NICHT vor.
Was kann es denn noch sein?
Danke
Gruss Mike
Gast #2058402
Lesenswert?

>SS Pin auf Ausgang.
>Danach das SPI Modul initialisieren und gut iss.
So habe ich das auch gemacht.
Habe doch oben schon geschrieben.

>Also alten Mega8 und Pulldown?
Habe ich gerade probiert.
Alte und neue m8 senden trotz Pull-down.
Weil der pin eben vorher als Ausgang definiert ist.

Dann verstehe ich aber nicht, warum der Pull-up eine Besserung bringt?

Gruss Mike
#2058460
Lesenswert?

Mike schrieb:
> Hätte ich schon längst gemacht, aber ich habe die nicht. Ich meine die
> Schaltung existiert (noch) nicht "auf Papier"
> Gruss Mike

das ist normalerweise das erste was man macht.

Auch bei Lochraster kann man so doch das Layout wenigstens planen, dass 
möglichst wenig drähte verlötet werden müssen.

Außerdem reicht da auch nach Jahren ein Blick drauf und man sieht wie 
alles zusammenspielt, ohne irgendwelche Gehäuse zu öffnen und ewig 
verworrene Drähte durchzumessen.

Es Programmiert sich doch auch einfacher, wenn man auf einen Blick 
sieht, wo was dranhängt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren