Hallo! Ich suche einen einfachen Programmer, zum selber bauen, für EEproms (93c66) hat wer eine Idee? danke! clark
Hihi sowas hab ich gerade vor 3 Wochen erst gebaut. Was willst Du denn wissen? Vielleicht kann ich Dir ein paar Fragen beantworten. Mein komplettes Projekt kann ich leider nicht offenlegen weil es geschützte Daten enthält die nicht mir gehören und auch kein PC-Interface hat.
Ich im 93c66 Daten auslesen, ändern und wieder schreiben. Also ganz ganz einfach.. PonyProg geht leider unter Win7 nicht.. danke!
Hier haste die EEPROM-Routinen die ich einsetze, sollten für den 93C56 und 93C66 im Word-Mode (16bit) funktionieren. Sind quick'n'dirty-Varianten, Hauptsache funktioniert und ohne Optimierungen - für die paar Byte schnell genug. Der µC ist bei mir ein Atmega644 - was kleineres mit ausreichender Anzahl Pins war nicht da. (Das Ding beinhaltet ja ein Tastenfeld und ein LCD-Display, damit es ohne PC auskommt.) Die Delays kannste Dir auch selber bauen, das Flag EWENExecuted brauchste nicht wenn Du nicht viel schreibst. Portbelegung: PB0: CS PB1: SK PB2: DI PB3: DO EEPROM_EraseCommand: ;sends the ERASE Command to the EEPROM rcall SendEWEN push r16 sbi PortB,0 ;CS on ldi r16,1 rcall SendBit ldi r16,0 rcall SendBit rcall SendBit ldi r16,1 rcall SendBit ldi r16,0 rcall SendBit rcall SendBit rcall SendBit rcall SendBit rcall SendBit rcall SendBit rcall SendBit cbi PortB,0 ;CS off rcall delay100ms ;wait for the EEPROM to become ready again rcall delay100ms pop r16 ret Write_EEPROM_Block: ;write 16 bit (2 byte) into EEPROM ;R20: block number push r16 ;R16: first data byte push r17 ;R17: second data byte push r18 push r20 rcall SendEWEN sbi PortB,0 ;CS on push r16 ldi r16,1 rcall SendBit ldi r16,0 rcall SendBit ldi r16,1 rcall SendBit ;OpCode sent ldi r18,8 ;send adress WEB_a1: rol r20 brcs WEB_a2 ldi r16,0 rjmp WEB_a3 WEB_a2: ldi r16,1 WEB_a3: rcall SendBit dec r18 brne WEB_a1 pop r16 ldi r18,8 ;send data byte 1 mov r20,r16 WEB_b11: rol r20 brcs WEB_b12 ldi r16,0 rjmp WEB_b13 WEB_b12: ldi r16,1 WEB_b13: rcall SendBit dec r18 brne WEB_b11 ldi r18,8 ;send data byte 2 WEB_b21: rol r17 brcs WEB_b22 ldi r16,0 rjmp WEB_b23 WEB_b22: ldi r16,1 WEB_b23: rcall SendBit dec r18 brne WEB_b21 cbi PortB,0 ;CS off rcall delay20ms; wait for the EEPROM become ready after write pop r20 pop r18 pop r17 pop r16 ret Read_EEPROM_Block: ;read 16 bit (2 byte) from EEPROM ;block number contained in R20 push r20 ;Output in R16 and R17 push r18 ;(0xR16R17h) sbi PortB,0 ;CS on ldi r16,1 rcall SendBit rcall SendBit ldi r16,0 rcall SendBit ldi r17,8 REBSend1: rol r20 brcs REBSendB1 ldi r16,0 rjmp REBSendBx REBSendB1:ldi r16,1 REBSendBx:rcall SendBit dec r17 brne REBSend1 rcall shortdelay ;command sent, get result ldi r17,0 ldi r18,8 REBGetB1: rcall ReadBit ror r16 rol r17 dec r18 brne REBGetB1 push r17 ldi r17,0 ldi r18,8 REBGetB2: rcall ReadBit ror r16 rol r17 dec r18 brne REBGetB2 cbi PortB,0 ;CS off rcall shortdelay pop r16 pop r18 pop r20 ret SendBit: cpi r16,0 ;Send a Bit, 0 when R16 is 0 breq SendBit0 SendBit1: sbi PortB,2 ;DI on rjmp SendBitX SendBit0: cbi PortB,2 ;DI off SendBitX: rcall shortdelay sbi PortB,1 ;SK on rcall shortdelay cbi PortB,1 ;SK off cbi PortB,2 ;DI off ret ReadBit: sbi PortB,1 ;SK on ;Read Bit, result in R16 rcall shortdelay in r16,PinB cbi PortB,1 ;SK off rcall shortdelay andi r16,0b00001000 cpi r16,0 breq ReadBit0 ldi r16,1 ReadBit0: ret SendEWEN: push r16 ;Send EWEN to the EEPROM lds r16,EWENExecuted cpi r16,1 breq SendEWENx sbi PortB,0 ;CS on ldi r16,1 rcall SendBit ldi r16,0 rcall SendBit rcall SendBit ldi r16,1 rcall SendBit rcall SendBit ldi r16,0 rcall SendBit rcall SendBit rcall SendBit rcall SendBit rcall SendBit rcall SendBit cbi PortB,0 ;CS off rcall shortdelay ldi r16,1 sts EWENExecuted,r16 SendEWENx:pop r16 ret (Forensoftware crasht leider die Formatierung... Sorry.)
@ben Danke werd ich morgen gleich mal testen :) melde mich wieder .... Clark
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.