Programering av microkontroller

Oddvar Demmo

Norbrygg-medlem
Er det noen her som påtar seg programering.
Antar det ikke er noe stort program, saken er at jeg har en NAU7802 adc som jeg vil skal streame via I2C til en Atmel Attiny1213.
Selv kan jeg bare BascomBasic men en Hex fil er OK når jeg oppgir mere detaljer
Databladet ser litt for komplisert ut for meg, ellers har jeg bare kopiert koder fra nettet men angående nau7802 finner jeg ikke noe.
http://www.nuhorizons.com/FeaturedProducts/products.asp?id=244
 
Jeg har ingen anelse om hva du skrev nå, men det hørtes kult ut!! Hva skaø du styre eller hva gjør dette?  Hehe
 
ADCen skal måle motstanden  på vektcellene som skal sendes til en ATtiny 2313 som igjen sender via Uarten til en PC.

Det er å få AVRen til å sette NAUen i streaming mode og å sette forsterkningen (som jeg må kunne variere for å prøve den rette) for deretter å sende på Uarten med 9600,8,ingen,1

Nå bruker jeg en Mega8 og et slevlaget VB program til å styre bryggeriet/gjæringsrom sammen med DS18s20 så det er ikke det at jeg er helt grønn men denne NAU7802 samt I2C ble en brå overgang .
 
Heisann,

Denne "nau7802" ser ut som en forholdvis standard i2c ADC.

Kva nøyaktig er det du ikkje får til? Har du i2c og uart oppe og går på AVRen?


Tar nok ikkje på meg heile jobben, men du må gjerne spørre hvis du lurer.


LT
 
larstore skrev:
Heisann,

Denne "nau7802" ser ut som en forholdvis standard i2c ADC.

Kva nøyaktig er det du ikkje får til? Har du i2c og uart oppe og går på AVRen?


Tar nok ikkje på meg heile jobben, men du må gjerne spørre hvis du lurer.


LT

Problemet er at jeg ikke har peiling på !2C og at I2C ser gresk ut. Når det gjelder DS18S20 så fungerte copy and paste godt :)
Uarten er heller ikke problem.
Det jeg trenger er at AVR setter NAU i streaming mode, setter forsterkning som jeg kanskje må forandre på og AVR tar imot og lagrer verdiene fra NAU i en variabel.
SAnding videre til neste AVR og så til PC er enkelt.

Jeg har bare ikke lært meg om register og masse annet, jeg er selvlært på det lille jeg kan om dette.

Takk for interessen.
 
Litt usikker på kvar eg skal begynne..

Du kjenner jo til UART, der du har kun datasignal og begge parter må kjenne overføringsraten for å forstå kva data som blir sendt.
I2C er en synkron (både klokke og datasignal) master-slave kobling der master (i ditt tilfelle AVRen) alltid driver en klokke som slave bruker for å synkronisere overføringen.

Det første du må få til er å aktivere I2C på AVRen din. Dersom du skriver i C så kan du sannsynlegvis bruke det som er beskrevet her direkte (det er nok uansett lett å "overføre" til andre programmeringspråk)
http://atmega32-avr.com/i2c-bus-for-attiny-and-atmega168/
I2C kommunikasjon foregår som regel ved at master skriver en 2-3 bytes verdi (som oftest adresse til slave + intern registeradresse som skal leses) og etter dette fortsetter å styre klokkelinja mens datalinja leses så mange bytes som du vil motta.
Hvis du ser i NAU7802 databladet på side 15 (http://www.chipcad.hu/letoltes/NAU7802.pdf) så ser du oversikt over skrive og lesekommandoer.

Vanlig skrivekommando er det 3 bytes som skal sendes. Først adresse til slave, så registeradresse, til slutt data som skal skrives til det registeret.
Ta ditt eksempel med "streaming mode" så står det på side 17 at du først skal sende "power up" ved å skrive bit 1 og 2 i register 0 lik 1. Dvs 00000110 (sjekk side 28 for info om de andre bits i samme register)
På side 15 står det "The NAU87802 is permanently programmed with “010 1010” (0x2A) as the Device Address." Denne adressa er berre 7 bit. Det siste bitet er brukt til Read/Write (Write=0)
Adresse byte blir da 010 1010 0 eller, 0x54

Dvs, en komplett skriving blir
0x54 0x00 0x06


Dersom du vil lese samme register så endrer du bit 0 i adressebyte til 1, også lar du klokka gå X antall bytes du vil lese etter at skriveoperasjon er fullført (veldig enkelt forklart. Les om start, stop, ack osv i linken over)


Prøv litt, og send meg gjerne koden din på mail dersom du har problemer så skal eg sjå om eg kan hjelpe deg videre

LT
 
Tilbake
Topp