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
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...
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)
@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
[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
Pete K. wrote:
> Ist JTAG disabled ?
laut seinen Fuses oben nicht
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
@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.
Markus Kuttke wrote:
>...
Evtl. auch mal auf der Ethersex-Mailing-Liste fragen?
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
[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
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
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...
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.
|