0
Online
Faraday Member
Karma: 17
Posts: 3909
Arduino rocks
|
 |
« Reply #360 on: November 29, 2012, 09:33:19 am » |
logicamente se non usi il clear devi sovrascrivere tutte le celle di memoria dell'LCD, se ad esempio hai scritto pippolino, e dopo devi scrivere solo pippo, devi aggiungere alla matrice spazi vuoti per cancellare "lino"
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #361 on: November 29, 2012, 10:15:31 am » |
(slightly-OT) Mi viene in mente che usando un buffer più ampio rispetto alla dimensione del display (ad esempio 40 colonne x 2 righe) e parametrizzando la routine di refresh con la colonna di partenza, si possono generare facilmente delle animazioni. Ad esmpio testo scorrevole. Il codice "applicativo" si comporta come se il display avesse 40 colonne anziché 16. La routine di refresh del display parte dalla colonne impostata (chiamiamola currRefreshCol) per copiare i 16x2 caratteri sul display fisico. Variando currRefreshCol, ad esempio con un'azione temporizzata, si ha che il testo sembra scorrere sull'lcd.
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Faraday Member
Karma: 17
Posts: 3909
Arduino rocks
|
 |
« Reply #362 on: November 29, 2012, 11:46:38 am » |
la funzione scorrimento e' integrata gia' nella libreria se non si vogliono fare cose complicate
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Full Member
Karma: 0
Posts: 109
Arduino rocks
|
 |
« Reply #363 on: November 30, 2012, 08:21:16 am » |
ho provato a fare un buffer con un array char bidimensionale, ma non riesco a stamparlo sul display con print() o write() se invece faccio due buffer uno per riga li riesco a stampare
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #364 on: November 30, 2012, 08:37:30 am » |
(Secondo me stiamo andando un po' troppo OT. Propongo di aprire un altro topic che tratti specificamente del tema buffer <=> lcd.)
Detto ciò, cmq rispondo: posta il codice che hai scritto. Io ho uno sketch di prova che implementa un "virtual screen" più grande dell'LCD fisico. Include anche una funzione che copia un buffer bidimensionale sull'lcd.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #365 on: December 09, 2012, 06:46:10 pm » |
Arriva leOS2 2.1.0. Questa è la prima versione stabile del leOS2. Ho corretto un bug per cui non veniva rispettato il valore di timeout passato in fase di inizializzazione prima di resettare il microcontrollore: nella precedente 2.0.91 il reset avveniva immediatamente, indipendentemente dal valore passato, mentre adesso viene rispettato perfettamente. Lo sketch di test mostra il comportamento di questa funzione a mio avviso molto interessante: creo 2 task, 1 che fa lampeggiare un led con una frequenza di 500 ms, un altro task invece viene lanciato dopo 5 secondi e freeza la CPU del micro con un ciclo infinito. Nel loop() metto un lampeggio di un altro led con frequenza di 100 ms. Si può notare come dopo 5 secondi di attività, il micro si congeli. Trascorso il tempo di timeout impostato, l'Atmega viene resettato. Tutto questo usando sempre il solo WatchDog, quindi niente timer od altro messi nel mezzo. Ricordo che la cosa è possibile creando una ISR di gestione dell'interrupt del contatore del watchdog non atomica, quindi interrompibile da altri eventi. In questo modo posso invocare un task e contemporaneamente richiamare la ISR al successivo overflow del contatore del watchdog e decrementare il valore di timeout. Se il task completa l'esecuzione entro il tempo di timeout, l'esecuzione del codice prosegue regolarmente, altrimenti l'ISR continua a decrementare il timeout. Se questo giunge a 0, viene impostato un flag per cui al successivo overflow del watchdog non venga più sollevato un interrupt ma venga resettato direttamente il microcontrollore. Per il download ed ulteriori approfondimenti: www.leonardomiliani.com/?p=516
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #366 on: December 10, 2012, 11:43:30 am » |
Veramente notevole
O_o
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 6
Posts: 462
|
 |
« Reply #367 on: December 10, 2012, 11:50:29 am » |
son stato assente per molto tempo,cmq bravo,ottimo lavoro!!  quando porterai i tuoi progetti su github?! 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #368 on: December 10, 2012, 01:59:11 pm » |
Veramente notevole
O_o
Grazie. 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #369 on: December 10, 2012, 02:03:37 pm » |
son stato assente per molto tempo,cmq bravo,ottimo lavoro!!  quando porterai i tuoi progetti su github?!  Ci sarebbero di già ma per ora pubblicizzo solo il download dal mio sito, altrimenti non riesco a seguire tutto. https://github.com/leomil72PS: su github non c'è ancora la versione 2.1.0, la metterò online domani (ora non sono a casa).
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 3000
|
 |
« Reply #370 on: December 12, 2012, 04:02:01 am » |
Ti segnalo questa nuova libreria --> https://github.com/chrismoos/avr-os
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8187
:(){:|:&};:
|
 |
« Reply #371 on: December 12, 2012, 04:29:20 am » |
io invece ti segnalo il fatto che gli IDE più recenti hanno un "autoimportatore" di librerie, tu gli dai il path o l'url di un file zip e lui ti copia e scompatta il tutto nella cartella Libraries. Non l'ho provato, l'ho letto di sfuggita su un issue di github. In pratica ricordi che girò un link che puntava a raccogliere tutte le librerie? probabilmente hanno intenzione di automatizzare il tutto 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #372 on: December 12, 2012, 05:19:05 am » |
Non è uno scheduler completamente automatizzato, mi pare. Va chiamato continuamente dal loop, ed il controllo è fatto su millis. Inoltre non ho capito bene cosa intenda per each task has its own stack that is restored when a task is resumed A me pare che salvi solo il puntatore allo stack, non salva lo stato del microcontrollore. Potrei sbagliarmi. Non so però la logica esatta di come funziona, non ho studiato il codice.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 6
Posts: 462
|
 |
« Reply #373 on: December 12, 2012, 09:47:51 am » |
mah,dal context.h direi che salva tutto da r0 a r31..i vari stati penso siano in sti registri..
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #374 on: December 12, 2012, 09:54:31 am » |
mah,dal context.h direi che salva tutto da r0 a r31..i vari stati penso siano in sti registri..
Non l'avevo visto. Comunque mi sembra che sia un repetita dato che usando la libreria interrupt.h di Avr quest'operazione dovrebbe essere eseguita dalla libreria stessa. Però non vorrei dire castronerie.
|
|
|
|
|
Logged
|
|
|
|
|
|