Forum: Mikrocontroller und Digitale Elektronik Ethersex, ATMega644, Fuses, Pollin NetIO etc.


von Markus K. (kuttke)


Lesenswert?

Hallo Experten,
ich habe folgendes Problem bei dem ich nicht so recht weiterkomme:
Ich habe ein Pollin NetIO. In diesem Board habe ich einen ATMega 644 
gesetzt und versuche Ethersex zu nutzen. Das ganze hat anfänglich (wenn 
auch seeehr langsam) funktioniert - bis ich gemerkt habe das der 
Prozessor mit internem Oszi und Teiler läuft (Defaulteinstellung).

OK - also den einen Fuse-Calculator aus dem Internet befragt und per
1
 avrdude -c ponyser  -v -P /dev/ttyS0 -p m644   -U lfuse:w:0xFF:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
die Fuses gesetzt.
In Make menuconfig von ethersex habe ich die Frequenz auf 16000000 
gesetzt, was in den Compileroptionen auch mit übernommen wird und den 
Prozessor neu geflasht. Das Ergebnis ist, dass ich den Prozessor zwar 
flashen kann (im NetIO-Board über den 10pol ISP-Port, der ext. Quarz 
funktioliert also) aber das Netzwerk funktioniert nicht.

Ach so: Wie durch die Option zu erkennen ist auf dem Pollin-Board ein 
16MHz Quarz verbaut der auch funktioniert (mit dem original 
ATMega32-Prozessor).
Der originale ursprünglich gelieferte Quarz (flache Bauform) war defekt 
(Programmieren ging nicht im NetIO-Board). Ich habe diesen durch einen 
mit hoher Bauform ausgetauscht.
(Btw: Gibt es einen Unterschied?)

Lasse ich den Proc auf 8MHz internen Takt laufen:
1
avrdude -c ponyser  -v -P /dev/ttyS0 -p m644   -U lfuse:w:0xe2:m -U hfuse:w:0x91:m -U efuse:w:0xff:m
,dann funktioniert auch das Netzwerk wieder. Mit ext. Quarz (16MHz) und 
Teiler-Fuse funktioniert es auch.

Das ganze wäre an sich nicht ganz so schlimm, wenn ich nicht versuchen 
würde, ein DS1820 anzuschließen-was nicht funktioniert. Ich habe das 
Gefühl, dass irgendwas mit den "_delays" nicht funktioniert. Und das 
deswegen das Timing mit 16MHz für den Netzwerkcontroller und sonst für 
den onewire-Bus nicht stimmt.
Da ich jetzt nicht mehr weiß, wo ich noch gucken und debuggen könnte 
brauche ich Eure Hilfe.

Vielen Dank im Voraus
Grüße
Markus

von Justus S. (jussa)


Lesenswert?

Markus Kuttke wrote:

> [c] avrdude -c ponyser  -v -P /dev/ttyS0 -p m644   -U lfuse:w:0xFF:m -U

> Ach so: Wie durch die Option zu erkennen ist auf dem Pollin-Board ein
> 16MHz Quarz verbaut der auch funktioniert (mit dem original
> ATMega32-Prozessor).

du stellst die Fuses für einen Quarzoszillator, hast aber nach eigenen 
Worten einen Quarz verbaut...

von Reinhard S. (rezz)


Lesenswert?

Markus Kuttke wrote:

> Das ganze wäre an sich nicht ganz so schlimm, wenn ich nicht versuchen
> würde, ein DS1820 anzuschließen-was nicht funktioniert. Ich habe das
> Gefühl, dass irgendwas mit den "_delays" nicht funktioniert.

Ich hoffe du hast die ethersex-Anleitung beherzigt:
http://ethersex.de/index.php/Dallas_1-wire_Bus (ganz unten)

von Markus K. (kuttke)


Lesenswert?

