Pages: [1]   Go Down
Author Topic: rs485 tra attiny85 e 328p  (Read 379 times)
0 Members and 1 Guest are viewing this topic.
Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 636
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti!
..allora ieri finalmente ho iniziato (ma ho pochissimo tempo..) a programmare l'attiny85 che sta su una schedina per un mio progetto. Per info, sulla schedina ci sono due ampli INA128 per il segnale di 2 celle di carico, le uscite vanno dentro A2 e A3 dell'ATtiny85 che spedisce la lettura tramite RS485 (sto usando un 75176) ad un 328P, anch'esso in standalone..
L'attiny85 è senza il quarzo, quindi lo faccio andare a 8MHz. per prima cosa quindi gli ho messo su un lampeggio con delay(1000), e ho subito notato che non è perfettamente un secondo, ma poco meno. diciamo che dopo 5 secondi si comincia a vedere l'anticipo del lampeggio.. secondo voi è normale? è l'oscillatore interno che non è preciso?
quando poi spedisco dei dati in RS485, secondo voi avrò problemi di timing con la ricezione dal 328P? dovrò usare anche quello ad 8MHz interni? inoltre questo 328P dovrà comunicare in seriale via USB (con un convertitore USB-Seriale..) ci saranno poi altri problemi con la velocità della sua seriale e quella del pc?

Grazie, qualsiasi suggerimento è straaccettato..

dab.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21607
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'attiny85 è senza il quarzo, quindi lo faccio andare a 8MHz. per prima cosa quindi gli ho messo su un lampeggio con delay(1000), e ho subito notato che non è perfettamente un secondo, ma poco meno. diciamo che dopo 5 secondi si comincia a vedere l'anticipo del lampeggio.. secondo voi è normale? è l'oscillatore interno che non è preciso?
E' normale, gli oscillatori interni arrivano ad uno scarto dalla frequenza nominale anche molto alto (+-20/30%).

Quote
quando poi spedisco dei dati in RS485, secondo voi avrò problemi di timing con la ricezione dal 328P? dovrò usare anche quello ad 8MHz interni? inoltre questo 328P dovrà comunicare in seriale via USB (con un convertitore USB-Seriale..) ci saranno poi altri problemi con la velocità della sua seriale e quella del pc?
La connessione seriale ha una sua velocità. Basta che imposti gli stessi baud sul sistema che trasmette e su quello che riceve, l'importante è che sia una velocità ammessa per entrambi i chip. Mi spiego: non potrai mai usare 57600 baud su un micro a 1 MHz, gli errori sarebbero troppi.
Questo può aiutarti a trovare una velocità supportata senza problemi da entrambi i dispositivi.
http://www.wormfood.net/avrbaudcalc.php
Logged


Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 636
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

però scusa, magari dico qualche fesseria, ma i baud sono comunque calcolati sul timer interno, e se questo 'pulsa' diverso dal ricevente, i due anche se settati entrambi a 9600 baud, in realtà potrebbero andare a velocità diverse?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21607
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I timing della seriale sono calcolati indipendentemente dal clock. Se metti 9600 bps, sono 9600 bps sia per il micro a 1 MHz che per quello a 8 che per quello a 16.
La comunicazione seriale ha una sua tollerenza, finché rientri nei valori minimi e massimi non hai problemi.
Logged


Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 636
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I timing della seriale sono calcolati indipendentemente dal clock. Se metti 9600 bps, sono 9600 bps sia per il micro a 1 MHz che per quello a 8 che per quello a 16.
La comunicazione seriale ha una sua tollerenza, finché rientri nei valori minimi e massimi non hai problemi.

cioè mi dici che i bps non sono "temporizzati" sull'oscillatore? e su cosa? perchè se mi dici che ci può stare una variazione su ogni chip di tempo di oscillazione interna di +-20/30%, allora io intuisco che anche i bps derivati variano da chip a chip del 20/30%, o sbaglio?
..e se è così, con errori del 15% se setto entrambi a 9600bps, potrei avere un attiny che trasmette a 8160 e un 328P che riceve a (mumble,mumble..) 11040bps?

Dove sbaglio?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21607
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Voglio dire che la base dei calcoli sui tempi è il clock ma è come ottenere 1 secondo con il delay(1000): esso funziona sia su micro a 1 MHz che a 16 MHz. Cioè i 9600 sono sempre 9600 bps, anche su micro a frequenze differenti.
Poi ti parlo per esperienza diretta, ho fatto dialogare via seriale e via I2C un Tiny85 a 1MHz ed un Arduino a 16 MHz. E considera che sia la seriale che l'I2C sul Tiny85 vanno in software. Ed anche 2 Tiny85 via RS485. Quindi le tolleranze ci sono ma non è detto che siano quelle massime che ti mandano alle ortiche tutto, sarebbe una sfiga assurda  smiley-sweat
Logged


Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 636
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Voglio dire che la base dei calcoli sui tempi è il clock ma è come ottenere 1 secondo con il delay(1000): esso funziona sia su micro a 1 MHz che a 16 MHz. Cioè i 9600 sono sempre 9600 bps, anche su micro a frequenze differenti.
Poi ti parlo per esperienza diretta, ho fatto dialogare via seriale e via I2C un Tiny85 a 1MHz ed un Arduino a 16 MHz. E considera che sia la seriale che l'I2C sul Tiny85 vanno in software. Ed anche 2 Tiny85 via RS485. Quindi le tolleranze ci sono ma non è detto che siano quelle massime che ti mandano alle ortiche tutto, sarebbe una sfiga assurda  smiley-sweat

Ok, grazie!
Logged

Pages: [1]   Go Up
Jump to: