Ik heb enkele vragen over een onderdeel van mijn eindwerk.
Ik moet een brandcentrale uitlezen.
Deze zend een RS485 signaal: 9600bps, 8 bits,no parity,1 stopbit. De boodschappen zijn 16 of 68 bytes + start en stopbyte. Om de minuut wordt de tijd doorgezonden, (16 bytes) deze boodschap ga ik negeren.
Er moeten ook +-18 magneetcontacten, die zich in de deuren bevinden, uitgelezen worden. De info moet naar een pc gezonden worden, die de toestand dan grafisch weergeeft.
Mijn oplossing:
een MAX485 tussen de brandcentrale en een AVR, de magneetcontacten aan de inputs van de avr en de info via MAX232 asynchroon naar een pc zenden.
vb van de werking:
De brandcentrale zend plots een bericht van 68 bytes. Dit moet dus een interrupt veroorzaken waar de avr zo snel mogelijk op reageert en de 68 bytes opslaat. Er kunnen meerdere boodschappen na elkaar komen dus er moet toch wat geheugen zijn.
Als er geen interrupts zijn zal de avr de info naar de pc zenden en de ingangen pollen om de stand van de deuren te controleren. Als deze verandert zijn dan moet dat doorgezonden worden.
Voor de communicatie met de pc dacht ik eraan om de pc softwarematig te laten bevestigen dat de info toegekomen is, als het verzenden naar de pc onderbroken werd door een interupt van het alarm dan zal de pc de info opnieuw vragen.
Vragen:
Ik wil een ATMEGA162 gebruiken omdat deze 2 UART's en veel I/O pinnen heeft en ik kan hem gemakkelijk krijgen. Heeft deze avr genoeg geheugen en zal dit werken?
In welk geheugen komen de boodschappen van 68 bytes? In de SRAM van 1024 bytes?
Ik ben een beginner met avr's en ik weet niet goed waarvoor het geheugen dient. Ik denk dat in het flash geheugen mijn programma komt en in de SRAM de ontvangen info maar wat komt er in de EEPROM?
Ik programmeer in C (of toch ASM?). Hoe weet ik of de avr snel genoeg zal reageren op de RS485 interrupts? Kan ik de minimum kloksnelheid uitrekenen? Dan moet ik weten hoeveel klokcyclussen de avr nodig heeft voor hij begint met het detecteren van de startbyte.
Alle tips zijn welkom, compleet andere voorstellen zijn dus ook welkom!
Alvast bedankt voor het lezen!