@jussa: Ja, du hast Recht. Im Datenblatt gibt es die Optionen:
7.3 Low Power Crystal Oscillator
7.4 Full Swing Crystal Oscillator
7.5 Low Frequency Crystal Oscillator
7.6 Calibrated Internal RC Oscillator
7.7 128 kHz Internal Oscillator
7.8 External Clock

7.5 bis 7.8 fallen aus. Also habe ich bestärkt durch das Bild "7-2. 
Crystal Oscillator Connections" (was irgendwie gleich zum 
NetIO-Schaltplan aussieht) die Option 7.3 gewählt. Wie müssen die Fuses 
nun richtig gesetzt sein?
Zu meinem Verständnis: Hätte ich die falsche Taktart/-quelle gewählt 
dürfte das ISP-Programmieren doch auch nicht mehr funktionieren. RS232 
habe ich nicht getestet, werde es aber nachholen...

@rezz
Nein habe ich nicht. Ich habe etwas Probleme mich auf der Ethersex-Seite 
zurechtzufinden. Naja wie auch immer... Wer lesen kann ist klar im 
Vorteil...

Grüße
Markus

von Markus K. (kuttke)


Lesenswert?

[Update] Mit 800ms gehts trotzdem nicht :-( Ich werde das ganze nochmal 
mit dem original PD6 (statt PC0) ausprobieren. Vielleicht ist dieser 
noch irgendwo "hardcoded".
Grüße
Markus

von Pete K. (pete77)


Lesenswert?

Ist JTAG disabled ?

von Justus S. (jussa)


Lesenswert?

Pete K. wrote:
> Ist JTAG disabled ?

laut seinen Fuses oben nicht

von Andreas V. (tico)


Lesenswert?

Markus Kuttke wrote:
> Ach so: Wie durch die Option zu erkennen ist auf dem Pollin-Board ein
> 16MHz Quarz verbaut der auch funktioniert (mit dem original
> ATMega32-Prozessor).
> Der originale ursprünglich gelieferte Quarz (flache Bauform) war defekt
> (Programmieren ging nicht im NetIO-Board). Ich habe diesen durch einen
> mit hoher Bauform ausgetauscht.
> (Btw: Gibt es einen Unterschied?)
>
> Lasse ich den Proc auf 8MHz internen Takt laufen:
1
avrdude -c ponyser
2
> -v -P /dev/ttyS0 -p m644   -U lfuse:w:0xe2:m -U hfuse:w:0x91:m -U
3
> efuse:w:0xff:m
,dann funktioniert auch das Netzwerk wieder. Mit ext.
> Quarz (16MHz) und Teiler-Fuse funktioniert es auch.

Ein defekter Quarz ist ungewöhnlich, und dass Dein Board offenbar nur 
mit halbem Takt funktioniert, lässt mich vermuten, dass mit Deiner 
Hardware etwas nicht stimmt.
Hast Du das Pollin-Board selbst zusammengelötet? Bist Du sicher, dass 
alles korrekt bestückt ist und nirgendwo Kurzschlüsse oder 
Unterbrechungen sind?

Gruss
Andreas

von Markus K. (kuttke)


Lesenswert?

@pete77,jussa: Das mit dem JTAG sollte doch egal sein, Die JTAG-Pins 
liegen doch auf PC2-PC7 und nicht auf PC0. Btw: Ich habe das JTAG 
disabled. es hat auch nichts gebracht.

@tico:Ich habe es selbst zusammengelötet.Kurzschlüsse kann ich glaube 
ich ausschließen. Prinzipiell läuft das Board ja mit dem 16MHz Quarz, 
nur dass ich die CKDIV8 Fuse setzen muss damit das Netzwerk klappt.
Mit dem Atmega32 und der original-Pollin-FW funktionierts mit dem 
externen Takt.
Ich vermute ja dass irgendwas mit der _delay-Funktion nicht so ganz 
hinhaut.

von Reinhard S. (rezz)


Lesenswert?

Markus Kuttke wrote:
>...

Evtl. auch mal auf der Ethersex-Mailing-Liste fragen?

von Andreas V. (tico)


Lesenswert?

Markus Kuttke wrote:
> Prinzipiell läuft das Board ja mit dem 16MHz Quarz,
> nur dass ich die CKDIV8 Fuse setzen muss damit das Netzwerk klappt.

Schau Dir mal die Funktion reset_controller() in der Datei enc28j60.c 
an:
1
#ifdef ENC28J60_REV5_WORKAROUND
2
    _delay_ms (2);
3
#else
4
    while (!(read_control_register(REG_ESTAT) & _BV(CLKRDY)));
5
#endif
Falls ENC28J60_REV5_WORKAROUND nicht definiert ist, solltest Du das tun 
und den Delay erheblich erhöhen (ich verwende 1 volle Sekunde). Manchmal 
ist auch ein zusätzliches langes Delay am Anfang der Funktion nötig, 
sonst kommt der ENC beim Power On nicht hoch.

Vielleicht hilft das.

Gruss
Andreas

von Markus K. (kuttke)


Lesenswert?

[Update]:DS 1820: Nachdem ich wieder den original-PIN (PD6) verwende und 
alles auf parasitäre Versorgung (der DS1820 sollte doch beides können?) 
umgelötet habe sowie den Link beherzigt habe, funktionierts. :-)
@tico: Die Option scheint standardmäßig über die config.h gesetzt zu 
sein. Ich habe die delay-Zeit ebenfalls auf 1000 gesetzt- aber es geht 
trotzdem nicht. Ich werde es mal auf der Ethersex-Mailingliste 
probieren.

