Atmega8L und Atmel ATZB-24-A2

OP #1826122
Lesenswert?

Hallo!
Ich versuche mich gerade an Atmels's ATZB-24-A2 zigbee... Eigentlich 
funktioniert alles wunderbar, die modulen sind echt klasse.

Fuer meine applikation habe ich mich entschlossen in mein design ein 
Atmega8L als steuerung zu verwenden, und die firmware serialnet. Das hat 
auch soweit alles geklappt, aber jetzt moechte ich die geraetschaften 
synchron bekommen. Der Atmega ist nach reset sofort verfuegbar, das 
zigbee modul braucht seine weile bis es "ready" ist. Jetzt habe ich mir 
gedacht, nutze vom Zigbee modul das DTR um den uC zu ermitteln das das 
modul fertig ist. ALso DTR an ein eingangspin und ab dafuer.

Jetzt kommt mein problem. Wenn ich mein oscilloscoop an den DTR vom 
modul haenge (der an pin PD3 vom atmega haengt), laeuft alles wunderbar. 
Die software aufm atmega wartet brauf bis DTR hoch geht. Dauert irgendwo 
zwischen 3 und 5 secunden. Alles paletti. Wenn ich mein osci von den pin 
entferne, verhaelt sich die software vom atmega anders. Nach ungef. 250 
millisecs ermittelt er bereits ein high an DTR und sagt ich bin soweit. 
Kan es sein das durch unterschiedliche belastung das DTR signal an der 
zigbee seite sich von alleine nach oben schwingt? Ich meine, dummes 
problem, weil wenn ich es versuche zu messen, funktioniert ja alles 
wunderbar :-))) Hilfe benoetigt hier grins...

Achso, der pullup wiederstand von PD3 ist aus, und ja, der port ist als 
eingang konfiguriert seitens den Atmega...
OP #1826172
Lesenswert?

ich moechte die serialnet firmware nutzen. ich habe mir das ueberlegt 
mit der 1281 weil das schon eine tolle sache ist mit dem integrierten 
kontroler. aber ich mache erst mal gehversuche mit dem modul, bevor ich 
an ein marathon anfange :-) das mit dem DTR hat sich auch lustig 
weiterentwickelt. Mit scoop nochmals ueberprueft: pin bleibt nach 
anschliessen von wiederstand zu masse 5 secunden unten. Laut software 
atmega aber kommt sie nicht hoch. wenn ich es nachmesse stimmt es aber.

mein code in C:

DDRD = 0x00;
PORTD = 0x00;

Ich nutze sonst keine pins auf D, daher einfach alles 0.
dan pruefe ich PD3 in eine loop:

while( 1 )
  {
    length = sprintf( txt, "%x", PIND );
    send_text( txt, length );

    _delay_ms( 250 );
  }

send_text schickt text an mein pc ueber UART / FT232 USB als virtueller 
PORT. Die werte die ich reinbekomme:

nach reset   : 0x01
nach 100msecs: 0x03

die werte bleiben jetzt gleich mit oder ohne scoop nach anloeten von 
R=10K um das tristate problem zu loesen. Aber PIND bekommt nummer 3 
(PD3) nie als hoch...
OP #1826203
Lesenswert?

wer lesen kan ist klar im vorteil. oh boy.das erklaert ne menge :-)
ich habe inzwischen eine andere loesung fuer mein problem. Das zigbee 
modul quittiert ueber sein uart mit "OK" wenn es soweit ist. Da ich 
inzwischen meine RX interrupts auf mein Atmega8 fertif habe, warte ich 
softwaremaessig auf ein "OK" und dan kanns los gehen :-)

Trotzdem vielen dank fuer alle eure tips und hilfe. Wenn man zulange an 
ein problem werkelt sieht man durch den walt die baeume manchmal nicht 
mehr!

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