ATM90E26 geeft geen antwoord op UART

Beste allemaal,

Het project in het kort: ik wil een energiemeter bouwen, hiervoor heb ik de ATM90E26 gevonden die perfect voldoet aan al mijn wensen, alle informatie die ik wil hebben kan ik direct uit de register lezen en via PIC of raspberry uitlezen, loggen en gebruiken voor andere projecten.

Het probleem: Ik heb de chip op een printje TSSOP28-dip(ish) converter gesoldeerd zodat ik die op een breadboard kan prikken. Momenteel probeer ik nog niks te meten, dus het grootste deel van het circuit is niet interessant. Het enige verschil met het schema en de (huidige) werkelijkheid is dat USEL momenteel aan VDD hangt dit selecteert de UART modus (ipv SPI) en de pullupweerstand aan de TX van de chip. Hierdoor kan ik met een usb-ttl convertertje even kan uitproberen hoe de chip precies werkt en of dat is zoals ik het wil.

Ik kan weliswaar bytes sturen richting de chip maar ik krijg geen enkele reactie. Ook kijkend op een scope zie ik de bytes naar de chip gaan, en de scope decodeert het prima. Maar op de TX van de chip gebeurt vervolgens niks.

Ik probeer momenteel alleen maar adres 31H uit te lezen omdat ik weet wat daar de power-on value van is (6720H). Als ik dat terug zou krijgen weet ik dat de communicatie in elk geval werkt. Maar ik krijg dus helemaal niks. Checksum is voor mij nieuw, maar voor een adres lezen is het simpelweg het adres dat gelezen wordt. Dus ik kom uit op:

0xFE 0xB1 0x31

Als ik t.o.v GND meet kan ik op beide pinnen van het kristal een 8.18mhz sinus(achtige) golf meten. Als ik op beide pinnen meet verdwijnt deze maar ik denk dat dat de capaciteit op de draden van de scope is die de boel verstoort... Dus volgens mij krijg de chip wel een klok.

Op de pin "ZX" (zerro corssing) krijg ik pulsen die redelijk overeenkomen met de verwachtingen. Dus tenzij dat hardwarematig in de chip zit lijkt de chip ook wel te werken. Alleen de UART weigert dus te reageren...

Ik hoop heel erg dat het antwoord iets word als "ja sukkel, je ziet dit of dat over het hoofd".... Maar ik zie het even nietmeer.

Alvast bedankt!

Daan Steeman

Ik zou eens proberen met : 0xFE 0xB1 0xB1

Datasheet zegt dat checksum voor een read is RW_Address, dus het 2e byte inclusief R/W bit.

Baudrate moet 2400 of 9600 zijn, 8-bit, geen parity.

Wauw..... daarom is een verse blik dus wel even handig. Dat was het inderdaad.... Ik had het geinterpreteerd als R/W bit en dan het adres. En als checksum alleen het adres....

Hartstikke bedankt!

Heb ik ook wel eens. Soms kun je 10 keer kijken en 10 x dezelfde denkfout maken :)

Dan helpt een verse blik inderdaad.