Grüße
Markus

von Justus S. (jussa)


Lesenswert?

Markus Kuttke wrote:
> @pete77,jussa: Das mit dem JTAG sollte doch egal sein, Die JTAG-Pins
> liegen doch auf PC2-PC7 und nicht auf PC0. Btw: Ich habe das JTAG
> disabled. es hat auch nichts gebracht.

mein Posting war als Antwort auf pete77 gedacht

von Florian F. (ultrazauberer)


Lesenswert?

Ich muss mal die Threadleiche schänden...

Ich habe ebenfalls den Net IO und mit der Pollin Firmware kann ich über 
RS232 alles auslesen.
Jetzt habe ich einen ATmega644 richtig herum aufgesteckt und mittels AVR 
Brenner und der USB AVR Lab Usbasp Firmware die Fuse Bits gesetzt (unter 
anderem low : 0xE7 und diverse andere).
Danach habe ich eine Firmware erstellt und versucht möglichst alles 
Standard zu lassen. Controller wurde auf ATMega644 und 16 MHz gestellt. 
2 Wire LCD hab ich deaktiviert, da es zu nen Compilerfehler kommt.
Danach mittels AVR Brenner geflasht, Jumper von Prog auf Normal und vom 
Strom getrennt. Danach wieder Strom dran, bekomme aber weder über 
Netzwerk noch RS232 ein Lebenszeichen.
Hat jemand eine Idee? IP Adresse und Gateway und Netmask hab ich 
eingestellt in der Firmware und auch diverse Fuses probiert. Ich komme 
nicht weiter...

von Florian F. (ultrazauberer)


Lesenswert?

So, funktioniert jetzt einwandfrei.

Ich habe die LiveCD verworfen und eine neue VMWare mit ubuntu 11.10 
aufgesetzt und alles händisch installiert.

Danach die ethersex.hex compiliert und unter Win7 x64 mittels 
AVR-Brenner (AVRDude) geflasht und die Fuses auf low: 0xFF high: 0xD8 
und Ext: 0xFF gesetzt.

Ich denke mein Fehler war, dass ich das ISP Kabel beim Testen stecken 
gelassen habe. Nach dem Flashen das ISP Kabel entfernen und danach den 
Net-IO vom Strom trennen. Netzwerkkabel hat die ganze Zeit gesteckt. 
Nach dem Reboot ging der Net-IO zu pingen und der Webserver war zu 
erreichen. ;-)

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.